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

Reply via email to