Hi,

The way Castor converts string to date when the field type is defined as type="date" is not helpful for me as my date format is something like "dd:MM:yyyy" and Castor expects another format. So, I have planned to define my own FieldHandler using the class GenericFieldHandler.

The <field> wad defined as :

<field name="dateLastModification"
             type="string" handler="myconverter.DateFieldHandler">
        <bind-xml name="dateLastModification" node="element"/>
</field>

My DateFieldHandler class was defined as :

public class DateFieldHandler extends GeneralizedFieldHandler  {

  private static final SimpleDateFormat DateFormatter =

     new SimpleDateFormat("dd:MM:yyyy");


  static {
    DateFormatter.setLenient(false);
  }


  public Object convertUponGet(Object value) {
    return DateFormatter.format((java.util.Date) value);
  }

  public Object convertUponSet(Object value) {
    return DateFormatter.parse((String) value, new ParsePosition(0));
  }
}

When I ran, I have got the following message :

unable to add 'dateLastModification' to <documentStandard> due to the following exception:
>>>--- Begin Exception ---<<<
java.lang.IllegalStateException: A call to #setFieldHandler (with a non-null value) muust be made before calling this method.
 at org.exolab.castor.mapping.GeneralizedFieldHandler.setValue(Unknown Source)
 at org.exolab.castor.mapping.loader.FieldHandlerImpl.setValue(Unknown Source)
 at org.exolab.castor.xml.UnmarshalHandler.endElement(Unknown Source)
 at org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java:1392)
 at org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidator.java:1550)
 at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1155)
 at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:387)
 at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1099)
 at org.exolab.castor.xml.Unmarshaller.unmarshal(Unknown Source)
 at org.exolab.castor.xml.Unmarshaller.unmarshal(Unknown Source)
 at repository.RepositoryObjectLifecycleHandler.unmarshal(RepositoryObjectLifecycleHandler.java:35)
 at repository.RepositoryObjectLifecycleHandlerTestCase.main(RepositoryObjectLifecycleHandlerTestCase.java:28)
>>>---- End Exception ----<<<

The #setFieldHandler method is a method of the GenericFieldHandler. But I don't know how to call it in my DateFieldHandler class which is derived from GenericFieldHandler. And furthermore, I don't know if I really need to call it...

Well, I have browsed the mail-list archive without success.

Any idea is welcome !

Thanks a lot for your help.

Regards,

Dominique

 



Yahoo! Mail -- Une adresse @yahoo.fr gratuite et en fran�ais !

Reply via email to