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/15 08:03:23 UTC

[18/50] [abbrv] isis git commit: ISIS-1194: PersistenceSession implements ObjectPersistor API (cf it implementing AdapterManager, QuerySubmitter)

ISIS-1194: PersistenceSession implements ObjectPersistor API (cf it implementing AdapterManager, QuerySubmitter)


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

Branch: refs/heads/master
Commit: 2784cc1ce3891b644ca2d2fafa839fa965cc0577
Parents: 0c3f2f7
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sat Sep 12 09:04:48 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Sep 14 07:36:21 2015 +0100

----------------------------------------------------------------------
 .../system/persistence/PersistenceSession.java  | 31 +++++++++++++++-----
 1 file changed, 24 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/2784cc1c/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 e3f2c33..87b3016 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
@@ -48,6 +48,8 @@ import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.util.ToString;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.ObjectPersistor;
+import org.apache.isis.core.metamodel.adapter.ObjectPersistorAware;
 import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
 import org.apache.isis.core.metamodel.adapter.QuerySubmitterAware;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
@@ -112,7 +114,7 @@ import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.hamcrest.CoreMatchers.nullValue;
 
 public class PersistenceSession implements TransactionalResource, SessionScopedComponent, DebuggableWithTitle, AdapterManager,
-        QuerySubmitter {
+        QuerySubmitter, ObjectPersistor {
 
     private static final Logger LOG = LoggerFactory.getLogger(PersistenceSession.class);
 
@@ -356,21 +358,23 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
             final QuerySubmitterAware cast = QuerySubmitterAware.class.cast(candidate);
             cast.setQuerySubmitter(this);
         }
+        if (ObjectPersistorAware.class.isAssignableFrom(candidate.getClass())) {
+            final ObjectPersistorAware cast = ObjectPersistorAware.class.cast(candidate);
+            cast.setObjectPersistor(this);
+        }
     }
 
     //region > QuerySubmitter impl
 
     @Override
     public <T> List<ObjectAdapter> allMatchingQuery(final Query<T> query) {
-        final ObjectAdapter instances = findInstancesInTransaction(query,
-                QueryCardinality.MULTIPLE);
+        final ObjectAdapter instances = findInstancesInTransaction(query, QueryCardinality.MULTIPLE);
         return CollectionFacetUtils.convertToAdapterList(instances);
     }
 
     @Override
     public <T> ObjectAdapter firstMatchingQuery(final Query<T> query) {
-        final ObjectAdapter instances = findInstancesInTransaction(query,
-                QueryCardinality.SINGLE);
+        final ObjectAdapter instances = findInstancesInTransaction(query, QueryCardinality.SINGLE);
         final List<ObjectAdapter> list = CollectionFacetUtils.convertToAdapterList(instances);
         return list.size() > 0 ? list.get(0) : null;
     }
@@ -894,7 +898,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
             @Override
             public void execute() {
-                makePersistent(adapter);
+                makePersistentTransactionAssumed(adapter);
 
                 // clear out the map of transient -> persistent
                 PersistenceSession.this.persistentByTransient.clear();
@@ -903,7 +907,7 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
         });
     }
 
-    private void makePersistent(final ObjectAdapter adapter) {
+    private void makePersistentTransactionAssumed(final ObjectAdapter adapter) {
         if (alreadyPersistedOrNotPersistable(adapter)) {
             return;
         }
@@ -936,6 +940,19 @@ public class PersistenceSession implements TransactionalResource, SessionScopedC
 
     //endregion
 
+    //region > ObjectPersistor impl
+    @Override
+    public void makePersistent(final ObjectAdapter adapter) {
+        makePersistentInTransaction(adapter);
+    }
+
+    @Override
+    public void remove(final ObjectAdapter adapter) {
+        destroyObjectInTransaction(adapter);
+    }
+    //endregion
+
+
     //region > destroyObjectInTransaction
 
     /**