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 2015/06/17 09:52:56 UTC

[2/3] isis git commit: ISIS-1154: also include return type for publishing service event metadata; fix for parameter types/names (were null)

ISIS-1154: also include return type for publishing service event metadata; fix for parameter types/names (were null)


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

Branch: refs/heads/master
Commit: 1a484d4d267784a405987d7c7c3e8a704b3a1f5f
Parents: ad821db
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Jun 8 07:07:18 2015 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Jun 17 00:10:28 2015 +0100

----------------------------------------------------------------------
 .../applib/services/publish/EventMetadata.java  | 19 ++++++++++--
 .../facets/FacetedMethodParameter.java          | 23 ++++++++++++++
 .../system/transaction/IsisTransaction.java     | 32 +++++++++++++-------
 3 files changed, 60 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/1a484d4d/core/applib/src/main/java/org/apache/isis/applib/services/publish/EventMetadata.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/publish/EventMetadata.java b/core/applib/src/main/java/org/apache/isis/applib/services/publish/EventMetadata.java
index f8f6ed6..5523e4e 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/publish/EventMetadata.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/publish/EventMetadata.java
@@ -48,6 +48,7 @@ public class EventMetadata {
     private final String actionIdentifier;
     private final List<String> actionParameterNames;
     private final List<Class<?>> actionParameterTypes;
+    private final Class<?> actionReturnType;
 
     /**
      * @deprecated - no longer called by the framework.
@@ -78,7 +79,7 @@ public class EventMetadata {
             final String targetAction, 
             final Bookmark target, 
             final String actionIdentifier) {
-        this(transactionId, sequence, eventType, user, javaSqlTimestamp, title, targetClass, targetAction, target, actionIdentifier, null, null);
+        this(transactionId, sequence, eventType, user, javaSqlTimestamp, title, targetClass, targetAction, target, actionIdentifier, null, null, null );
     }
     
     public EventMetadata(
@@ -86,14 +87,15 @@ public class EventMetadata {
             final int sequence,
             final EventType eventType,
             final String user,
-            final java.sql.Timestamp javaSqlTimestamp,
+            final Timestamp javaSqlTimestamp,
             final String title,
             final String targetClass,
             final String targetAction,
             final Bookmark target,
             final String actionIdentifier,
             final List<String> actionParameterNames,
-            final List<Class<?>> actionParameterTypes) {
+            final List<Class<?>> actionParameterTypes,
+            final Class<?> actionReturnType) {
         this.transactionId = transactionId;
         this.sequence = sequence;
         this.user = user;
@@ -106,6 +108,7 @@ public class EventMetadata {
         this.actionIdentifier = actionIdentifier;
         this.actionParameterNames = actionParameterNames;
         this.actionParameterTypes = actionParameterTypes;
+        this.actionReturnType = actionReturnType;
     }
 
     /**
@@ -219,6 +222,16 @@ public class EventMetadata {
         return actionParameterTypes;
     }
 
+    /**
+     * Return type of the invoked action.
+     *
+     * <p>
+     * Populated only for {@link EventType#ACTION_INVOCATION}s.
+     */
+    public Class<?> getActionReturnType() {
+        return actionReturnType;
+    }
+
     // //////////////////////////////////////
 
     

http://git-wip-us.apache.org/repos/asf/isis/blob/1a484d4d/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetedMethodParameter.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetedMethodParameter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetedMethodParameter.java
index 077e990..3939093 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetedMethodParameter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetedMethodParameter.java
@@ -17,9 +17,13 @@
 package org.apache.isis.core.metamodel.facets;
 
 import java.lang.reflect.Method;
+
+import com.google.common.base.Function;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
+import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 
 public class FacetedMethodParameter extends TypedHolderDefault implements IdentifiedHolder {
 
@@ -36,4 +40,23 @@ public class FacetedMethodParameter extends TypedHolderDefault implements Identi
     public Identifier getIdentifier() {
         return identifier;
     }
+
+
+    public static class Functions {
+        public static final Function<FacetedMethodParameter, String> GET_NAME = new Function<FacetedMethodParameter, String>() {
+            @Override public String apply(final FacetedMethodParameter input) {
+                final NamedFacet namedFacet = input.getFacet(NamedFacet.class);
+                return namedFacet.value();
+            }
+        };
+        public static final Function<FacetedMethodParameter, Class<?>> GET_TYPE = new Function<FacetedMethodParameter, Class<?>>() {
+            @Override public Class<?> apply(final FacetedMethodParameter input) {
+                return input.getType();
+            }
+        };
+
+        private Functions(){}
+
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/1a484d4d/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 8cd0e01..8464d84 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
@@ -26,6 +26,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.UUID;
+
 import com.google.common.base.Function;
 import com.google.common.base.Objects;
 import com.google.common.base.Predicate;
@@ -34,8 +35,10 @@ import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.RecoverableException;
 import org.apache.isis.applib.annotation.Bulk;
@@ -74,6 +77,8 @@ import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
+import org.apache.isis.core.metamodel.facets.FacetedMethod;
+import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet.CurrentInvocation;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.CommandUtil;
@@ -84,8 +89,6 @@ import org.apache.isis.core.metamodel.facets.object.publishedobject.PublishedObj
 import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext.TransactionState;
 import org.apache.isis.core.metamodel.runtimecontext.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.feature.Contributed;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.runtime.persistence.PersistenceConstants;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.CreateObjectCommand;
@@ -95,6 +98,7 @@ import org.apache.isis.core.runtime.persistence.objectstore.transaction.Publishi
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.SaveObjectCommand;
 import org.apache.isis.core.runtime.persistence.objectstore.transaction.TransactionalResource;
 import org.apache.isis.core.runtime.system.context.IsisContext;
+
 import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
 import static org.apache.isis.core.commons.ensure.Ensure.ensureThatState;
 import static org.hamcrest.CoreMatchers.nullValue;
@@ -590,18 +594,23 @@ public class IsisTransaction implements TransactionScopedComponent {
             final String memberIdentifier = command.getMemberIdentifier();
             final List<String> parameterNames;
             final List<Class<?>> parameterTypes;
-            if(action instanceof ObjectAction) {
+            final Class<?> returnType;
+            if(action instanceof FacetedMethod) {
                 // should always be the case
-                ObjectAction objectAction = (ObjectAction) action;
-                final List<ObjectActionParameter> parameters = objectAction.getParameters();
-                parameterNames = immutableList(Iterables.transform(parameters, ObjectActionParameter.Functions.GET_NAME));
-                parameterTypes = immutableList(Iterables.transform(parameters, ObjectActionParameter.Functions.GET_TYPE));
+
+                final FacetedMethod facetedMethod = (FacetedMethod) action;
+                returnType = facetedMethod.getType();
+
+                final List<FacetedMethodParameter> parameters = facetedMethod.getParameters();
+                parameterNames = immutableList(Iterables.transform(parameters, FacetedMethodParameter.Functions.GET_NAME));
+                parameterTypes = immutableList(Iterables.transform(parameters, FacetedMethodParameter.Functions.GET_TYPE));
             } else {
                 parameterNames = null;
                 parameterTypes = null;
+                returnType = null;
             }
             
-            final EventMetadata metadata = newEventMetadata(EventType.ACTION_INVOCATION, currentUser, timestamp, title, targetClass, targetAction, target, memberIdentifier, parameterNames, parameterTypes);
+            final EventMetadata metadata = newEventMetadata(EventType.ACTION_INVOCATION, currentUser, timestamp, title, targetClass, targetAction, target, memberIdentifier, parameterNames, parameterTypes, returnType);
             publishingService.publishAction(payloadFactory, metadata, currentInvocation, objectStringifier());
         } finally {
             // ensures that cannot publish this action more than once
@@ -642,7 +651,7 @@ public class IsisTransaction implements TransactionScopedComponent {
             final String enlistedAdapterClass = CommandUtil.targetClassNameFor(enlistedAdapter);
             final Bookmark enlistedTarget = enlistedAdapterOid.asBookmark();
             
-            final EventMetadata metadata = newEventMetadata(eventTypeFor, currentUser, timestamp, title, enlistedAdapterClass, null, enlistedTarget, null, null, null);
+            final EventMetadata metadata = newEventMetadata(eventTypeFor, currentUser, timestamp, title, enlistedAdapterClass, null, enlistedTarget, null, null, null, null);
         
             publishingService.publishObject(payloadFactory, metadata, enlistedAdapter, changeKind, objectStringifier());
         }
@@ -700,11 +709,12 @@ public class IsisTransaction implements TransactionScopedComponent {
             Bookmark target,
             String memberIdentifier,
             final List<String> parameterNames,
-            final List<Class<?>> parameterTypes) {
+            final List<Class<?>> parameterTypes,
+            final Class<?> returnType) {
         int nextEventSequence = nextEventSequence();
         return new EventMetadata(
                 getTransactionId(), nextEventSequence, eventType, currentUser, timestampEpoch, title, 
-                targetClass, targetAction, target, memberIdentifier, parameterNames, parameterTypes);
+                targetClass, targetAction, target, memberIdentifier, parameterNames, parameterTypes, returnType);
     }
 
     private int nextEventSequence() {