You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/09/11 00:09:03 UTC

[39/50] isis git commit: ISIS-1194: inlining postStoreProcessingFor from FrameworkSynchronizer to PersistenceSession

ISIS-1194: inlining postStoreProcessingFor from FrameworkSynchronizer to PersistenceSession


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/6748065c
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/6748065c
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/6748065c

Branch: refs/heads/master
Commit: 6748065c0ad89c518285881c5c3b84ad36b4b945
Parents: 195de3d
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 16:47:28 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 16:47:28 2015 +0100

----------------------------------------------------------------------
 .../persistence/FrameworkSynchronizer.java      | 48 -----------------
 .../system/persistence/PersistenceSession.java  | 55 +++++++++++++++++++-
 2 files changed, 53 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/6748065c/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
index 0340ca0..12ce154 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/FrameworkSynchronizer.java
@@ -21,8 +21,6 @@ package org.apache.isis.core.runtime.system.persistence;
 import java.text.MessageFormat;
 import java.util.concurrent.Callable;
 
-import javax.jdo.JDOHelper;
-
 import org.datanucleus.enhancement.Persistable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -37,10 +35,8 @@ import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.LoadedCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.PersistedCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedCallbackFacet;
 import org.apache.isis.core.runtime.system.transaction.IsisTransaction;
 
 public class FrameworkSynchronizer {
@@ -177,50 +173,6 @@ public class FrameworkSynchronizer {
         }, calledFrom);
     }
 
-    /**
-     * Called either when an entity is initially persisted, or when an entity is updated; fires the appropriate lifecycle callback
-     *
-     * <p>
-     * The implementation therefore uses Isis' {@link org.apache.isis.core.metamodel.adapter.oid.Oid#isTransient() oid}
-     * to determine which callback to fire.
-     */
-    public void postStoreProcessingFor(final Persistable pojo, CalledFrom calledFrom) {
-        withLogging(pojo, new Runnable() {
-            @Override
-            public void run() {
-                ensureRootObject(pojo);
-
-                // assert is persistent
-                if(!pojo.dnIsPersistent()) {
-                    throw new IllegalStateException("Pojo JDO state is not persistent! pojo dnOid: " + JDOHelper.getObjectId(pojo));
-                }
-
-                final ObjectAdapter adapter = persistenceSession.getAdapterFor(pojo);
-                final RootOid isisOid = (RootOid) adapter.getOid();
-
-
-                if (isisOid.isTransient()) {
-                    // persisting
-                    final RootOid persistentOid = persistenceSession.createPersistentOrViewModelOid(pojo);
-
-                    persistenceSession.remapAsPersistent(adapter, persistentOid);
-
-                    CallbackFacet.Util.callCallback(adapter, PersistedCallbackFacet.class);
-
-                    final IsisTransaction transaction = persistenceSession.getCurrentTransaction();
-                    transaction.enlistCreated(adapter);
-                } else {
-                    // updating;
-                    // the callback and transaction.enlist are done in the preDirty callback
-                    // (can't be done here, as the enlist requires to capture the 'before' values)
-                    CallbackFacet.Util.callCallback(adapter, UpdatedCallbackFacet.class);
-                }
-
-                Version versionIfAny = getVersionIfAny(pojo);
-                adapter.setVersion(versionIfAny);
-            }
-        }, calledFrom);
-    }
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/6748065c/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
index 24f2adb..d1f3b31 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
@@ -27,6 +27,7 @@ import java.util.concurrent.Callable;
 
 import javax.jdo.FetchGroup;
 import javax.jdo.FetchPlan;
+import javax.jdo.JDOHelper;
 import javax.jdo.PersistenceManager;
 
 import com.google.common.collect.Lists;
@@ -54,8 +55,11 @@ import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.oid.ParentedCollectionOid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.metamodel.adapter.version.Version;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.PersistedCallbackFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.services.ServiceUtil;
@@ -765,7 +769,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         return lazilyLoaded(persistenceCapable, FrameworkSynchronizer.CalledFrom.OS_LAZILYLOADED);
     }
 
-    public ObjectAdapter lazilyLoaded(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
+    private ObjectAdapter lazilyLoaded(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
         return withLogging(pojo, new Callable<ObjectAdapter>() {
             @Override
             public ObjectAdapter call() {
@@ -1226,10 +1230,57 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         frameworkSynchronizer.preStoreProcessingFor(pojo, calledFrom);
     }
 
+    /**
+     * Called either when an entity is initially persisted, or when an entity is updated;
+     * fires the appropriate lifecycle callback
+     *
+     * <p>
+     * The implementation therefore uses Isis' {@link org.apache.isis.core.metamodel.adapter.oid.Oid#isTransient() oid}
+     * to determine which callback to fire.
+     */
     public void postStoreProcessingFor(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
-        frameworkSynchronizer.postStoreProcessingFor(pojo, calledFrom);
+        withLogging(pojo, new Runnable() {
+            @Override
+            public void run() {
+                ensureRootObject(pojo);
+
+                // assert is persistent
+                if (!pojo.dnIsPersistent()) {
+                    throw new IllegalStateException(
+                            "Pojo JDO state is not persistent! pojo dnOid: " + JDOHelper.getObjectId(pojo));
+                }
+
+                final ObjectAdapter adapter = getAdapterFor(pojo);
+                final RootOid isisOid = (RootOid) adapter.getOid();
+
+                if (isisOid.isTransient()) {
+                    // persisting
+                    final RootOid persistentOid = createPersistentOrViewModelOid(pojo);
+
+                    remapAsPersistent(adapter, persistentOid);
+
+                    CallbackFacet.Util.callCallback(adapter, PersistedCallbackFacet.class);
+
+                    final IsisTransaction transaction = getCurrentTransaction();
+                    transaction.enlistCreated(adapter);
+                } else {
+                    // updating;
+                    // the callback and transaction.enlist are done in the preDirty callback
+                    // (can't be done here, as the enlist requires to capture the 'before' values)
+                    CallbackFacet.Util.callCallback(adapter, UpdatedCallbackFacet.class);
+                }
+
+                Version versionIfAny = getVersionIfAny(pojo);
+                adapter.setVersion(versionIfAny);
+            }
+        }, calledFrom);
     }
 
+    private Version getVersionIfAny(final Persistable pojo) {
+        return Utils.getVersionIfAny(pojo, authenticationSession);
+    }
+
+
     public void preDirtyProcessingFor(final Persistable pojo, FrameworkSynchronizer.CalledFrom calledFrom) {
         withLogging(pojo, new Runnable() {
             @Override