blob: 7e9fa3f3555038d6afb4734324e7253fa06056ae [file] [log] [blame]
<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or
more contributor license agreements. See the NOTICE file
distributed with this work for additional information regarding
copyright ownership. The ASF licenses this file to you under the
Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain
a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 Unless required by
applicable law or agreed to in writing, software distributed
under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions
and limitations under the License.
-->
<document>
<properties>
<title>MIME Type Component</title>
<author email="epugh@upstate.com">Eric Pugh</author>
</properties>
<body>
<section name="Overview">
<p>
The MimeType Service maintains mappings between MIME types and
the corresponding file name extensions (extremely useful in
conjunction with file upload), and between locales and character
encodings. The mappings are dependent upon the implementation,
and are typically defined in properties or files located in
user's home directory, Java home directory, or the current
class's JAR.
</p>
<p>
It is written
for use in Turbine but it can be used in any container compatible
with Avalon's ECM container.
</p>
</section>
<section name="Configuration">
<subsection name="Role Configuration">
<source><![CDATA[
<role
name="org.apache.fulcrum.mimetype.MimeTypeService"
shorthand="MimeTypeService"
default-class="org.apache.fulcrum.mimetype.DefaultMimeTypeService"/>
]]></source>
</subsection>
<subsection name="Component Configuration">
<table>
<tr>
<th>Item</th>
<th>Datatype</th>
<th>Cardinality</th>
<th>Description</th>
</tr>
<tr>
<td>@mimetypes</td>
<td>String</td>
<td>[0|1]</td>
<td>
The path to a file containing mime-type to file extension mappings.
The format of the file is the same as for the Apache HTTPD server.
It is explained below.
</td>
</tr>
<tr>
<td>@charsets</td>
<td>String</td>
<td>[0|1]</td>
<td>
The path to a file containing locale to charset mappings.
The format of the file is explained below.
</td>
</tr>
</table>
</subsection>
<subsection name="Component Configuration Example">
<source><![CDATA[
<MimeTypeService
mimetypes="WEB-INF/conf/mime.types"
charsets="WEB-INF/conf/charsets.properties" />
]]></source>
</subsection>
</section>
<section name="Usage">
<p>
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.
</p>
<p>
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:
</p>
<source><![CDATA[
<lang>_<country>_<variant>
]]></source>
<p>
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:
</p>
<source><![CDATA[
<lang>_<country>_<variant>=<charset>
_<country>_<variant>=<charset>
<lang>__<variant>=<charset>
__<variant>=<charset>
<lang>_<country>=<charset>
_<country>=<charset>
<lang>=<charset>
]]></source>
<p>
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.
</p>
<p>
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.:
</p>
<source><![CDATA[
<mimetype> <ext1> <ext2>...
]]></source>
<p>
The service contains defaults for most common MIME types, like
text/plain, text/html, text/x-html, 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 "mimetypes".
</p>
</section>
</body>
</document>