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 2017/09/21 10:41:52 UTC

[5/6] isis git commit: ISIS-1733: updates RepositoryService and its framework implementation so that persist and persistAndFlush are now generic and return the supplied object ... allow for more fluent coding style

ISIS-1733: updates RepositoryService and its framework implementation so that persist and persistAndFlush are now generic and return the supplied object ... allow for more fluent coding style


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

Branch: refs/heads/master
Commit: 3076e5b796e30005f536eb8bcdd24b3f4ddca9b3
Parents: f8ecbde
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Sep 21 11:23:47 2017 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Sep 21 11:23:47 2017 +0100

----------------------------------------------------------------------
 .../services/repository/RepositoryService.java     |  4 ++--
 .../RepositoryServiceInternalDefault.java          | 17 ++++++++++-------
 2 files changed, 12 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/3076e5b7/core/applib/src/main/java/org/apache/isis/applib/services/repository/RepositoryService.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/repository/RepositoryService.java b/core/applib/src/main/java/org/apache/isis/applib/services/repository/RepositoryService.java
index 49cbe08..46f77b9 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/repository/RepositoryService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/repository/RepositoryService.java
@@ -72,7 +72,7 @@ public interface RepositoryService {
      * @see #isPersistent(Object)
      */
     @Programmatic
-    void persist(Object domainObject);
+    <T> T persist(T domainObject);
     
     /**
      * Persist the specified object (or do nothing if already persistent) and flushes changes to the database.
@@ -80,7 +80,7 @@ public interface RepositoryService {
      * @see #persist(Object)
      */
     @Programmatic
-    void persistAndFlush(Object domainObject);
+    <T> T persistAndFlush(T domainObject);
 
     /**
      * Deletes the domain object but only if is persistent.

http://git-wip-us.apache.org/repos/asf/isis/blob/3076e5b7/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java
index e692dc2..15853c1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/repository/RepositoryServiceInternalDefault.java
@@ -78,30 +78,33 @@ public class RepositoryServiceInternalDefault implements RepositoryService {
 
     @Programmatic
     @Override
-    public void persist(final Object object) {
+    public <T> T persist(final T object) {
         if (isPersistent(object)) {
-            return;
+            return object;
         }
         final ObjectAdapter adapter = persistenceSessionServiceInternal.adapterFor(unwrapped(object));
 
         if(adapter == null) {
-            throw new PersistFailedException("Object not known to framework; instantiate using newTransientInstance(...) rather than simply new'ing up.");
+            throw new PersistFailedException("Object not known to framework (unable to create/obtain an adapter)");
         }
         if (adapter.isParentedCollection()) {
             // TODO check aggregation is supported
-            return;
+            return  object;
         }
         if (isPersistent(object)) {
             throw new PersistFailedException("Object already persistent; OID=" + adapter.getOid());
         }
         persistenceSessionServiceInternal.makePersistent(adapter);
+
+        return object;
     }
     
     @Programmatic
     @Override
-    public void persistAndFlush(final Object object) {
-	persist(object);
-	transactionService.flushTransaction();
+    public <T> T persistAndFlush(final T object) {
+        persist(object);
+        transactionService.flushTransaction();
+        return object;
     }
 
     @Override