Hi!

I have a problem with identity descriptor. My object model is like this:

public abstract class BaseClass{

   private Integer id;
   ...
   //getters and setters
}

public abstract class IntermediaryClass extends BaseClass{

   ...
}

public class AClass extends IntermediaryClass{

   private  String member1;
   ...
   //getters and setters
}

public class MainClass{

   private AClass root;
   ....
  //getters and setters
}

Mapping file looks like this:

<mapping>

   <class name=""java_package.IntermediaryClass>
       ...
   </class>

   <class name="java_package.AClass"
extends="java_package.IntermediaryClass" identity="id">
       <field name="member-1" type="string"/>
       <field name="id" type="integer"/>
       ...
   </class>

   <class name="java_package.MainClass">
       <field name="root" type="java_package.AClass">
           <bind-xml name="root" reference="true"/>
       </field>
       ...
   </class>

</mapping>

When I try to marshal this model, I get this error:
Unable to resolve ID for instance of class '
hr.combis.rule.editor.DT.utils.ArithmeticTreeImpl$ArithmeticTreeConnectorNode'
due to the following error: No identity descriptor available
   at org.exolab.castor.xml.Marshaller.getObjectID(Marshaller.java:2018)
   at org.exolab.castor.xml.Marshaller.marshal(Marshaller.java:1657)
   at org.exolab.castor.xml.Marshaller.marshal(Marshaller.java:1861)
   at org.exolab.castor.xml.Marshaller.marshal(Marshaller.java:1861)
   at org.exolab.castor.xml.Marshaller.marshal(Marshaller.java:1861)
   at org.exolab.castor.xml.Marshaller.marshal(Marshaller.java:1855)
   at org.exolab.castor.xml.Marshaller.marshal(Marshaller.java:840)
   at hr.combis.rule.editor.mapping.impl.XMLMappingImpl.marshalRuleModel(
XMLMappingImpl.java:105)
   ... 66 more

Here is ArithmeticTreeImpl$ArithmeticTreeConnectorNode equal to AClass.

I tried to debug and found out that the Castor's method
XMLClassDescriptorImpl.setIdentity(fieldDesc) is never invoked with
fieldDesc=id when XMLClassDescriptorImpl is class descriptor for
ArithmeticTreeImpl$ArithmeticTreeConnectorNode. Identities are set only for
direct subclasses of BaseClass. (BaseClass has few direct concrete
subclasses, they are not specified above.)
Is this a bug or i'm missing something?
Thanks,

Marija

Reply via email to