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