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/10 14:07:06 UTC

[07/50] [abbrv] isis git commit: ISIS-1194: working towards combining ObjectStore and PersistenceSession...

ISIS-1194: working towards combining ObjectStore and PersistenceSession...

... moved lazilyLoaded() from ObjectStore to PersistenceSession


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

Branch: refs/heads/ISIS-1194
Commit: 9964907b3b41ab284b76bd34301112d0a6a814ee
Parents: 9c17f78
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 10 08:19:04 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 10 08:19:04 2015 +0100

----------------------------------------------------------------------
 .../adaptermanager/PojoRecreator.java           | 14 +++-----
 .../runtime/system/persistence/ObjectStore.java | 12 +------
 .../system/persistence/PersistenceSession.java  | 37 ++++++++++++++++----
 3 files changed, 35 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/9964907b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoRecreator.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoRecreator.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoRecreator.java
index 9821c14..e3f17ce 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoRecreator.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/persistence/adaptermanager/PojoRecreator.java
@@ -23,7 +23,6 @@ import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.runtime.system.persistence.ObjectStore;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 
 public class PojoRecreator {
@@ -47,7 +46,8 @@ public class PojoRecreator {
     }
 
     private Object recreatePojoDefault(final RootOid rootOid) {
-        final ObjectSpecification spec = getSpecificationLoader().lookupBySpecId(rootOid.getObjectSpecId());
+        final ObjectSpecification spec =
+                getSpecificationLoader().lookupBySpecId(rootOid.getObjectSpecId());
         final Object pojo = spec.createObject();
         if(rootOid.isViewModel()) {
             // initialize the view model pojo from the oid's identifier
@@ -66,18 +66,17 @@ public class PojoRecreator {
 
 
 
-
     /**
      * Return an adapter, if possible, for a pojo that was instantiated by the
      * object store as a result of lazily loading, but which hasn't yet been seen
      * by the Isis framework.
      *
      * <p>
-     * For example, in the case of JDO object store, downcast to <tt>PersistenceCapable</tt>
+     * In the case of JDO object store, downcast to <tt>Persistence</tt>
      * and 'look inside' its state.
      */
     public ObjectAdapter lazilyLoaded(Object pojo) {
-        return getObjectStore().lazilyLoaded(pojo);
+        return persistenceSession.lazilyLoaded(pojo);
     }
 
     ///////////////////////////////
@@ -91,9 +90,4 @@ public class PojoRecreator {
         return persistenceSession;
     }
 
-    protected ObjectStore getObjectStore() {
-        return getPersistenceSession().getObjectStore();
-    }
-
-
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/9964907b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java
index 3067c67..97518ea 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/ObjectStore.java
@@ -219,17 +219,7 @@ public class ObjectStore implements TransactionalResource, DebuggableWithTitle,
 
 
 
-    //region > loadPojo, lazilyLoaded, resolveImmediately
-
-
-    public ObjectAdapter lazilyLoaded(Object pojo) {
-        if(!(pojo instanceof Persistable)) {
-            return null;
-        } 
-        final Persistable persistenceCapable = (Persistable) pojo;
-        return frameworkSynchronizer.lazilyLoaded(persistenceCapable, CalledFrom.OS_LAZILYLOADED);
-    }
-
+    //region > resolveImmediately
 
 
     public void resolveImmediately(final ObjectAdapter adapter) {

http://git-wip-us.apache.org/repos/asf/isis/blob/9964907b/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 a2d9bf2..bf28ceb 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
@@ -28,6 +28,7 @@ import javax.jdo.PersistenceManager;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
+import org.datanucleus.enhancement.Persistable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -106,6 +107,7 @@ public class PersistenceSession implements SessionScopedComponent, DebuggableWit
 
     // not final only for testing purposes
     private IsisTransactionManager transactionManager;
+    private final FrameworkSynchronizer frameworkSynchronizer;
 
     /**
      * Initialize the object store so that calls to this object store access
@@ -128,9 +130,10 @@ public class PersistenceSession implements SessionScopedComponent, DebuggableWit
         this.servicesInjector = persistenceSessionFactory.getServicesInjector();
 
         // sub-components
-        final DataNucleusApplicationComponents applicationComponents = persistenceSessionFactory .getApplicationComponents();
+        final DataNucleusApplicationComponents applicationComponents = persistenceSessionFactory.getApplicationComponents();
         this.objectStore = new ObjectStore(this, specificationLoader, configuration, applicationComponents);
 
+        frameworkSynchronizer = applicationComponents.getFrameworkSynchronizer();
         this.objectFactory = new ObjectFactory(this, servicesInjector);
         this.oidGenerator = new OidGenerator(this, specificationLoader);
 
@@ -524,12 +527,13 @@ public class PersistenceSession implements SessionScopedComponent, DebuggableWit
     }
 
     private ObjectAdapter loadMappedObjectFromObjectStore(final RootOid oid) {
-        final ObjectAdapter adapter = getTransactionManager().executeWithinTransaction(new TransactionalClosureWithReturnAbstract<ObjectAdapter>() {
-            @Override
-            public ObjectAdapter execute() {
-                return loadInstanceAndAdapt(oid);
-            }
-        });
+        final ObjectAdapter adapter = getTransactionManager().executeWithinTransaction(
+                new TransactionalClosureWithReturnAbstract<ObjectAdapter>() {
+                    @Override
+                    public ObjectAdapter execute() {
+                        return loadInstanceAndAdapt(oid);
+                    }
+                });
         return adapter;
     }
 
@@ -587,6 +591,9 @@ public class PersistenceSession implements SessionScopedComponent, DebuggableWit
         return getAdapterManager().mapRecreatedPojo(oid, pojo);
     }
 
+
+    //endregion
+
     //region > loadPojo
 
 
@@ -631,12 +638,28 @@ public class PersistenceSession implements SessionScopedComponent, DebuggableWit
 
     //endregion
 
+    //region > transactions
+
     void ensureInTransaction() {
         objectStore.ensureInTransaction();
     }
 
     //endregion
 
+    //region > lazilyLoaded
+
+    public ObjectAdapter lazilyLoaded(Object pojo) {
+        if(!(pojo instanceof Persistable)) {
+            return null;
+        }
+        final Persistable persistenceCapable = (Persistable) pojo;
+        return frameworkSynchronizer.lazilyLoaded(persistenceCapable, FrameworkSynchronizer.CalledFrom.OS_LAZILYLOADED);
+    }
+
+    //endregion
+
+
+
     //region > resolveImmediately, resolveField
 
     /**