Class ReachabilityAtCommitHandler


  • public class ReachabilityAtCommitHandler
    extends java.lang.Object
    Handler to process "persistence-by-reachability" at commit. This is a feature of the JDO spec that is enabled by default for that API. It runs a cursory check for objects that have been pulled in to be persisted by "persistence-by-reachability" (cascading) but that are no longer needing to be persisted maybe due to the cascading origin object being deleted.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.Set deletedIds
      Reachability : Set of ids of objects deleted using deleteObject.
      private ExecutionContext ec  
      private java.util.Set enlistedIds
      Reachability : Set of ids for all objects enlisted in this transaction.
      private boolean executing
      Flag for whether we are running "persistence-by-reachability" at commit execute() at this point in time.
      private java.util.Set flushedNewIds
      Reachability : Set of ids of objects newly persistent in the current transaction
      private java.util.Set persistedIds
      Reachability : Set of ids of objects persisted using persistObject, or known as already persistent in the current txn.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addDeletedObject​(java.lang.Object id)  
      void addEnlistedObject​(java.lang.Object id)  
      void addFlushedNewObject​(java.lang.Object id)  
      void addPersistedObject​(java.lang.Object id)  
      void clear()
      Method to clear the stored ids of objects involved in the reachability process.
      void execute()
      Method to perform the "persistence-by-reachability" at commit.
      boolean isExecuting()  
      boolean isObjectDeleted​(java.lang.Object id)  
      boolean isObjectEnlisted​(java.lang.Object id)  
      boolean isObjectFlushedNew​(java.lang.Object id)  
      boolean isObjectPersisted​(java.lang.Object id)  
      void swapObjectId​(java.lang.Object oldID, java.lang.Object newID)
      Method that will allow swapping of an "id", for example when an object has recently been assigned its true "id".
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • executing

        private boolean executing
        Flag for whether we are running "persistence-by-reachability" at commit execute() at this point in time.
      • persistedIds

        private java.util.Set persistedIds
        Reachability : Set of ids of objects persisted using persistObject, or known as already persistent in the current txn.
      • deletedIds

        private java.util.Set deletedIds
        Reachability : Set of ids of objects deleted using deleteObject.
      • flushedNewIds

        private java.util.Set flushedNewIds
        Reachability : Set of ids of objects newly persistent in the current transaction
      • enlistedIds

        private java.util.Set enlistedIds
        Reachability : Set of ids for all objects enlisted in this transaction.
    • Constructor Detail

      • ReachabilityAtCommitHandler

        public ReachabilityAtCommitHandler​(ExecutionContext ec)
        Constructor for a reachability-at-commit handler.
        Parameters:
        ec - ExecutionContext that it is for
    • Method Detail

      • clear

        public void clear()
        Method to clear the stored ids of objects involved in the reachability process.
      • isExecuting

        public boolean isExecuting()
      • addEnlistedObject

        public void addEnlistedObject​(java.lang.Object id)
      • isObjectEnlisted

        public boolean isObjectEnlisted​(java.lang.Object id)
      • addPersistedObject

        public void addPersistedObject​(java.lang.Object id)
      • isObjectPersisted

        public boolean isObjectPersisted​(java.lang.Object id)
      • addDeletedObject

        public void addDeletedObject​(java.lang.Object id)
      • isObjectDeleted

        public boolean isObjectDeleted​(java.lang.Object id)
      • addFlushedNewObject

        public void addFlushedNewObject​(java.lang.Object id)
      • isObjectFlushedNew

        public boolean isObjectFlushedNew​(java.lang.Object id)
      • swapObjectId

        public void swapObjectId​(java.lang.Object oldID,
                                 java.lang.Object newID)
        Method that will allow swapping of an "id", for example when an object has recently been assigned its true "id".
        Parameters:
        oldID - The old id that it is registered with. If this is null then we do nothing
        newID - The new id to use in place
      • execute

        public void execute()
        Method to perform the "persistence-by-reachability" at commit.