| <?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>Parser Component</title> |
| <author email="epugh@opensourceconnections.com">Eric Pugh</author> |
| </properties> |
| |
| <body> |
| |
| <section name="Overview"> |
| <p> |
| This Service functions as a repository for Parser components. |
| </p> |
| |
| <p> |
| It is written |
| for use in Turbine but it can be used in any container compatible |
| with Avalon's ECM container. |
| </p> |
| |
| <p> |
| The component uses the following services from the Fulcrum Repository |
| <ul> |
| <li> |
| <a href="http://turbine.apache.org/fulcrum/fulcrum-pool/">Fulcrum Pool Service</a> |
| </li> |
| <li> |
| <a href="http://turbine.apache.org/fulcrum/fulcrum-upload/">Fulcrum Upload Service</a> |
| (optional) |
| </li> |
| </ul> |
| </p> |
| </section> |
| |
| <section name="Configuration"> |
| <subsection name="Role Configuration"> |
| <source><![CDATA[ |
| <role |
| name="org.apache.fulcrum.parser.ParserService" |
| shorthand="parser" |
| default-class="org.apache.fulcrum.parser.DefaultParserService"/> |
| ]]></source> |
| </subsection> |
| |
| <subsection name="Component Configuration"> |
| <table> |
| <tr> |
| <th>Item</th> |
| <th>Datatype</th> |
| <th>Cardinality</th> |
| <th>Description</th> |
| </tr> |
| <tr> |
| <td>urlCaseFolding</td> |
| <td>String</td> |
| <td>[0|1]</td> |
| <td> |
| This setting controls how parameter names are to be folded during |
| processing. Valid values are <code>none</code> (no folding), |
| <code>upper</code> (all names upper case) and <code>lower</code> |
| (all names lower case). The default is <code>none</code>. |
| </td> |
| </tr> |
| <tr> |
| <td>parameterEncoding</td> |
| <td>String</td> |
| <td>[0|1]</td> |
| <td> |
| The parameter encoding to use when converting strings to bytes or |
| vice versa. This encoding is used when no explicit encoding is specified. |
| This must be a valid encoding string for the JVM in use. The default is |
| <code>iso-8859-1</code>. |
| </td> |
| </tr> |
| <tr> |
| <td>automaticUpload</td> |
| <td>boolean</td> |
| <td>[0|1]</td> |
| <td> |
| If set to <code>true</code>, parsing the multipart request for attachments |
| will be performed automatically. Otherwise, the request may be parsed manually |
| by calling <code>parseUpload(HttpServletRequest)</code>. The default value is |
| <code>false</code>. When set to true, the component must have the |
| <a href="http://turbine.apache.org/fulcrum/fulcrum-upload/">Fulcrum Upload Service</a> |
| available to parse the request. |
| </td> |
| </tr> |
| </table> |
| </subsection> |
| |
| <subsection name="Component Configuration Example"> |
| <source><![CDATA[ |
| <parser> |
| <urlCaseFolding>lower</urlCaseFolding> |
| <parameterEncoding>utf-8</parameterEncoding> |
| <automaticUpload>true</automaticUpload> |
| </parser> |
| ]]></source> |
| </subsection> |
| </section> |
| |
| <section name="Usage"> |
| <p> |
| You get a parser from the service like this: |
| </p> |
| |
| <source><![CDATA[ |
| ValueParser parser; |
| |
| try |
| { |
| // Get a ValueParser instance |
| parser = parserService.getParser(BaseValueParser.class); |
| |
| parser.add(...); |
| Double d = parser.getDoubleObject(...); |
| } |
| finally |
| { |
| // Return the instance to the service |
| if (parser != null) |
| { |
| parserService.putParser(parser); |
| } |
| } |
| ]]></source> |
| |
| <p> |
| Parsers are pooled inside the service. You can use this service to manage any types of |
| parsers, you just need to provide the class you want to manage. If the parser class |
| implements LogEnabled it will get an (Avalon) logger injected. If the parser class |
| implements ParserServiceSupport it will get an instance of this service injected. |
| </p> |
| |
| </section> |
| |
| </body> |
| </document> |