Andrus/Michael,
Does the following method handle properly creating composite vertical
inheritance objects?
I'm especially curious to know how this compares to what Michael's currently
using.
I've tried to consider every situation whereby an object could be created
and registered
- external to a DataContext
- with createAndRegister
- with registerNewObject
[This situation is a child of SecRole with an inheritance relationship of
[s/g]etRole connecting the child to the parent.]
I've also wrote up a wiki entry for CompositeVerticalInheritance and
inheritance in general.
-Mike
public void setPersistenceState(int persistenceState)
{
super.setPersistenceState(persistenceState);
if (PersistenceState.NEW == persistenceState) {
SecRole parent = getRole();
if (null == parent) { // parent does not exist
if (null != this.getDataContext()) { // child registered in
a DataContext
parent =
(SecRole)dataContext.createAndRegisterNewObject(SecRole.class);
}
else {
parent = new SecRole();
parent.setPersistenceState(PersistenceState.NEW);
}
this.setRole(parent);
}
else { // parent already exists
if (null != this.getDataContext()) { // child registered in
a DataContext
if (null == parent.getDataContext()) {
dataContext.registerNewObject(parent);
}
else if (parent.getDataContext() !=
this.getDataContext()) {
throw new RuntimeException("entity and superEntity
are in different DataContexts.");
}
}
else { // there's no data context
parent = new SecRole();
parent.setPersistenceState(PersistenceState.NEW);
}
}
}
}
This archive was generated by hypermail 2.0.0 : Fri Jun 17 2005 - 13:39:46 EDT