Dan Haywood created ISIS-476:
--------------------------------
Summary: Update JDO/DN to allow for fact that invoking the
Persisting callback may have resulted in the target object having already been
updated.
Key: ISIS-476
URL: https://issues.apache.org/jira/browse/ISIS-476
Project: Isis
Issue Type: Bug
Components: Objectstore: JDO
Affects Versions: objectstore-jdo-1.1.0
Reporter: Dan Haywood
Assignee: Dan Haywood
Priority: Minor
Fix For: objectstore-jdo-1.2.0
This issue was found while working on Estatio app:
public class CommunicationChannel {
....
/**
* Isis callback
*/
public void persisting() {
owner.addToCommunicationChannels(this);
}
}
correctly generates the INSERT of the owner/CC tuple (eg into
PARTY_COMMUNICATIONCHANNELS), but then Isis throws an exception.
The fix is to add a guard in DataNucleusSimplePersistAlgorithm:
public void makePersistent(final ObjectAdapter adapter,
final ToPersistObjectSet toPersistObjectSet) {
...
CallbackUtils.callCallback(adapter, PersistingCallbackFacet.class);
// the callback might have caused the adapter to become persistent.
if (alreadyPersistedOrNotPersistable(adapter)) {
return;
}
...
}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira