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/09/27 14:16:39 UTC

[1/3] isis git commit: ISIS-1495: adds RESTART as a further value for SessionLoggingService#CausedBy

Repository: isis
Updated Branches:
  refs/heads/maint-1.13.1 5d1438a66 -> 06d95ab91


ISIS-1495: adds RESTART as a further value for SessionLoggingService#CausedBy


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

Branch: refs/heads/maint-1.13.1
Commit: fa99caaf905e007baaa062a8be6cbbca6b9fc814
Parents: 5d1438a
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Sep 27 14:38:54 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Sep 27 15:04:28 2016 +0100

----------------------------------------------------------------------
 .../isis/applib/services/session/SessionLoggingService.java   | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/fa99caaf/core/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingService.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingService.java b/core/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingService.java
index 4e67b90..84d137a 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/session/SessionLoggingService.java
@@ -18,10 +18,10 @@
  */
 package org.apache.isis.applib.services.session;
 
-import java.util.Date;
-
 import org.apache.isis.applib.annotation.Programmatic;
 
+import java.util.Date;
+
 /**
  * Similar to the {@link org.apache.isis.applib.services.audit.AuditingService3}, this defines an API to track
  * the status of the current sessions (&quot;users logged on&quot;) on the system.
@@ -35,7 +35,8 @@ public interface SessionLoggingService {
 
     public enum CausedBy {
         USER,
-        SESSION_EXPIRATION
+        SESSION_EXPIRATION,
+        RESTART
     }
 
     @Programmatic


[3/3] isis git commit: ISIS-1498: introduces new clearAbortCauseAndContinue() internal API for IsisTransaction, and leverage within BackgroundCommandExecution for the case where an action throws an exception (want to capture that, mark on the background

Posted by da...@apache.org.
ISIS-1498: introduces new clearAbortCauseAndContinue() internal API for IsisTransaction, and leverage within BackgroundCommandExecution for the case where an action throws an exception (want to capture that, mark on the background Command, and persist).


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

Branch: refs/heads/maint-1.13.1
Commit: 06d95ab91a69e8f8e5513fef40fe086259f69a80
Parents: dc671d0
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Sep 27 15:03:19 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Sep 27 15:04:43 2016 +0100

----------------------------------------------------------------------
 .../background/BackgroundCommandExecution.java   | 19 +++++++++++--------
 .../system/transaction/IsisTransaction.java      | 15 +++++++++++++--
 2 files changed, 24 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/06d95ab9/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 9343c11..ba6d03d 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
@@ -217,18 +217,21 @@ public abstract class BackgroundCommandExecution extends AbstractIsisSessionTemp
                     }
 
                 } catch (RuntimeException e) {
-                    // this doesn't really make sense if >1 action
-                    // in any case, the capturing of the action interaction should be the
-                    // responsibility of auditing/profiling
+                    // hmmm, this doesn't really make sense if >1 action
+                    //
+                    // in any case, the capturing of the result of the action invocation should be the
+                    // responsibility of the interaction...
                     backgroundCommand.setException(Throwables.getStackTraceAsString(e));
 
-                    // alternatively, could have used ...
-                    Exception unused = backgroundInteraction.getPriorExecution().getThrew();
-
-                    backgroundInteraction.getCurrentExecution().setThrew(e);
+                    // lower down the stack the IsisTransactionManager will have set the transaction to abort
+                    // however, we don't want that to occur (because any changes made to the backgroundCommand itself
+                    // would also be rolled back, and it would keep getting picked up again by a scheduler for
+                    // processing); instead we clear the abort cause and ensure we can continue.
+                    transactionManager.getCurrentTransaction().clearAbortCauseAndContinue();
                 }
 
-                backgroundCommand.setCompletedAt(backgroundInteraction.getPriorExecution().getCompletedAt());
+                final Interaction.Execution priorExecution = backgroundInteraction.getPriorExecution();
+                backgroundCommand.setCompletedAt(priorExecution.getCompletedAt());
             }
 
             private ObjectAction findObjectAction(

http://git-wip-us.apache.org/repos/asf/isis/blob/06d95ab9/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
index ace6b3c..f7eaf60 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/transaction/IsisTransaction.java
@@ -472,8 +472,12 @@ public class IsisTransaction implements TransactionScopedComponent, Transaction
      * 
      * <p>
      * If the cause is subsequently rendered by code higher up the stack, then the
-     * cause can be {@link #clearAbortCause() cleared}.  However, it is not possible
-     * to change the state from {@link State#MUST_ABORT}.
+     * cause can be {@link #clearAbortCause() cleared}.  Note that this keeps the transaction in a state of
+     * {@link State#MUST_ABORT}.
+     *
+     * <p>
+     * If the cause is to be discarded completely (eg background command execution), then
+     * {@link #clearAbortCauseAndContinue()} can be used.
      */
     public void setAbortCause(IsisException abortCause) {
         setState(State.MUST_ABORT);
@@ -489,6 +493,13 @@ public class IsisTransaction implements TransactionScopedComponent, Transaction
         abortCause = null;
     }
 
+    public void clearAbortCauseAndContinue() {
+        setState(State.IN_PROGRESS);
+        clearAbortCause();
+    }
+
+
+
 
     //endregion
 


