You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Dan Haywood (JIRA)" <ji...@apache.org> on 2013/10/25 10:49:36 UTC
[jira] [Closed] (ISIS-476) Update JDO/DN to allow for fact that
invoking the Persisting callback may have resulted in the target object
having already been updated.
[ https://issues.apache.org/jira/browse/ISIS-476?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dan Haywood closed ISIS-476.
----------------------------
> 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.3.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 was sent by Atlassian JIRA
(v6.1#6144)