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 2016/10/21 15:01:18 UTC
[24/44] isis git commit: ISIS-1497: Fixes unmarshalling of arguments
out of DTO within AbstractIsisSessionTemplate (and leverage this in
BackgroundCommandExecution).
ISIS-1497: Fixes unmarshalling of arguments out of DTO within AbstractIsisSessionTemplate (and leverage this in BackgroundCommandExecution).
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/dc671d0c
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/dc671d0c
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/dc671d0c
Branch: refs/heads/master
Commit: dc671d0c5ea09ccae92faf9373c0b3b0160cdb8f
Parents: fa99caa
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Sep 27 15:01:45 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Sep 27 15:04:36 2016 +0100
----------------------------------------------------------------------
.../background/BackgroundCommandExecution.java | 44 ++++++++++++++------
.../AbstractIsisSessionTemplate.java | 22 +++++++++-
2 files changed, 52 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/dc671d0c/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
index 6362647..9343c11 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/background/BackgroundCommandExecution.java
@@ -35,7 +35,6 @@ import org.apache.isis.applib.services.iactn.Interaction;
import org.apache.isis.applib.services.iactn.InteractionContext;
import org.apache.isis.applib.services.jaxb.JaxbService;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facets.actions.action.invocation.CommandUtil;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -175,11 +174,7 @@ public abstract class BackgroundCommandExecution extends AbstractIsisSessionTemp
for (OidDto targetOidDto : targetOidDtos) {
- final Bookmark bookmark = Bookmark.from(targetOidDto);
- final Object targetObject = bookmarkService.lookup(bookmark);
-
- final ObjectAdapter targetAdapter = adapterFor(targetObject);
-
+ final ObjectAdapter targetAdapter = targetAdapterFor(targetOidDto);
final ObjectAction objectAction = findObjectAction(targetAdapter, memberId);
// we pass 'null' for the mixedInAdapter; if this action _is_ a mixin then
@@ -314,18 +309,41 @@ public abstract class BackgroundCommandExecution extends AbstractIsisSessionTemp
if(arg == null) {
return null;
}
- if(Bookmark.class != argType) {
- return adapterFor(arg);
- } else {
- final Bookmark argBookmark = (Bookmark)arg;
- final RootOid rootOid = RootOid.create(argBookmark);
- return adapterFor(rootOid);
- }
+ return argAdapterFor(argType, arg);
+
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
+ protected ObjectAdapter targetAdapterFor(final OidDto targetOidDto) {
+
+// // this is the original code, but it can be simplified ...
+// // (moved out to separate method so that, if proven wrong, can override as a patch)
+
+// final Bookmark bookmark = Bookmark.from(targetOidDto);
+// final Object targetObject = bookmarkService.lookup(bookmark);
+// final ObjectAdapter targetAdapter = adapterFor(targetObject);
+
+ return adapterFor(targetOidDto);
+ }
+
+ protected ObjectAdapter argAdapterFor(final Class<?> argType, final Object arg) {
+
+// // this is the original code, but it can be simplified ...
+// // (moved out to separate method so that, if proven wrong, can override as a patch)
+
+// if(Bookmark.class != argType) {
+// return adapterFor(arg);
+// } else {
+// final Bookmark argBookmark = (Bookmark)arg;
+// final RootOid rootOid = RootOid.create(argBookmark);
+// return adapterFor(rootOid);
+// }
+
+ return adapterFor(arg);
+ }
+
private ObjectAdapter[] argAdaptersFor(final ActionDto actionDto) {
final List<ParamDto> params = paramDtosFrom(actionDto);
final List<ObjectAdapter> args = Lists.newArrayList(
http://git-wip-us.apache.org/repos/asf/isis/blob/dc671d0c/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java
index df2aa76..1bec4ed 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java
@@ -16,9 +16,9 @@
*/
package org.apache.isis.core.runtime.sessiontemplate;
+import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.adapter.oid.RootOid;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -27,6 +27,7 @@ import org.apache.isis.core.runtime.system.session.IsisSession;
import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
import org.apache.isis.core.runtime.system.transaction.TransactionalClosure;
+import org.apache.isis.schema.common.v1.OidDto;
public abstract class AbstractIsisSessionTemplate {
@@ -82,8 +83,27 @@ public abstract class AbstractIsisSessionTemplate {
// //////////////////////////////////////
protected ObjectAdapter adapterFor(final Object targetObject) {
+ if(targetObject instanceof OidDto) {
+ final OidDto oidDto = (OidDto) targetObject;
+ return adapterFor(oidDto);
+ }
+ if(targetObject instanceof Bookmark) {
+ final Bookmark bookmark = (Bookmark) targetObject;
+ return adapterFor(bookmark);
+ }
return getPersistenceSession().adapterFor(targetObject);
}
+
+ protected ObjectAdapter adapterFor(final OidDto oidDto) {
+ final Bookmark bookmark = Bookmark.from(oidDto);
+ return adapterFor(bookmark);
+ }
+
+ protected ObjectAdapter adapterFor(final Bookmark bookmark) {
+ final RootOid rootOid = RootOid.create(bookmark);
+ return adapterFor(rootOid);
+ }
+
protected ObjectAdapter adapterFor(final RootOid rootOid) {
return getPersistenceSession().adapterFor(rootOid);
}