org.springframework.mail.javamail
Class ConfigurableMimeFileTypeMap

java.lang.Object
  extended by javax.activation.FileTypeMap
      extended by org.springframework.mail.javamail.ConfigurableMimeFileTypeMap
All Implemented Interfaces:
InitializingBean

public class ConfigurableMimeFileTypeMap
extends javax.activation.FileTypeMap
implements InitializingBean

Spring-configurable FileTypeMap implementation that will read MIME type to file extension mappings from a standard JavaMail MIME type mapping file, using a standard MimetypesFileTypeMap underneath.

The mapping file should be in the following format, as specified by the Java Activation Framework:

 # map text/html to .htm and .html files
 text/html  html htm HTML HTM
Lines starting with # are treated as comments and are ignored. All other lines are treated as mappings. Each mapping line should contain the MIME type as the first entry and then each file extension to map to that MIME type as subsequent entries. Each entry is separated by spaces or tabs.

By default, the mappings in the mime.types file located in the same package as this class are used, which cover many common file extensions (in contrast to the out-of-the-box mappings in activation.jar). This can be overridden using the mappingLocation property.

Additional mappings can be added via the mappings bean property, as lines that follow the mime.types file format.

Since:
1.2
Author:
Rob Harrop, Juergen Hoeller
See Also:
setMappingLocation(org.springframework.core.io.Resource), setMappings(java.lang.String[]), MimetypesFileTypeMap

Field Summary
private  javax.activation.FileTypeMap fileTypeMap
          The delegate FileTypeMap, compiled from the mappings in the mapping file and the entries in the mappings property.
private  Resource mappingLocation
          The Resource to load the mapping file from.
private  java.lang.String[] mappings
          Used to configure additional mappings.
 
Constructor Summary
ConfigurableMimeFileTypeMap()
           
 
Method Summary
 void afterPropertiesSet()
          Creates the final merged mapping set.
protected  javax.activation.FileTypeMap createFileTypeMap(Resource mappingLocation, java.lang.String[] mappings)
          Compile a FileTypeMap from the mappings in the given mapping file and the given mapping entries.
 java.lang.String getContentType(java.io.File file)
          Delegates to the underlying FileTypeMap.
 java.lang.String getContentType(java.lang.String fileName)
          Delegates to the underlying FileTypeMap.
protected  javax.activation.FileTypeMap getFileTypeMap()
          Return the delegate FileTypeMap, compiled from the mappings in the mapping file and the entries in the mappings property.
 void setMappingLocation(Resource mappingLocation)
          Specify the Resource from which mappings are loaded.
 void setMappings(java.lang.String[] mappings)
          Specify additional MIME type mappings as lines that follow the mime.types file format, as specified by the Java Activation Framework, for example:
text/html html htm HTML HTM
 
Methods inherited from class javax.activation.FileTypeMap
getDefaultFileTypeMap, setDefaultFileTypeMap
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

mappingLocation

private Resource mappingLocation
The Resource to load the mapping file from.


mappings

private java.lang.String[] mappings
Used to configure additional mappings.


fileTypeMap

private javax.activation.FileTypeMap fileTypeMap
The delegate FileTypeMap, compiled from the mappings in the mapping file and the entries in the mappings property.

Constructor Detail

ConfigurableMimeFileTypeMap

public ConfigurableMimeFileTypeMap()
Method Detail

setMappingLocation

public void setMappingLocation(Resource mappingLocation)
Specify the Resource from which mappings are loaded.

Needs to follow the mime.types file format, as specified by the Java Activation Framework, containing lines such as:
text/html html htm HTML HTM


setMappings

public void setMappings(java.lang.String[] mappings)
Specify additional MIME type mappings as lines that follow the mime.types file format, as specified by the Java Activation Framework, for example:
text/html html htm HTML HTM


afterPropertiesSet

public void afterPropertiesSet()
Creates the final merged mapping set.

Specified by:
afterPropertiesSet in interface InitializingBean

getFileTypeMap

protected final javax.activation.FileTypeMap getFileTypeMap()
Return the delegate FileTypeMap, compiled from the mappings in the mapping file and the entries in the mappings property.

See Also:
setMappingLocation(org.springframework.core.io.Resource), setMappings(java.lang.String[]), createFileTypeMap(org.springframework.core.io.Resource, java.lang.String[])

createFileTypeMap

protected javax.activation.FileTypeMap createFileTypeMap(Resource mappingLocation,
                                                         java.lang.String[] mappings)
                                                  throws java.io.IOException
Compile a FileTypeMap from the mappings in the given mapping file and the given mapping entries.

The default implementation creates an Activation Framework MimetypesFileTypeMap, passing in an InputStream from the mapping resource (if any) and registering the mapping lines programmatically.

Parameters:
mappingLocation - a mime.types mapping resource (can be null)
mappings - MIME type mapping lines (can be null)
Returns:
the compiled FileTypeMap
Throws:
java.io.IOException - if resource access failed
See Also:
MimetypesFileTypeMap.MimetypesFileTypeMap(java.io.InputStream), MimetypesFileTypeMap.addMimeTypes(String)

getContentType

public java.lang.String getContentType(java.io.File file)
Delegates to the underlying FileTypeMap.

Specified by:
getContentType in class javax.activation.FileTypeMap
See Also:
getFileTypeMap()

getContentType

public java.lang.String getContentType(java.lang.String fileName)
Delegates to the underlying FileTypeMap.

Specified by:
getContentType in class javax.activation.FileTypeMap
See Also:
getFileTypeMap()