Uploaded image for project: 'Isis'
  1. Isis
  2. 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.

    Details

      Description

      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; }

      ...
      }

        Attachments

          Activity

            People

            • Assignee:
              danhaywood Dan Haywood
              Reporter:
              danhaywood Dan Haywood
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: