Mimetype Service

The MimeType Service maintains mappings between MIME types and the corresponding file name extensions, and between locales and character encodings. The mappings are typically defined in properties or files located in user's home directory, Java home directory or the current class jar depending on the implementation.

Configuration

# -------------------------------------------------------------------
# 
#  S E R V I C E S
#
# -------------------------------------------------------------------
# Classes for Turbine Services should be defined here.
# Format: services.[name].classname=[implementing class]
#
# To specify properties of a service use the following syntax:
# service.[name].[property]=[value]

services.MimeTypeService.classname=org.apache.turbine.services.mimetype.TurbineMimeTypeService
.
.
.
# -------------------------------------------------------------------
# 
#  M I M E T Y P E  S E R V I C E
#
# -------------------------------------------------------------------

# This property specifies a file containing mappings between MIME 
# content types and the corresponding file name extensions. The
# service itself contains a hardcoded set of most common mappings. 
# The file must use the same syntax as the mime.types file of 
# the Apache Server, i.e. 
# <mimetype> <ext1> <ext2>...
#
#services.MimeTypeService.mime.types=/WEB-INF/conf/mime.types

# This property specifies a file containing mappings between locales 
# and the corresponding character encodings. The service itself 
# contains a hardcoded set of most common mappings. 
# The file should use the Java property file syntax, i.e. 
# <lang_country_variant>=<charset>
#
#services.MimeTypeService.charsets=/WEB-INF/conf/charset.properties

Usage

The default RunData implementation uses the MimeType Service internally when resolving the character encoding of the servlet response. In addition, applications can use it for customized encoding and content type resolving.

The mappings between locales and the corresponding character encodings are specified using the Java property file syntax, where the locale specification is the key of the property key and the charset is the value of the property. The locale specification consists of three parts:

<lang>_<country>_<variant>

The variant can be whatever is appropriate for the application, like a markup language specification, a browser specification, etc. The service looks for charsets using the following search order:

<lang>_<country>_<variant>=<charset>
_<country>_<variant>=<charset>
<lang>__<variant>=<charset>
__<variant>=<charset>
<lang>_<country>=<charset>
_<country>=<charset>
<lang>=<charset>

The service contains defaults for several language mappings and more specific ones can be specified in an optional property file, e.g. __wml=UTF-8. The name of the property file can be given with a service property named "charsets". The service caches results of the search, which should guarantee good performance.

The mappings between MIME types and the corresponding file name extensions are specified using the same syntax as the mime.types file of the Apache Server, i.e.:

<mimetype> <ext1> <ext2>...

The service contains defaults for most common MIME types, like text/plain, text/html, text/x-hdml, text/vnd.wap.wml, image/gif and image/jpeg. More specific ones can be specified in an optional MIME types file. The name of the MIME types file can be given with a service property named "mime.types".

The TurbineMimeTypes class is a static accessor for the most common MimeType Service methods.