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