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

Reply via email to