[2/3] isis git commit: ISIS-1497: Fixes unmarshalling of arguments out of DTO within AbstractIsisSessionTemplate (and leverage this in BackgroundCommandExecution).

Posted by da...@apache.org.
ISIS-1497: Fixes unmarshalling of arguments out of DTO within AbstractIsisSessionTemplate (and leverage this in BackgroundCommandExecution).


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

Branch: refs/heads/maint-1.13.1
Commit: dc671d0c5ea09ccae92faf9373c0b3b0160cdb8f
Parents: fa99caa
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Sep 27 15:01:45 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Sep 27 15:04:36 2016 +0100

----------------------------------------------------------------------
 .../background/BackgroundCommandExecution.java  | 44 ++++++++++++++------
 .../AbstractIsisSessionTemplate.java            | 22 +++++++++-
 2 files changed, 52 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/dc671d0c/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 6362647..9343c11 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
@@ -35,7 +35,6 @@ import org.apache.isis.applib.services.iactn.Interaction;
 import org.apache.isis.applib.services.iactn.InteractionContext;
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.CommandUtil;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -175,11 +174,7 @@ public abstract class BackgroundCommandExecution extends AbstractIsisSessionTemp
 
                             for (OidDto targetOidDto : targetOidDtos) {
 
-                                final Bookmark bookmark = Bookmark.from(targetOidDto);
-                                final Object targetObject = bookmarkService.lookup(bookmark);
-
-                                final ObjectAdapter targetAdapter = adapterFor(targetObject);
-
+                                final ObjectAdapter targetAdapter = targetAdapterFor(targetOidDto);
                                 final ObjectAction objectAction = findObjectAction(targetAdapter, memberId);
 
                                 // we pass 'null' for the mixedInAdapter; if this action _is_ a mixin then
@@ -314,18 +309,41 @@ public abstract class BackgroundCommandExecution extends AbstractIsisSessionTemp
             if(arg == null) {
                 return null;
             }
-            if(Bookmark.class != argType) {
-                return adapterFor(arg);
-            } else {
-                final Bookmark argBookmark = (Bookmark)arg;
-                final RootOid rootOid = RootOid.create(argBookmark);
-                return adapterFor(rootOid);
-            }
+            return argAdapterFor(argType, arg);
+
         } catch (ClassNotFoundException e) {
             throw new RuntimeException(e);
         }
     }
 
+    protected ObjectAdapter targetAdapterFor(final OidDto targetOidDto) {
+
+//        // this is the original code, but it can be simplified ...
+//        // (moved out to separate method so that, if proven wrong, can override as a patch)
+
+//      final Bookmark bookmark = Bookmark.from(targetOidDto);
+//      final Object targetObject = bookmarkService.lookup(bookmark);
+//      final ObjectAdapter targetAdapter = adapterFor(targetObject);
+
+        return adapterFor(targetOidDto);
+    }
+
+    protected ObjectAdapter argAdapterFor(final Class<?> argType, final Object arg) {
+
+//        // this is the original code, but it can be simplified ...
+//        // (moved out to separate method so that, if proven wrong, can override as a patch)
+
+//        if(Bookmark.class != argType) {
+//            return adapterFor(arg);
+//        } else {
+//            final Bookmark argBookmark = (Bookmark)arg;
+//            final RootOid rootOid = RootOid.create(argBookmark);
+//            return adapterFor(rootOid);
+//        }
+
+        return adapterFor(arg);
+    }
+
     private ObjectAdapter[] argAdaptersFor(final ActionDto actionDto) {
         final List<ParamDto> params = paramDtosFrom(actionDto);
         final List<ObjectAdapter> args = Lists.newArrayList(

http://git-wip-us.apache.org/repos/asf/isis/blob/dc671d0c/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java
index df2aa76..1bec4ed 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/sessiontemplate/AbstractIsisSessionTemplate.java
@@ -16,9 +16,9 @@
  */
 package org.apache.isis.core.runtime.sessiontemplate;
 
+import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -27,6 +27,7 @@ import org.apache.isis.core.runtime.system.session.IsisSession;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
 import org.apache.isis.core.runtime.system.transaction.TransactionalClosure;
+import org.apache.isis.schema.common.v1.OidDto;
 
 public abstract class AbstractIsisSessionTemplate {
 
@@ -82,8 +83,27 @@ public abstract class AbstractIsisSessionTemplate {
     // //////////////////////////////////////
 
     protected ObjectAdapter adapterFor(final Object targetObject) {
+        if(targetObject instanceof OidDto) {
+            final OidDto oidDto = (OidDto) targetObject;
+            return adapterFor(oidDto);
+        }
+        if(targetObject instanceof Bookmark) {
+            final Bookmark bookmark = (Bookmark) targetObject;
+            return adapterFor(bookmark);
+        }
         return getPersistenceSession().adapterFor(targetObject);
     }
+
+    protected ObjectAdapter adapterFor(final OidDto oidDto) {
+        final Bookmark bookmark = Bookmark.from(oidDto);
+        return adapterFor(bookmark);
+    }
+
+    protected ObjectAdapter adapterFor(final Bookmark bookmark) {
+        final RootOid rootOid = RootOid.create(bookmark);
+        return adapterFor(rootOid);
+    }
+
     protected ObjectAdapter adapterFor(final RootOid rootOid) {
         return getPersistenceSession().adapterFor(rootOid);
     }