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);
     }