
July 17th, 2009, 03:59 AM
|
Registered User
|
|
Join Date: Jul 2009
Posts: 1
Time spent in forums: 10 m 4 sec
Reputation Power: 0
|
|
XML Encoder
Quote: Originally Posted by Rainer Hi
Can anybody tell me how cope with BigDecimal or Timestamp
i have got the following error if i try to serialize a BigDecimal:
java.lang.InstantiationException: java.math.BigDecimal
at java.lang.Class.newInstance0(Class.java:293)
at java.lang.Class.newInstance(Class.java:261)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at java.beans.Statement.invoke(Statement.java:470)
at java.beans.Expression.getValue(Expression.java:101 )
at java.beans.Encoder.getValue(Encoder.java:84)
at java.beans.Encoder.get(Encoder.java:186)
at java.beans.PersistenceDelegate.writeObject(Persist enceDelegate.java:97)
at java.beans.Encoder.writeObject(Encoder.java:55)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java: 250)
at java.beans.Encoder.writeExpression(Encoder.java:26 0)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.j ava:363)
at java.beans.PersistenceDelegate.writeObject(Persist enceDelegate.java:100)
at java.beans.Encoder.writeObject(Encoder.java:55)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java: 250)
at java.beans.Encoder.writeObject1(Encoder.java:192)
at java.beans.Encoder.cloneStatement(Encoder.java:205 )
at java.beans.Encoder.writeStatement(Encoder.java:236 )
at java.beans.XMLEncoder.writeStatement(XMLEncoder.ja va:326)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java: 253)
at com.nts.core.util.XMLObjectWriter.serializeRepairO rderObject(XMLObjectWriter.java:55)
at com.nts.core.util.XMLObjectWriter.main(XMLObjectWr iter.java:69)
java.lang.Exception: discarding statement XMLEncoder0.writeObject(BigDecimal0);
at java.beans.XMLEncoder.writeStatement(XMLEncoder.ja va:339)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java: 253)
at com.nts.core.util.XMLObjectWriter.serializeRepairO rderObject(XMLObjectWriter.java:55)
at com.nts.core.util.XMLObjectWriter.main(XMLObjectWr iter.java:69)
Caused by: java.lang.RuntimeException: failed to evaluate: =BigDecimal.new();
at java.beans.Encoder.getValue(Encoder.java:88)
at java.beans.Encoder.get(Encoder.java:186)
at java.beans.PersistenceDelegate.writeObject(Persist enceDelegate.java:97)
at java.beans.Encoder.writeObject(Encoder.java:55)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java: 250)
at java.beans.Encoder.writeExpression(Encoder.java:26 0)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.j ava:363)
at java.beans.PersistenceDelegate.writeObject(Persist enceDelegate.java:100)
at java.beans.Encoder.writeObject(Encoder.java:55)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java: 250)
at java.beans.Encoder.writeObject1(Encoder.java:192)
at java.beans.Encoder.cloneStatement(Encoder.java:205 )
at java.beans.Encoder.writeStatement(Encoder.java:236 )
at java.beans.XMLEncoder.writeStatement(XMLEncoder.ja va:326)
thx
rainer |
===========================================
Refer the below code this will help:
String flieName = obj.getClass().getSimpleName();
String filePath = dirPath + flieName + FILE_EXTENSION;
FileOutputStream outStream = new FileOutputStream(filePath);
XMLEncoder encoder = new XMLEncoder(outStream);
PersistenceDelegate pd=encoder.getPersistenceDelegate(Integer.class);
encoder.setPersistenceDelegate(BigDecimal.class,pd );
encoder.writeObject(obj);
encoder.flush();
outStream.flush();
--Kuldeep.Oli
|