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/04/22 19:23:10 UTC
[3/4] isis git commit: ISIS-1291: re-implementing BulkActionsLink so
that each action is in its own transaction (with its own command).
ISIS-1291: re-implementing BulkActionsLink so that each action is in its own transaction (with its own command).
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/d2b3f6c3
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/d2b3f6c3
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/d2b3f6c3
Branch: refs/heads/ISIS-1291
Commit: d2b3f6c3c62160614724e2a48996fcab0d5434ee
Parents: a5f3ec1
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Apr 22 14:56:31 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Apr 22 14:56:31 2016 +0100
----------------------------------------------------------------------
.../collection/bulk/BulkActionsLinkFactory.java | 35 ++++++++++----------
1 file changed, 18 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/d2b3f6c3/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
index 2a3dc52..12682d5 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
@@ -19,32 +19,33 @@
package org.apache.isis.viewer.wicket.ui.components.collection.bulk;
import java.util.List;
-import java.util.concurrent.Callable;
import com.google.common.base.Predicate;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
+
import org.apache.wicket.Session;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.markup.html.link.Link;
+
import org.apache.isis.applib.RecoverableException;
-import org.apache.isis.applib.services.actinvoc.ActionInvocationContext;
import org.apache.isis.applib.annotation.Bulk;
-import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.applib.annotation.InvokedOn;
+import org.apache.isis.applib.services.actinvoc.ActionInvocationContext;
import org.apache.isis.applib.services.command.Command;
import org.apache.isis.applib.services.command.Command.Executor;
import org.apache.isis.applib.services.command.CommandContext;
+import org.apache.isis.applib.services.xactn.TransactionService;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
import org.apache.isis.core.commons.authentication.MessageBroker;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionDefault;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.mementos.ActionMemento;
@@ -111,18 +112,19 @@ public final class BulkActionsLinkFactory implements ActionLinkFactory {
bulkInteractionContext.setDomainObjects(domainObjects);
}
- final CommandContext commandContext = getServicesInjector().lookupService(CommandContext.class);
- final Command command;
- if (commandContext != null) {
- command = commandContext.getCommand();
- command.setExecutor(Executor.USER);
- }
ObjectAdapter lastReturnedAdapter = null;
int i=0;
for(final ObjectAdapter adapter : toggledAdapters) {
+ final CommandContext commandContext = getServicesInjector().lookupService(CommandContext.class);
+ final Command command;
+ if (commandContext != null) {
+ command = commandContext.getCommand();
+ command.setExecutor(Executor.USER);
+ }
+
int numParameters = objectAction.getParameterCount();
if(numParameters != 0) {
return;
@@ -131,13 +133,12 @@ public final class BulkActionsLinkFactory implements ActionLinkFactory {
bulkInteractionContext.setIndex(i++);
}
- lastReturnedAdapter = ObjectActionDefault.withTargetAdapters(toggledAdapters, new Callable<ObjectAdapter>() {
- @Override public ObjectAdapter call() throws Exception {
- return objectAction.executeWithRuleChecking(adapter, new ObjectAdapter[]{},
- InteractionInitiatedBy.USER, ActionModel.WHERE_FOR_ACTION_INVOCATION
- );
- }
- });
+ lastReturnedAdapter = objectAction.executeWithRuleChecking(adapter, new ObjectAdapter[]{},
+ InteractionInitiatedBy.USER, ActionModel.WHERE_FOR_ACTION_INVOCATION
+ );
+ TransactionService transactionService =
+ getServicesInjector().lookupService(TransactionService.class);
+ transactionService.nextTransaction();
}