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


Reply via email to