org.apache.tika.detect
Class NameDetector

java.lang.Object
  extended by org.apache.tika.detect.NameDetector
All Implemented Interfaces:
java.io.Serializable, Detector

public class NameDetector
extends java.lang.Object
implements Detector

Content type detection based on the resource name. An instance of this class contains a set of regular expression patterns that are matched against the resource name potentially given as a part of the input metadata.

If a pattern matches the given name, then the media type associated with that pattern is returned as the likely content type of the input document. Otherwise the returned type is application/octet-stream.

See the detect(InputStream, Metadata) method for more details of the matching algorithm.

Since:
Apache Tika 0.3
See Also:
Serialized Form

Constructor Summary
NameDetector(java.util.Map<java.util.regex.Pattern,MediaType> patterns)
          Creates a new content type detector based on the given name patterns.
 
Method Summary
 MediaType detect(java.io.InputStream input, Metadata metadata)
          Detects the content type of an input document based on the document name given in the input metadata.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

NameDetector

public NameDetector(java.util.Map<java.util.regex.Pattern,MediaType> patterns)
Creates a new content type detector based on the given name patterns. The given pattern map is not copied, so the caller may update the mappings even after this detector instance has been created. However, the map must not be concurrently modified while this instance is used for type detection.

Parameters:
patterns - map from name patterns to corresponding media types
Method Detail

detect

public MediaType detect(java.io.InputStream input,
                        Metadata metadata)
Detects the content type of an input document based on the document name given in the input metadata. The RESOURCE_NAME_KEY attribute of the given input metadata is expected to contain the name (normally a file name or a URL) of the input document.

If a resource name is given, then it is first processed as follows.

  1. Potential URL query (?...) and fragment identifier (#...) parts are removed from the end of the resource name.
  2. Potential leading path elements (up to the last slash or backslash) are removed from the beginning of the resource name.
  3. Potential URL encodings (%nn, in UTF-8) are decoded.
  4. Any leading and trailing whitespace is removed.

The resulting name string (if any) is then matched in sequence against all the configured name patterns. If a match is found, then the (first) matching media type is returned.

Specified by:
detect in interface Detector
Parameters:
input - ignored
metadata - input metadata, possibly with a RESOURCE_NAME_KEY value
Returns:
detected media type, or application/octet-stream


Copyright © 2007-2010 The Apache Software Foundation. All Rights Reserved.