Reinhard,
that should not happen if everything is configured properly. All I can
think about is that (again) the descriptors are not on the classpath, or
the .castor.cdr file is missing.
Have a look at the generated descriptor class for TopLevelA, and you'll
see that this class has an XML name assigned of 'A'. As such, there
should not be a entry in _missingTypes.
Regards
Werner
PS If I cannot reproduce what you are seeing, it is hard to get an idea
about what's going wrong.
Reinhard Weiss wrote:
> hi,
>
> i have downloaded the most recent snapshot and afterwards debugged into the
> unmarshaller instance.
> i have put an eye on the
> _descriptorCache of the _xmlClassDescriptorResolver in the _internalContext,
> which for some reason does not contain an entry for class 'TopLevelA' in its
> _xmlNameMap
> but contains an entry 'com.xyz.model.A' in its _missingTypes list.
>
> because the element '{http://www.xyz.com/}A' appears twice, i'd say castor
> consequently finds the 'NestedA'
> instead of the required 'TopLevelA' for the document element.
>
> if i have properly configured castor, that seems to be a bug. but i can
> hardly imagine why you can't reproduce that.
> will invest another unit to check the environment.
>
> regards,
> reinhard
>
>
> ps, i have appended castor's debugging output. maybe that helps:
>
> +++ debugging output +++
>
> [Configuration] Configuration loaded from classpath:
> /org/castor/core/castor.core.properties
> [Configuration] Configuration loaded from classpath:
> /org/castor/xml/castor.xml.properties
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] New instance!
> [CastorXMLStrategy] Setting property:
> org.exolab.castor.xml.util.ResolverStrategy.LoadPackageMappings to value: true
> [CastorXMLStrategy] Setting property:
> org.exolab.castor.xml.util.ResolverStrategy.useIntrospection to value: true
> [CastorXMLStrategy] Setting property:
> org.exolab.castor.xml.util.ResolverStrategy.MappingLoader to value: null
> [CastorXMLStrategy] Setting property:
> org.exolab.castor.xml.util.ResolverStrategy.Introspector to value: [EMAIL
> PROTECTED]
> [AbstractResolverPackageCommand] Now in resolve method:
> org.exolab.castor.xml.util.resolvers.ByCDR resolving: com.xyz.model
> [AbstractResolverPackageCommand] No domain class loader set, taking it from
> class.getClassLoader().
> [ByCDR] Found descriptor: class
> com.xyz.model.descriptors.AnotherTypeDescriptor
> [ByCDR] Found descriptor: class com.xyz.model.descriptors.NestedADescriptor
> [ByCDR] Found descriptor: class com.xyz.model.descriptors.SomeTypeDescriptor
> [ByCDR] Found descriptor: class com.xyz.model.descriptors.TopLevelADescriptor
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Adding descriptor class
> for: com.xyz.model.NestedA descriptor: [EMAIL PROTECTED]; descriptor for
> class: [null]; xml name: null
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Adding descriptor class
> for: com.xyz.model.TopLevelA descriptor: [EMAIL PROTECTED]; descriptor for
> class: [null]; xml name: null
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Adding descriptor class
> for: com.xyz.model.AnotherType descriptor: [EMAIL PROTECTED]; descriptor for
> class: [null]; xml name: null
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Adding descriptor class
> for: com.xyz.model.SomeType descriptor: [EMAIL PROTECTED]; descriptor for
> class: [null]; xml name: null
> [AbstractResolverPackageCommand] Now in resolve method:
> org.exolab.castor.xml.util.resolvers.ByPackageMapping resolving: com.xyz.model
> [AbstractResolverPackageCommand] No domain class loader set, taking it from
> class.getClassLoader().
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Called addAllDescriptors
> with null or empty descriptor map
> [XMLContext] Creating new Unmarshaller instance.
> [Configuration] Configuration loaded from classpath:
> /org/castor/core/castor.core.properties
> [Configuration] Configuration loaded from classpath:
> /org/castor/xml/castor.xml.properties
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] New instance!
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Get descriptor for:
> com.xyz.model.A found: null
> [CastorXMLStrategy] Setting property:
> org.exolab.castor.xml.util.ResolverStrategy.LoadPackageMappings to value: true
> [CastorXMLStrategy] Setting property:
> org.exolab.castor.xml.util.ResolverStrategy.useIntrospection to value: true
> [CastorXMLStrategy] Setting property:
> org.exolab.castor.xml.util.ResolverStrategy.MappingLoader to value: null
> [CastorXMLStrategy] Setting property:
> org.exolab.castor.xml.util.ResolverStrategy.Introspector to value: [EMAIL
> PROTECTED]
> [CastorXMLStrategy] Setting property:
> org.exolab.castor.xml.util.ResolverStrategy.ClassLoader to value: [EMAIL
> PROTECTED]
> [CastorXMLStrategy] Setting property:
> org.exolab.castor.xml.util.ResolverStrategy.LoadPackageMappings to value: true
> [CastorXMLStrategy] Setting property:
> org.exolab.castor.xml.util.ResolverStrategy.useIntrospection to value: true
> [CastorXMLStrategy] Setting property:
> org.exolab.castor.xml.util.ResolverStrategy.MappingLoader to value: null
> [CastorXMLStrategy] Setting property:
> org.exolab.castor.xml.util.ResolverStrategy.Introspector to value: [EMAIL
> PROTECTED]
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Get descriptor for:
> com.xyz.model.A found: null
> [AbstractResolverClassCommand] Now in method:
> org.exolab.castor.xml.util.resolvers.ByMappingLoader resolving:
> com.xyz.model.A
> [ByMappingLoader] No mapping loader specified
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Called addAllDescriptors
> with null or empty descriptor map
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Get descriptor for:
> com.xyz.model.A found: null
> [AbstractResolverPackageCommand] Now in resolve method:
> org.exolab.castor.xml.util.resolvers.ByCDR resolving: com.xyz.model
> [ByCDR] Found descriptor: class
> com.xyz.model.descriptors.AnotherTypeDescriptor
> [ByCDR] Found descriptor: class com.xyz.model.descriptors.NestedADescriptor
> [ByCDR] Found descriptor: class com.xyz.model.descriptors.SomeTypeDescriptor
> [ByCDR] Found descriptor: class com.xyz.model.descriptors.TopLevelADescriptor
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Adding descriptor class
> for: com.xyz.model.NestedA descriptor: [EMAIL PROTECTED]; descriptor for
> class: [null]; xml name: null
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Adding descriptor class
> for: com.xyz.model.TopLevelA descriptor: [EMAIL PROTECTED]; descriptor for
> class: [null]; xml name: null
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Adding descriptor class
> for: com.xyz.model.AnotherType descriptor: [EMAIL PROTECTED]; descriptor for
> class: [null]; xml name: null
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Adding descriptor class
> for: com.xyz.model.SomeType descriptor: [EMAIL PROTECTED]; descriptor for
> class: [null]; xml name: null
> [AbstractResolverPackageCommand] Now in resolve method:
> org.exolab.castor.xml.util.resolvers.ByPackageMapping resolving: com.xyz.model
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Called addAllDescriptors
> with null or empty descriptor map
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Get descriptor for:
> com.xyz.model.A found: null
> [AbstractResolverClassCommand] Now in method:
> org.exolab.castor.xml.util.resolvers.ByDescriptorClass resolving:
> com.xyz.model.A
> [ResolveHelpers] Ignored problem at loading class: com.xyz.model.ADescriptor
> through class loader: [EMAIL PROTECTED], exception:
> java.lang.ClassNotFoundException: com.xyz.model.ADescriptor
> [ResolveHelpers] Ignored problem at loading class:
> com.xyz.model.descriptors.ADescriptor through class loader: [EMAIL
> PROTECTED], exception: java.lang.ClassNotFoundException:
> com.xyz.model.descriptors.ADescriptor
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Called addAllDescriptors
> with null or empty descriptor map
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Get descriptor for:
> com.xyz.model.A found: null
> [AbstractResolverClassCommand] Now in method:
> org.exolab.castor.xml.util.resolvers.ByIntrospection resolving:
> com.xyz.model.A
> [ResolveHelpers] Ignored problem at loading class: com.xyz.model.A through
> class loader: [EMAIL PROTECTED], exception: java.lang.ClassNotFoundException:
> com.xyz.model.A
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Called addAllDescriptors
> with null or empty descriptor map
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Get descriptor for:
> com.xyz.model.A found: null
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Adding class name to
> missing classes: com.xyz.model.A
> [UnmarshalHandler] unable to find FieldDescriptor for 'A' in ClassDescriptor
> of A - ignoring extra element.
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Get descriptor for:
> com.xyz.model.NestedA found: [EMAIL PROTECTED]; descriptor for class: [null];
> xml name: null
> [XMLClassDescriptorResolverImpl$DescriptorCacheImpl] Get descriptor for:
> com.xyz.model.NestedA found: [EMAIL PROTECTED]; descriptor for class: [null];
> xml name: null
>
> +++ debugging output +++
>
>
>
> -----Ursprüngliche Nachricht-----
> Von: Werner Guttmann [mailto:[EMAIL PROTECTED]
> Gesendet: Mi 30.07.2008 10:34
> An: [email protected]
> Betreff: Re: AW: [castor-user] unmarshalling equally named/xpath differing
> elements fails with classcastexception
>
> I deployed one by chance the day before yesterday, but I do not think
> that that should make a difference at all (as nothing relevant to your
> area has changed).
>
> Regards
> Werner
>
> Reinhard Weiss wrote:
>> i see, thanks.
>> is there a chance to get a recent [EMAIL PROTECTED]
>>
>> regards, reinhard!
>>
>>
>> -----Ursprüngliche Nachricht-----
>> Von: Werner Guttmann [mailto:[EMAIL PROTECTED]
>> Gesendet: Mo 28.07.2008 13:18
>> An: [email protected]
>> Betreff: Re: [castor-user] unmarshalling equally named/xpath differing
>> elements fails with classcastexception
>>
>> Reinhard,
>>
>> just ran your code (more or less without any modifications) against SVN
>> trunk, and I am *not* getting any exceptions. In other words, the tests
>> completes without any exceptions.
>>
>> Werner
>>
>> Reinhard Weiss wrote:
>>> hi,
>>>
>>> i have an top level (document) element 'A' bound to java class 'TopLevelA'.
>>> further there is a nested element named 'A' as well, which is bound to
>>> 'NestedA'.
>>> (yes, the model is stupid, but i can't change...)
>>>
>>> on unmarshalling i get a 'NestedA' object instead of the expected
>>> 'TopLevelA'.
>>>
>>> i am using the 1.2.1-20080723.084025 snapshot available for download.
>>>
>>>
>>>
>>> in xsd that is:
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>>> xmlns:xyz="http://www.xyz.com/" targetNamespace="http://www.xyz.com/"
>>> elementFormDefault="qualified" attributeFormDefault="unqualified">
>>> <xsd:element name="A" type="xyz:SomeType"/>
>>> <xsd:complexType name="AnotherType">
>>> <xsd:simpleContent>
>>> <xsd:extension base="xsd:string">
>>> </xsd:extension>
>>> </xsd:simpleContent>
>>> </xsd:complexType>
>>> <xsd:complexType name="SomeType">
>>> <xsd:sequence>
>>> <xsd:element name="A" type="xyz:AnotherType"
>>> minOccurs="0" maxOccurs="unbounded"/>
>>> </xsd:sequence>
>>> </xsd:complexType>
>>> </xsd:schema>
>>>
>>>
>>>
>>> the xml could be
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <xyz:A xsi:schemaLocation="http://www.xyz.com/ A.xsd"
>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>> xmlns:xyz="http://www.xyz.com/">
>>> <xyz:A>hello world</xyz:A>
>>> </xyz:A>
>>>
>>>
>>>
>>> the corresponding castor binding, which i wrote is:
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <binding xmlns="http://www.castor.org/SourceGenerator/Binding"
>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>> xsi:schemaLocation="http://www.castor.org/SourceGenerator/Binding
>>> http://castor.org/binding.xsd" defaultBindingType="element">
>>> <package>
>>> <name>com.xyz.model</name>
>>> <namespace>http://www.xyz/</namespace>
>>> </package>
>>> <elementBinding name="/A">
>>> <java-class name="TopLevelA"/>
>>> </elementBinding>
>>> <elementBinding name="/complexType:SomeType/A">
>>> <java-class name="NestedA"/>
>>> </elementBinding>
>>> </binding>
>>>
>>>
>>>
>>> the test fails:
>>>
>>> URL castrCdrUrl =
>>> getClass().getClassLoader().getResource("com/xyz/model/.castor.cdr");
>>> assertNotNull(castrCdrUrl);
>>> assertTrue(castrCdrUrl.toString().contains("classes"));
>>> assertTrue(new File(castrCdrUrl.toURI()).exists());
>>>
>>> XMLContext context = new XMLContext();
>>> context.addPackage("com.xyz.model");
>>> Unmarshaller unmarshaller = context.createUnmarshaller();
>>>
>>> InputStream xmlStream =
>>> getClass().getClassLoader().getResourceAsStream("A.xml");
>>> assertNotNull(xmlStream);
>>>
>>> DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
>>> DocumentBuilder builder = factory.newDocumentBuilder();
>>> InputSource is = new InputSource(xmlStream);
>>> Document xmlDocument = builder.parse(is);
>>>
>>> TopLevelA topLevelA = (TopLevelA) unmarshaller.unmarshal(xmlDocument);
>>> // <- classcastexception
>>>
>>> assertNotNull(topLevelA);
>>> assertNotNull(topLevelA.getNestedA(0));
>>> assertEquals("hello world", topLevelA.getNestedA(0).getContent());
>>>
>>>
>>>
>>> is this an issue to be reported via jira?
>>>
>>> regards,
>>>
>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>
>>> DI Reinhard Weiss
>>>
>>> ANECON Software Design und Beratung G.m.b.H.
>>>
>>> Web: http://www.anecon.com
>>>
>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>
>>> Zusätzliche Pflichtangaben von Kapitalgesellschaften gem. § 14 UGB:
>>> FN166941b | Handelsgericht Wien | Firmensitz Wien
>>>
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe from this list, please visit:
>>>
>>> http://xircles.codehaus.org/manage_email
>>>
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe from this list, please visit:
>>
>> http://xircles.codehaus.org/manage_email
>>
>>
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> ---------------------------------------------------------------------
>> To unsubscribe from this list, please visit:
>>
>> http://xircles.codehaus.org/manage_email
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
> http://xircles.codehaus.org/manage_email
>
>
>
>
>
> ------------------------------------------------------------------------
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
> http://xircles.codehaus.org/manage_email
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email