I'm in the processing of upgrading from Castor 1.0.5 to Castor 1.3.1 and am
running into a problem with unmarshalling.
I've cut down the xsd that we are using quite substantially (it's originally a
Microsoft Project xsd). I generate code with the attached XSD and binding file.
(Most of the binding file can be ignored because it refers to elements in the
original xsd).
When I try to test using the simple test class (test1.java), I get errors about
SaveVersion not being in the xml file (see errors.txt attached).
When I set DEBUG in log4j.xml, I see a number of errors like what is listed
below.
Can someone please explain what is happening here and what we would need to do
to fix it? The class SaveVersionDescriptor is not being generated anywhere
during code generation, so it doesn't seem like it's just a classpath problem.
We aren't doing anything with a mapping file, since we're doing code
generation. I'm hoping that the answer isn't going to involve having to add
additional descriptive information for each of the element in the xsd in a
binding file or mapping file, since the file is quite large. We previously used
Castor 1.0.5 without additional descriptive information for each element and
did not have any trouble.
Thanks,
Andy
[DEBUG] 19:02 (XMLClassDescriptorResolverImpl.java:getDescriptor:569)
Get descriptor for: SaveVersion found: null
[DEBUG] 19:02 (AbstractResolverClassCommand.java:resolve:50)
Now in method: org.exolab.castor.xml.util.resolvers.ByDescriptorClass
resolving: SaveVersion
[DEBUG] 19:02 (ResolveHelpers.java:loadClass:143)
Ignored problem at loading class: SaveVersionDescriptor through class loader:
sun.misc.launcher$appclassloa...@11b86e7, exception:
java.lang.ClassNotFoundException: SaveVersionDescriptor
[DEBUG] 19:02 (XMLClassDescriptorResolverImpl.java:addAllDescriptors:643)
Called addAllDescriptors with null or empty descriptor map
[DEBUG] 19:02 (XMLClassDescriptorResolverImpl.java:getDescriptor:569)
Get descriptor for: SaveVersion found: null
[DEBUG] 19:02 (AbstractResolverClassCommand.java:resolve:50)
Now in method: org.exolab.castor.xml.util.resolvers.ByIntrospection resolving:
SaveVersion
[DEBUG] 19:02 (ResolveHelpers.java:loadClass:143)
Ignored problem at loading class: SaveVersion through class loader:
sun.misc.launcher$appclassloa...@11b86e7, exception:
java.lang.ClassNotFoundException: SaveVersion
[DEBUG] 19:02 (XMLClassDescriptorResolverImpl.java:addAllDescriptors:643)
Called addAllDescriptors with null or empty descriptor map
[DEBUG] 19:02 (XMLClassDescriptorResolverImpl.java:getDescriptor:569)
Get descriptor for: SaveVersion found: null
[DEBUG] 19:02 (XMLClassDescriptorResolverImpl.java:addDescriptor:509)
Adding class name to missing classes: SaveVersion
[DEBUG] 19:02 (UnmarshalHandler.java:startElement:2006)
unable to find FieldDescriptor for 'SaveVersion' in ClassDescriptor of Project
- ignoring extra element.
mspdi_pj14.xsd
Description: Binary data
binding.xsd
Description: Binary dataimport java.io.FileReader; import java.io.FileWriter; import org.apache.log4j.Logger; import org.exolab.castor.xml.Unmarshaller; public class Test1 { public static void main(String[] args) { Logger log = Logger.getLogger("Test1"); Project2010 prj = null; try { Unmarshaller um = new Unmarshaller(Project2010.class); prj = (Project2010) um.unmarshal(new FileReader("Project1.xml")); } catch (Throwable e) { e.printStackTrace(); } } }org.exolab.castor.xml.MarshalException: The field '_saveVersion' (whose xml name is 'SaveVersion') is a required field of class 'Project2010{File: [not availabl e]; line: 6; column: 11} at org.exolab.castor.xml.Unmarshaller.convertSAXExceptionToMarshalExcept ion(Unmarshaller.java:794) at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:760) at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:626) at Test1.main(Test1.java:16) Caused by: ValidationException: The field '_saveVersion' (whose xml name is 'Sav eVersion') is a required field of class 'Project2010; - location of error: XPATH: /Project/SaveVersion at org.exolab.castor.xml.FieldValidator.validate(FieldValidator.java:211 ) at org.exolab.castor.xml.util.XMLClassDescriptorImpl.validateField(XMLCl assDescriptorImpl.java:1050) at org.exolab.castor.xml.util.XMLClassDescriptorImpl.validate(XMLClassDe scriptorImpl.java:1020) at org.exolab.castor.xml.Validator.validate(Validator.java:135) at org.exolab.castor.xml.UnmarshalHandler.endElement(UnmarshalHandler.ja va:933) at org.exolab.castor.xml.UnmarshalHandler.endElement(UnmarshalHandler.ja va:1177) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endEleme nt(AbstractSAXParser.java:601) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp l.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp l$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(X MLDocumentScannerImpl.java:648) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp l.scanDocument(XMLDocumentFragmentScannerImpl.java:510) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(X ML11Configuration.java:807) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(X ML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser. java:107) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Ab stractSAXParser.java:1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.p arse(SAXParserImpl.java:522) at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:748) ... 2 more Caused by: ValidationException: The field '_saveVersion' (whose xml name is 'Sav eVersion') is a required field of class 'Project2010; - location of error: XPATH: /Project/SaveVersion at org.exolab.castor.xml.FieldValidator.validate(FieldValidator.java:211 ) at org.exolab.castor.xml.util.XMLClassDescriptorImpl.validateField(XMLCl assDescriptorImpl.java:1050) at org.exolab.castor.xml.util.XMLClassDescriptorImpl.validate(XMLClassDe scriptorImpl.java:1020) at org.exolab.castor.xml.Validator.validate(Validator.java:135) at org.exolab.castor.xml.UnmarshalHandler.endElement(UnmarshalHandler.ja va:933) at org.exolab.castor.xml.UnmarshalHandler.endElement(UnmarshalHandler.ja va:1177) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endEleme nt(AbstractSAXParser.java:601) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp l.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp l$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(X MLDocumentScannerImpl.java:648) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp l.scanDocument(XMLDocumentFragmentScannerImpl.java:510) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(X ML11Configuration.java:807) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(X ML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser. java:107) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Ab stractSAXParser.java:1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.p arse(SAXParserImpl.java:522) at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:748) at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:626) at Test1.main(Test1.java:16) Caused by: ValidationException: The field '_saveVersion' (whose xml name is 'Sav eVersion') is a required field of class 'Project2010; - location of error: XPATH: /Project/SaveVersion at org.exolab.castor.xml.FieldValidator.validate(FieldValidator.java:211 ) at org.exolab.castor.xml.util.XMLClassDescriptorImpl.validateField(XMLCl assDescriptorImpl.java:1050) at org.exolab.castor.xml.util.XMLClassDescriptorImpl.validate(XMLClassDe scriptorImpl.java:1020) at org.exolab.castor.xml.Validator.validate(Validator.java:135) at org.exolab.castor.xml.UnmarshalHandler.endElement(UnmarshalHandler.ja va:933) at org.exolab.castor.xml.UnmarshalHandler.endElement(UnmarshalHandler.ja va:1177) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endEleme nt(AbstractSAXParser.java:601) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp l.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp l$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(X MLDocumentScannerImpl.java:648) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp l.scanDocument(XMLDocumentFragmentScannerImpl.java:510) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(X ML11Configuration.java:807) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(X ML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser. java:107) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Ab stractSAXParser.java:1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.p arse(SAXParserImpl.java:522) at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:748) at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:626) at Test1.main(Test1.java:16)--------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email

