<?xml version="1.0"?>
<!-- 
   Copyright 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.form" version="4.0.0" package="org.apache.tapestry.form">
  
  <sub-module descriptor="tapestry.form.translator.xml"/>
  <sub-module descriptor="tapestry.form.validator.xml"/>
  
  Support for form components.

  <service-point id="TranslatedFieldSupport" interface="org.apache.tapestry.form.TranslatedFieldSupport">
    <invoke-factory>
      <construct class="TranslatedFieldSupportImpl">
        <set-service property="threadLocale" service-id="hivemind.ThreadLocale"/>
      </construct>
    </invoke-factory>
  </service-point>

  <service-point id="ValidatableFieldSupport" interface="org.apache.tapestry.form.ValidatableFieldSupport">
    <invoke-factory>
      <construct class="ValidatableFieldSupportImpl">
        <set-object property="valueConverter" value="infrastructure:valueConverter"/>
        <set-service property="threadLocale" service-id="hivemind.ThreadLocale"/>
      </construct>
    </invoke-factory>
  </service-point>
  
</module>