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

Reply via email to