Try changing 'type' of  'StartDt', 'EndDt' to  string.
Have a look at example at below link
http://www.castor.org/xml-fieldhandlers.html

Thanks,
Sam


ptyagi108 wrote:
> 
> Hi Werner,
> 
> The xml looks like ,
> 
> <Restrictn>
>                                       <CategRestr/>
>                                       <restrDesc> </restrDesc>
>                                       <Vendor> </Vendor>
>                                       <Violatn>Y</Violatn>
>                                       <SubTyp>Buy</SubTyp>
>                                       <Qualify>MinDol</Qualify>
>                                       <Amt>0</Amt>
>                                       <Notes> </Notes>
>                                       <ID> </ID>
>                                       <StartDt>1967-08-13</StartDt>
>                                       <EndDt>1967-08-13</EndDt>
>                                       <Actn>A</Actn>
>                               </Restrictn>
> 
> the mappings are like,
> 
> <class name="com.xyz.common.datatypes.RestrictnImpl"
> auto-complete="false">
>      
>         <map-to xml="Restrictn"/>
>       
>         <field name="categRestr" type="string" required="false"
>             direct="false" transient="false">
>             <bind-xml name="CategRestr" node="element" reference="false"/>
>         </field>
>  
>         <field name="Vendor" type="string" required="false"
>             direct="false" transient="false">
>             <bind-xml name="RestrVendor" node="element"
>                 location="Classification" reference="false"/>
>         </field>
>         <field name="InViolatn" type="boolean" required="false"
>             direct="false" transient="false">
>             <bind-xml name="RestrInViolatn" node="element"
>                 location="Classification" reference="false"/>
>         </field>
>   
>         <field name="ID" type="string" required="false"
>             direct="false" transient="false">
>             <bind-xml name="RestrictionID" node="element"
>                 location="Classification" reference="false"/>
>         </field>
>         <field name="restrDesc" type="string" required="false"
>             direct="false" transient="false">
>             <bind-xml name="RestrDesc" node="element"
>                 location="Classification" reference="false"/>
>         </field>
>         <field name="EndDt" type="date" required="false"
>             direct="false" transient="false"
> handler="com.xyz.service.MyDateHandler">
>             <bind-xml name="RestrEndDt" node="element"
>                 location="Classification" reference="false"/>
>         </field>
>         
>         
>         <field name="StartDt" type="date" required="false"
>             direct="false" transient="false"
> handler="com.xyz.service.MyDateHandler">
>             <bind-xml name="RestrStartDt" node="element"
>                 location="Classification" reference="false"/>
>         </field>
>         <field name="Amt" type="long" required="false"
>             direct="false" transient="false">
>             <bind-xml name="RestrAmt" node="element" reference="false"/>
>         </field>
>         <field name="symbol" type="string" required="false"
>             direct="false" transient="false">
>             <bind-xml name="symbol" node="element" reference="false"/>
>         </field>
>        
>     </class>
> 
> 
> MyDateHandler.java looks like,
> 
> import java.text.ParseException;
> import java.text.SimpleDateFormat;
> import java.util.Date;
> 
> import org.exolab.castor.mapping.GeneralizedFieldHandler;
> 
> 
> 
> /**
>  * The FieldHandler for the Date class
>  *
>  */
> public class MyDateHandler
>     extends GeneralizedFieldHandler
> {
> 
>     private static final String FORMAT = "yyyy-MM-dd";
> 
>     /**
>      * Creates a new MyDateHandler instance
>      */
>     public MyDateHandler() {
>         super();
>     }
> 
>     /**
>      * This method is used to convert the value when the
>      * getValue method is called. The getValue method will
>      * obtain the actual field value from given 'parent' object.
>      * This convert method is then invoked with the field's
>      * value. The value returned from this method will be
>      * the actual value returned by getValue method.
>      *
>      * @param value the object value to convert after
>      *  performing a get operation
>      * @return the converted value.
>      */
>     public Object convertUponGet(Object value) {
>         if (value == null) return null;
>         SimpleDateFormat formatter = new SimpleDateFormat(FORMAT);
>         Date date = (Date)value;
>         return formatter.format(date);
>     }
> 
> 
>     /**
>      * This method is used to convert the value when the
>      * setValue method is called. The setValue method will
>      * call this method to obtain the converted value.
>      * The converted value will then be used as the value to
>      * set for the field.
>      *
>      * @param value the object value to convert before
>      *  performing a set operation
>      * @return the converted value.
>      */
>     public Object convertUponSet(Object value) {
>         SimpleDateFormat formatter = new SimpleDateFormat(FORMAT);
>         Date date = null;
>         try {
>             date = formatter.parse((String)value);
>         }
>         catch(ParseException px) {
>             throw new IllegalArgumentException(px.getMessage());
>         }
>         return date;
>     }
> 
>     /**
>      * Returns the class type for the field that this
>      * GeneralizedFieldHandler converts to and from. This
>      * should be the type that is used in the
>      * object model.
>      *
>      * @return the class type of of the field
>      */
>     public Class getFieldType() {
>         return Date.class;
>     }
> 
>     /**
>      * Creates a new instance of the object described by
>      * this field.
>      *
>      * @param parent The object for which the field is created
>      * @return A new instance of the field's value
>      * @throws IllegalStateException This field is a simple
>      *  type and cannot be instantiated
>      */
>     public Object newInstance( Object parent )
>         throws IllegalStateException
>     {
>         //-- Since it's marked as a string...just return null,
>         //-- it's not needed.
>         return null;
>     }
> 
> }
> 
> 
> 
> Regards,
> Pramod
> 
> 
> Werner Guttmann-6 wrote:
>> 
>> Hi,
>> 
>> what is the actual <date> field looking like in your XML document ? Can 
>> you provide us with a sample ?
>> 
>> And are you using a mapping, or did you start with an XML schema ?
>> 
>> Cheers
>> Werner
>> 
>> PS In general, please do provide more information about the problem at 
>> hand, such as XML document (fragments), mapping file (fragments), .... 
>> otherwise it will be very hard to help you.
>> 
>> On 23.02.2010 12:20, ptyagi108 wrote:
>>>
>>> Hi ,
>>>
>>> I am getting an error parsing a Date field like
>>> java.lang.IllegalStateException: Bad DateTime format: 1967-08-13
>>> DateTime is not long enough.I found similar bug not resloved yet in
>>> castor
>>> Jira.. can anyone pls inform me some good work around for the same issue
>>> which do not require me to change castor library.
>>>
>>> http://jira.codehaus.org/browse/CASTOR-1878?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_88296
>>>
>>> Regards,
>>> Pramod
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe from this list, please visit:
>> 
>>     http://xircles.codehaus.org/manage_email
>> 
>> 
>> 
>> 
> 
> 

-- 
View this message in context: 
http://old.nabble.com/convertUponSet-method-of-MyDateHandler-extending-GeneralizedFieldHandler-is-not-getting-called-tp27701790p27714169.html
Sent from the Castor - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to