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