For a direct use of BigDecimal, you should use the Source Generator to
create the descriptors.
If you want to use a mapping file, you should provide a set method that takes a
String.
Hope this helps,
Arnaud
> -----Original Message-----
> From: Stefan Schmitz [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, August 07, 2001 1:38 PM
> To: [EMAIL PROTECTED]
> Subject: [castor-dev] Problem unmarshalling BigDecimals
>
>
> 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(FieldHandle
> rImpl.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(XMLVal
> idator.java:1456)
> at
> org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispa
> tch(XMLDocumentScanner.java:1205)
> at
> org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentSc
> anner.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(XMLVal
> idator.java:1456)
> at
> org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispa
> tch(XMLDocumentScanner.java:1205)
> at
> org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentSc
> anner.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
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-dev