Hi,
I have a problem mapping java.math.BigDecimal attributes.
Here is the the Java-code I use, which is very much like the usage
pattern which is provided in the XML mapping documentation:
//MappingTest.java
import java.math.BigDecimal;
import java.io.*;
import org.exolab.castor.mapping.*;
import org.exolab.castor.xml.*;
import org.xml.sax.InputSource;
public class MappingTest {
private BigDecimal _bd;
public void setBd(BigDecimal bd) { this._bd = bd; }
public BigDecimal getBd() { return _bd; }
public static void main(String[] args) {
MappingTest mt = new MappingTest();
mt.setBd(new BigDecimal(1.23));
Mapping mapping = new Mapping();
try {
mapping.loadMapping("MappingTest.xml");
Marshaller marshaller = new Marshaller(new
FileWriter("XML.xml"));
marshaller.setMapping(mapping);
marshaller.marshal(mt);
Unmarshaller unmar = new Unmarshaller(mapping);
MappingTest mt2 = (MappingTest)unmar.unmarshal(new
InputSource(new FileReader("XML.xml")));
} catch (Exception e) {
e.printStackTrace();
}
}
}
This is the mapping file:
<?xml version="1.0" encoding="UTF-8"?>
<mapping>
<class name="MappingTest">
<map-to xml="MappingTest"/>
<field name="_bd" type="java.math.BigDecimal" get-method="getBd"
set-method="setBd">
<bind-xml name="bd" node="element"/>
</field>
</class>
</mapping>
This happens:
org.xml.sax.SAXException: unable to add 'bd' to <MappingTest> due to the
following exception:
>>>--- Begin Exception ---<<<
java.lang.IllegalArgumentException: Type conversion error: could not set
value of _bd(java.math.BigDecimal) with value of type java.lang.String
at
org.exolab.castor.mapping.loader.FieldHandlerImpl.setValue(FieldHandlerImpl.java:460)
at
org.exolab.castor.xml.UnmarshalHandler.endElement(UnmarshalHandler.java:478)
at
org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java:1392)
at
org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidator.java:1456)
at
org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1205)
at
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
at
org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1081)
at
org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:338)
at MappingTest.main(MappingTest.java:32)
>>>---- End Exception ----<<<
at
org.exolab.castor.xml.UnmarshalHandler.endElement(UnmarshalHandler.java:508)
at
org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java:1392)
at
org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidator.java:1456)
at
org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1205)
at
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
at
org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1081)
at
org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:338)
at MappingTest.main(MappingTest.java:32)
What do I do wrong and what can I do to make this work?
Thank you very much,
Stefan Schmitz
[EMAIL PROTECTED]
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev