Hi,
I tried with both Unmarshall static and non-static methods. Still I am
facing the same issue while trying to convert xml to java object.
Here are my code snippets and find attached files for rest class files. I
tried with Castor generated mapping file and hand written mapping file. I
didnt see any difference in the output.
When I tried without mapping file, I am seeing Null Pointer Exception when I
tried to get values with getter method.
Please help me either ways. I got struck with this problem for 3 days.
MY INPUT XML
============
<?xml version="1.0" encoding="UTF-8"?>
<exception valid="true">
<ns1:body xmlns:ns1="http://www.mydus.com/his/Exception">
<ns1:ExceptionInfo>
<ns1:ProjectName>HIS</ns1:ProjectName>
<ns1:ClientName>DE</ns1:ClientName>
<ns1:Error_Type></ns1:Error_Type>
<ns1:Error_Code
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="java:java.lang.String"></ns1:Error_Code>
<ns1:Error_Activity></ns1:Error_Activity>
<ns1:Error_Msg
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="java:java.lang.String"></ns1:Error_Msg>
<ns1:EventData
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="java:java.lang.String"></ns1:EventData>
<ns1:Severity>1</ns1:Severity>
<ns1:Priority>0</ns1:Priority>
<ns1:Resolution>
<ns1:Flag>true</ns1:Flag>
<ns1:Time_to_Wait>10</ns1:Time_to_Wait>
<ns1:ProposedActions>
<ns1:Action></ns1:Action>
<ns1:SubAction></ns1:SubAction>
</ns1:ProposedActions>
<ns1:SuggestedAction>
<ns1:Action></ns1:Action>
<ns1:SubAction></ns1:SubAction>
</ns1:SuggestedAction>
</ns1:Resolution>
<ns1:GeneralPurpose>
<ns1:Field></ns1:Field>
<ns1:Value></ns1:Value>
</ns1:GeneralPurpose>
</ns1:ExceptionInfo>
<ns1:Fault>
<ns1:Code>aa</ns1:Code>
<ns1:Reason></ns1:Reason>
<ns1:Node
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="java:java.lang.String"></ns1:Node>
<ns1:Role
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="java:java.lang.String"></ns1:Role>
<ns1:Detail
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="java:java.lang.String"></ns1:Detail>
</ns1:Fault>
</ns1:body>
<ns2:envelope xmlns:ns2="http://www.mydus.com/his/Exception">
<ns2:Header>
<ns2:Event>
<ns2:EventId>47fa42b3-8112-11dc-b37b-0014a4589aa9</ns2:EventId>
<ns2:GlobalTransactionId></ns2:GlobalTransactionId>
<ns2:TimeStamp>2007-10-22T21:47:22.984-05:00</ns2:TimeStamp>
<ns2:EventDetail>
<ns2:Component>HIS</ns2:Component>
<ns2:Source_Domain>his</ns2:Source_Domain>
<ns2:Cur_Domain>DE</ns2:Cur_Domain>
<ns2:Object_Id>1</ns2:Object_Id>
<ns2:Object_Version>1</ns2:Object_Version>
<ns2:Object_Definition_Version>his</ns2:Object_Definition_Version>
</ns2:EventDetail>
<ns2:EventProperties>
<ns2:EventProperty>
<ns2:Field></ns2:Field>
<ns2:Value></ns2:Value>
</ns2:EventProperty>
</ns2:EventProperties>
</ns2:Event>
</ns2:Header>
<ns2:Body>
<ns2:ExceptionInfo>
<ns2:ProjectName>HIS</ns2:ProjectName>
<ns2:ClientName>DE</ns2:ClientName>
<ns2:Error_Type></ns2:Error_Type>
<ns2:Error_Code
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="java:java.lang.String"></ns2:Error_Code>
<ns2:Error_Activity></ns2:Error_Activity>
<ns2:Error_Msg
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="java:java.lang.String"></ns2:Error_Msg>
<ns2:EventData
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="java:java.lang.String"></ns2:EventData>
<ns2:Severity>1</ns2:Severity>
<ns2:Priority>0</ns2:Priority>
<ns2:Resolution>
<ns2:Flag>true</ns2:Flag>
<ns2:Time_to_Wait>10</ns2:Time_to_Wait>
<ns2:ProposedActions>
<ns2:Action></ns2:Action>
<ns2:SubAction></ns2:SubAction>
</ns2:ProposedActions>
<ns2:SuggestedAction>
<ns2:Action></ns2:Action>
<ns2:SubAction></ns2:SubAction>
</ns2:SuggestedAction>
</ns2:Resolution>
<ns2:GeneralPurpose>
<ns2:Field></ns2:Field>
<ns2:Value></ns2:Value>
</ns2:GeneralPurpose>
</ns2:ExceptionInfo>
<ns2:Fault>
<ns2:Code>aa</ns2:Code>
<ns2:Reason></ns2:Reason>
<ns2:Node
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="java:java.lang.String"></ns2:Node>
<ns2:Role
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="java:java.lang.String"></ns2:Role>
<ns2:Detail
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="java:java.lang.String"></ns2:Detail>
</ns2:Fault>
</ns2:Body>
</ns2:envelope>
</exception>
MY MAPPING XML
=================
<?xml version = "1.0" encoding = "UTF-8"?>
<mapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://castor.exolab.org/"
xsi:schemaLocation="http://castor.exolab.org/ mapping.xsd">
<description> Exception Castor Mapping</description>
<class name="src.com.hydus.java.exception.Exception">
<map-to xml="exception"/>
<field name="Body" type = "src.com.hydus.java.exception.Body">
<bind-xml name= "Body"/>
<field name="ExceptionInfo" type =
"src.com.hydus.java.exception.ExceptionInfo">
<bind-xml name= "ExceptionInfo"/>
<field name="ProjectName" type = "string">
<bind-xml name= "ProjectName"/>
</field>
<field name="ClientName">
<bind-xml name= "ClientName"/>
</field>
<field name="Error_Type">
<bind-xml name= "Error_Type"/>
</field>
<field name="Error_Code">
<bind-xml name= "Error_Code"/>
</field>
<field name="Error_Activity">
<bind-xml name= "Error_Activity"/>
</field>
<field name="Error_Msg">
<bind-xml name= "Error_Msg"/>
</field>
<field name="EventData">
<bind-xml name= "EventData"/>
</field>
<field name="Severity">
<bind-xml name= "Severity"/>
</field>
<field name="Priority">
<bind-xml name= "Priority"/>
</field>
<field name="Resolution" type =
"src.com.hydus.java.exception.Resolution">
<bind-xml name= "Resolution"/>
<field name="Flag">
<bind-xml name= "Flag"/>
</field>
<field name="Time_to_Wait">
<bind-xml name= "Time_to_Wait"/>
</field>
<field name="ProposedActions" type =
"src.com.hydus.java.exception.ProposedActions" minOccurs = "0" maxOccurs =
"unbounded">
<bind-xml name= "ProposedActions"/>
<field name="Action">
<bind-xml name= "Action"/>
</field>
<field name="SubAction">
<bind-xml name= "SubAction"/>
</field>
</field>
<field name="SuggestedAction" type =
"src.com.hydus.java.exception.SuggestedAction" minOccurs = "0" maxOccurs =
"unbounded">
<bind-xml name= "SuggestedAction"/>
<field name="Action">
<bind-xml name= "Action"/>
</field>
<field name="SubAction">
<bind-xml name= "SubAction"/>
</field>
</field>
</field>
<field name="GeneralPurpose" type =
"src.com.hydus.java.exception.GeneralPurpose" minOccurs = "0" maxOccurs =
"unbounded">
<bind-xml name= "GeneralPurpose"/>
<field name="Field">
<bind-xml name= "Field"/>
</field>
<field name="Value">
<bind-xml name= "Value"/>
</field>
</field>
</field>
<field name="Fault" type = "src.com.hydus.java.exception.Fault">
<bind-xml name= "Fault"/>
<field name="Code">
<bind-xml name= "Code"/>
</field>
<field name="Reason">
<bind-xml name= "Reason"/>
</field>
<field name="Node">
<bind-xml name= "Node"/>
</field>
<field name="Role">
<bind-xml name= "Role"/>
</field>
<field name="Detail">
<bind-xml name= "Detail"/>
</field>
</field>
</field>
<field name="Envelope" type = "src.com.hydus.java.exception.Envelope">
<bind-xml name= "Envelope"/>
<field name="Header" type = "src.com.hydus.java.exception.Header">
<bind-xml name= "Header"/>
<field name="Event" type =
"src.com.hydus.java.exception.Event">
<bind-xml name= "Event"/>
<field name="EventId">
<bind-xml name= "EventId"/>
</field>
<field name="GlobalTransactionId">
<bind-xml name= "GlobalTransactionId"/>
</field>
<field name="TimeStamp">
<bind-xml name= "TimeStamp"/>
</field>
<field name="EventDetail" type =
"src.com.hydus.java.exception.EventDetail">
<bind-xml name= "EventDetail"/>
<field name="Component">
<bind-xml name= "Component"/>
</field>
<field name="Source_Domain">
<bind-xml name= "Source_Domain"/>
</field>
<field name="Cur_Domain">
<bind-xml name= "Cur_Domain"/>
</field>
<field name="Object_Id">
<bind-xml name= "Object_Id"/>
</field>
<field name="Object_Version">
<bind-xml name= "Object_Version"/>
</field>
<field name="Object_Definition_Version">
<bind-xml name= "Object_Definition_Version"/>
</field>
</field>
<field name="EventProperties" type =
"src.com.hydus.java.exception.EventProperties">
<bind-xml name= "EventProperties"/>
<field name="EventProperty" type =
"src.com.hydus.java.exception.EventProperty" minOccurs = "0" maxOccurs =
"unbounded">
<bind-xml name= "EventProperty"/>
<field name="Field">
<bind-xml name= "Field"/>
</field>
<field name="Value">
<bind-xml name= "Value"/>
</field>
</field>
</field>
</field>
</field>
<field name="Body" type = "src.com.hydus.java.exception.Body">
<bind-xml name= "Body"/>
</field>
</field>
</class>
</mapping>
MY JAVA CODE SNIPPET
==================
Log log =LogFactory.getLog(ExceptionTest.class);
InputStream xmlMapping = new FileInputStream("mapping.xml");
InputStreamReader mappingReader = new InputStreamReader(xmlMapping);
InputSource mappingSource = new InputSource(mappingReader);
Mapping mapping = new Mapping();
mapping.loadMapping(mappingSource);
FileReader in = new FileReader("SampleXML.xml");
//WebApp webapp = WebApp.unmarshal(in);
Unmarshaller unm = new Unmarshaller(Exception.class);
unm.setMapping(mapping);
Exception exp = (Exception)unm.unmarshal(in);
System.out.println(exp.getBody() .getExceptionInfo()
.getClientName());
ERROR OUTPUT
===============
Exception in thread "main" org.exolab.castor.xml.MarshalException: unable to
find FieldDescriptor for 'field' in ClassDescriptor of field{File: ; line:
11; column: 88}
at
org.exolab.castor.xml.Unmarshaller.convertSAXExceptionToMarshalException(Unmarshaller.java:755)
at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:721)
at
org.castor.mapping.MappingUnmarshaller.loadMappingInternal(MappingUnmarshaller.java:215)
at
org.castor.mapping.MappingUnmarshaller.getMappingLoader(MappingUnmarshaller.java:124)
at
org.castor.mapping.MappingUnmarshaller.getMappingLoader(MappingUnmarshaller.java:99)
at org.exolab.castor.xml.Unmarshaller.setMapping(Unmarshaller.java:515)
at DoMapping.main(DoMapping.java:27)
Caused by: org.xml.sax.SAXException: unable to find FieldDescriptor for
'field' in ClassDescriptor of field
at
org.exolab.castor.xml.UnmarshalHandler.startElement(UnmarshalHandler.java:1925)
at
org.exolab.castor.xml.UnmarshalHandler.startElement(UnmarshalHandler.java:1353)
at org.apache.xerces.parsers.SAXParser.startElement(SAXParser.java:1376)
at
org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLValidator.java:1284)
at
org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentScanner.java:1806)
at
org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1182)
at
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098)
at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:709)
... 5 more
Caused by: org.xml.sax.SAXException: unable to find FieldDescriptor for
'field' in ClassDescriptor of field
at
org.exolab.castor.xml.UnmarshalHandler.startElement(UnmarshalHandler.java:1925)
at
org.exolab.castor.xml.UnmarshalHandler.startElement(UnmarshalHandler.java:1353)
at org.apache.xerces.parsers.SAXParser.startElement(SAXParser.java:1376)
at
org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLValidator.java:1284)
at
org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentScanner.java:1806)
at
org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1182)
at
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098)
at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:709)
at
org.castor.mapping.MappingUnmarshaller.loadMappingInternal(MappingUnmarshaller.java:215)
at
org.castor.mapping.MappingUnmarshaller.getMappingLoader(MappingUnmarshaller.java:124)
at
org.castor.mapping.MappingUnmarshaller.getMappingLoader(MappingUnmarshaller.java:99)
at org.exolab.castor.xml.Unmarshaller.setMapping(Unmarshaller.java:515)
at DoMapping.main(DoMapping.java:27)
Thanks Kiran http://www.nabble.com/file/p13409162/Exception.rar
Exception.rar