blob: fd6ac672bb09e6b5441b3bb0ac103697f2c13511 [file] [log] [blame]
<?xml version="1.0"?>
<!--
Copyright 2004, 2005 The Apache Software Foundation
Licensed 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.
-->
<module id="tapestry.ognl" version="4.0.0" package="org.apache.tapestry.services">
Wrappers around the Object Graph Navigation Library.
<!-- Currently, a single TypeConverter is allowed, specified as an app extension. Need to augment that with
a configuration point to specify as many as necessary. -->
<service-point id="ExpressionEvaluator" interface="ExpressionEvaluator">
<invoke-factory>
<construct class="impl.ExpressionEvaluatorImpl">
<set-service property="classFactory" service-id="tapestry.ClassFactory" />
<set-object property="applicationSpecification" value="infrastructure:applicationSpecification"/>
<set-configuration property="contributions" configuration-id="PropertyAccessors"/>
<set-configuration property="nullHandlerContributions" configuration-id="NullHandlers"/>
</construct>
</invoke-factory>
</service-point>
<service-point id="ExpressionCache" interface="ExpressionCache">
<invoke-factory>
<construct class="impl.ExpressionCacheImpl" initialize-method="initializeService">
<event-listener service-id="tapestry.ResetEventHub"/>
<event-listener service-id="tapestry.describe.ReportStatusHub"/>
<set-service property="evaluator" service-id="ExpressionEvaluator"/>
</construct>
</invoke-factory>
</service-point>
<configuration-point id="NullHandlers">
Defines handler objects mapped to particular classes. OGNL NullHandler objects
allow specifying how nulls are handled within OGNL expressions on a class-by-class
basis.
<schema>
<element name="null-handler">
<attribute name="class" required="true" translator="class">
The class for which the null handler will be used.
</attribute>
<attribute name="object" required="true" translator="object">
An object implementing the OGNL NullHandler interface.
</attribute>
<conversion class="impl.NullHandlerContribution">
<map attribute="class" property="subjectClass"/>
<map attribute="object" property="handler"/>
</conversion>
</element>
</schema>
</configuration-point>
<configuration-point id="PropertyAccessors">
Defines accessor objects mapped to particular classes. OGNL property accessors
allow for additional properties to be applied to objects beyond those
provided by standard JavaBeans naming conventions.
<schema>
<element name="accessor">
<attribute name="class" required="true" translator="class">
The class for which the accessor will be used.
</attribute>
<attribute name="object" required="true" translator="object">
An object implementing the OGNL PropertyAccessor interface.
</attribute>
<conversion class="impl.PropertyAccessorContribution">
<map attribute="class" property="subjectClass"/>
<map attribute="object" property="accessor"/>
</conversion>
</element>
</schema>
</configuration-point>
<contribution configuration-id="PropertyAccessors">
<accessor class="org.apache.tapestry.IBeanProvider" object="instance:org.apache.tapestry.bean.BeanProviderPropertyAccessor"/>
<accessor class="org.apache.tapestry.listener.ListenerMap" object="instance:org.apache.tapestry.listener.ListenerMapPropertyAccessor"/>
</contribution>
</module>