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 2014/04/04 13:04:25 UTC

git commit: ISIS-762: command target for contributed actions

Repository: isis
Updated Branches:
  refs/heads/master a8a3a0d92 -> 09b6cf91d


ISIS-762: command target for contributed actions

... should capture the contributee, not the contributed service.


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

Branch: refs/heads/master
Commit: 09b6cf91d8f9f3e5318213a5b6b328b8300bf575
Parents: a8a3a0d
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Apr 4 12:04:13 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Apr 4 12:04:13 2014 +0100

----------------------------------------------------------------------
 .../specimpl/ObjectActionContributee.java       | 18 ++++++++++++++++++
 .../invoke/ActionInvocationFacetViaMethod.java  | 20 +++++++++++++-------
 2 files changed, 31 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/09b6cf91/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
index 87a6992..eab2823 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionContributee.java
@@ -27,6 +27,10 @@ import org.apache.isis.applib.annotation.Bulk;
 import org.apache.isis.applib.annotation.Bulk.InteractionContext.InvokedAs;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.filter.Filter;
+import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.command.Command;
+import org.apache.isis.applib.services.command.CommandContext;
+import org.apache.isis.applib.services.command.Command.Executor;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.lang.ObjectExtensions;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -47,6 +51,7 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMemberContext;
 import org.apache.isis.core.progmodel.facets.actions.bulk.BulkFacet;
+import org.apache.isis.core.progmodel.facets.actions.invoke.CommandUtil;
 
 public class ObjectActionContributee extends ObjectActionImpl implements ContributeeMember {
 
@@ -193,6 +198,19 @@ public class ObjectActionContributee extends ObjectActionImpl implements Contrib
             bulkInteractionContext.setDomainObjects(Collections.singletonList(contributee.getObject()));
         }
 
+        final CommandContext commandContext = getServicesProvider().lookupService(CommandContext.class);
+        final Command command = commandContext != null ? commandContext.getCommand() : null;
+
+        if(command != null && command.getExecutor() == Executor.USER) {
+
+            command.setTargetClass(CommandUtil.targetClassNameFor(contributee));
+            command.setTargetAction(CommandUtil.targetActionNameFor(this));
+            command.setArguments(CommandUtil.argDescriptionFor(this, arguments));
+            
+            final Bookmark targetBookmark = CommandUtil.bookmarkFor(contributee);
+            command.setTarget(targetBookmark);
+        }
+        
         return serviceAction.execute(serviceAdapter, argsPlusContributee(contributee, arguments));
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/09b6cf91/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/invoke/ActionInvocationFacetViaMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/invoke/ActionInvocationFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/invoke/ActionInvocationFacetViaMethod.java
index 919a59a..4063b49 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/invoke/ActionInvocationFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/actions/invoke/ActionInvocationFacetViaMethod.java
@@ -143,14 +143,20 @@ public class ActionInvocationFacetViaMethod extends ActionInvocationFacetAbstrac
 
             if(command != null && command.getExecutor() == Executor.USER && owningAction != null) {
 
+                if(command.getTarget() != null) {
+                    // already set up by a ObjectActionContributee;
+                    // don't overwrite
+                } else {
+                    command.setTargetClass(CommandUtil.targetClassNameFor(targetAdapter));
+                    command.setTargetAction(CommandUtil.targetActionNameFor(owningAction));
+                    command.setArguments(CommandUtil.argDescriptionFor(owningAction, arguments));
+                    
+                    final Bookmark targetBookmark = CommandUtil.bookmarkFor(targetAdapter);
+                    command.setTarget(targetBookmark);
+                }
+
                 command.setMemberIdentifier(CommandUtil.actionIdentifierFor(owningAction));
-                command.setTargetClass(CommandUtil.targetClassNameFor(targetAdapter));
-                command.setTargetAction(CommandUtil.targetActionNameFor(owningAction));
-                command.setArguments(CommandUtil.argDescriptionFor(owningAction, arguments));
-                
-                final Bookmark targetBookmark = CommandUtil.bookmarkFor(targetAdapter);
-                command.setTarget(targetBookmark);
-                
+
                 // the background service is used here merely as a means to capture an invocation memento
                 final BackgroundService backgroundService = getServicesInjector().lookupService(BackgroundService.class);
                 if(backgroundService != null) {