If you provided me with a new Jira issue, attaching e.g. a JUnit test case and 
all relevant fields, iow. domain objects, mapping, I am willing to have a look 
whether the exception message can be improved.

Werner

> -----Ursprüngliche Nachricht-----
> Von: Bryan Castillo [mailto:[EMAIL PROTECTED]
> Gesendet: Dienstag, 13. März 2007 01:22
> An: [email protected]
> Betreff: [castor-user] Retrieving information from MarshalExceptions
> 
> I am working with some code, which uses Castor to map XML to custom
> objects.  Some of those objects contain java 5 enums.  Castor does
> parse those and sets the values properly, however if an invalid value
> for an Enum is submitted and I try to unmarshal the XML I get this
> Exception:
> 
> java.lang.IllegalArgumentException: Foo{File: [not available]; line:
> 2; column: 32}
>        at
> org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:740)
>        at bcc.Test.test(Test.java:81)
>        at bcc.Test.main(Test.java:102)
> Caused by: java.lang.IllegalStateException:
> java.lang.IllegalArgumentException: Foo
>        at
> org.exolab.castor.mapping.handlers.EnumFieldHandler.convertUponSet(EnumFie
> ldHandler.java:151)
>        at
> org.exolab.castor.mapping.GeneralizedFieldHandler.setValue(GeneralizedFiel
> dHandler.java:274)
>        at
> org.exolab.castor.mapping.GeneralizedFieldHandler.setValue(GeneralizedFiel
> dHandler.java:274)
>        at
> org.exolab.castor.xml.UnmarshalHandler.endElement(UnmarshalHandler.java:10
> 43)
>        at
> org.exolab.castor.xml.UnmarshalHandler.endElement(UnmarshalHandler.java:11
> 08)
>        at
> org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java:1403)
>        at
> org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidat
> or.java:1436)
>        at
> org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(
> XMLDocumentScanner.java:1205)
>        at
> org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanne
> r.java:381)
>        at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1035)
>        at
> org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:726)
>        ... 2 more
> 
> I'd like to find a way to reliably get the following information when
> an Exception occurs:
> 
>  1. What was the name of the XML tag that was being parsed?
>  2. What was the Class castor was trying to create or convert to?
>  3. What was the raw value castor was trying to convert?
> 
> With this information, I could give an error message showing what
> element had a problem, what the invalid value was and I could lookup
> my Enum and give a list of valid values (If the type was an Enum).
> 
> Is there a way to do this?  I suppose I could do this with a Custom
> field handler, but I don't want to create a custom field handler for
> every Enum in the code. I tried writing a GeneralizedFieldHandler, but
> I could not get it to work with more than 1 enum type.
> 
> 
> 
> Thanks.
> 
> ---------------------------------------------------------------------
> To unsubscribe from this list please visit:
> 
>     http://xircles.codehaus.org/manage_email


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

    http://xircles.codehaus.org/manage_email

Reply via email to