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