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