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/05/24 14:19:59 UTC

[2/2] git commit: ISIS-550: fixing regression on background commands.

ISIS-550: fixing regression on background commands.

Need to set up the command context within the xactn.


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

Branch: refs/heads/master
Commit: 3331ddfadf4838e0d096fd019809a9c2afa18e3c
Parents: cd9f1e7
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sat May 24 13:19:34 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sat May 24 13:19:34 2014 +0100

----------------------------------------------------------------------
 .../background/BackgroundCommandExecution.java  | 77 ++++++++++----------
 1 file changed, 38 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/3331ddfa/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 689e1d6..ff50f6b 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
@@ -17,17 +17,15 @@
 package org.apache.isis.core.runtime.services.background;
 
 import java.util.List;
-
 import com.google.common.base.Throwables;
 import com.google.common.collect.Lists;
-
 import org.apache.isis.applib.clock.Clock;
 import org.apache.isis.applib.services.background.ActionInvocationMemento;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 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.applib.services.command.CommandContext;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOidDefault;
@@ -86,44 +84,45 @@ public abstract class BackgroundCommandExecution extends AbstractIsisSessionTemp
 
     
     private void execute(final IsisTransactionManager transactionManager, final Command command) {
-        commandContext.setCommand(command);
-            transactionManager.executeWithinTransaction(new TransactionalClosureAbstract() {
-                @Override
-                public void execute() {
-                    try {
-                        command.setStartedAt(Clock.getTimeAsJavaSqlTimestamp());
-                        command.setExecutor(Executor.BACKGROUND);
-                        
-                        final String memento = command.getMemento();
-                        final ActionInvocationMemento aim = new ActionInvocationMemento(mementoService, memento);
-                        
-                        final String actionId = aim.getActionId();
-               
-                        final Bookmark targetBookmark = aim.getTarget();
-                        final Object targetObject = bookmarkService.lookup(targetBookmark);
-                        
-                        final ObjectAdapter targetAdapter = adapterFor(targetObject);
-                        final ObjectSpecification specification = targetAdapter.getSpecification();
-               
-                        final ObjectAction objectAction = findAction(specification, actionId);
-                        if(objectAction == null) {
-                            throw new Exception("Unknown action '" + actionId + "'");
-                        }
-                        
-                        final ObjectAdapter[] argAdapters = argAdaptersFor(aim);
-                        final ObjectAdapter resultAdapter = objectAction.execute(targetAdapter, argAdapters);
-                        if(resultAdapter != null) {
-                            Bookmark resultBookmark = CommandUtil.bookmarkFor(resultAdapter);
-                            command.setResult(resultBookmark);
-                        }
-
-                    } catch (Exception e) {
-                        command.setException(Throwables.getStackTraceAsString(e));
-                    } finally {
-                        command.setCompletedAt(Clock.getTimeAsJavaSqlTimestamp());
+        transactionManager.executeWithinTransaction(new TransactionalClosureAbstract() {
+            @Override
+            public void execute() {
+                commandContext.setCommand(command);
+                try {
+
+                    command.setStartedAt(Clock.getTimeAsJavaSqlTimestamp());
+                    command.setExecutor(Executor.BACKGROUND);
+
+                    final String memento = command.getMemento();
+                    final ActionInvocationMemento aim = new ActionInvocationMemento(mementoService, memento);
+
+                    final String actionId = aim.getActionId();
+
+                    final Bookmark targetBookmark = aim.getTarget();
+                    final Object targetObject = bookmarkService.lookup(targetBookmark);
+
+                    final ObjectAdapter targetAdapter = adapterFor(targetObject);
+                    final ObjectSpecification specification = targetAdapter.getSpecification();
+
+                    final ObjectAction objectAction = findAction(specification, actionId);
+                    if(objectAction == null) {
+                        throw new Exception("Unknown action '" + actionId + "'");
                     }
+
+                    final ObjectAdapter[] argAdapters = argAdaptersFor(aim);
+                    final ObjectAdapter resultAdapter = objectAction.execute(targetAdapter, argAdapters);
+                    if(resultAdapter != null) {
+                        Bookmark resultBookmark = CommandUtil.bookmarkFor(resultAdapter);
+                        command.setResult(resultBookmark);
+                    }
+
+                } catch (Exception e) {
+                    command.setException(Throwables.getStackTraceAsString(e));
+                } finally {
+                    command.setCompletedAt(Clock.getTimeAsJavaSqlTimestamp());
                 }
-            });
+            }
+        });
     }
 
     private ObjectAction findAction(final ObjectSpecification specification, final String actionId) {