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) {