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 !
