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 2017/01/20 16:18:24 UTC

[17/36] isis git commit: ISIS-785: splits FeatureType#ACTION_PARAMETER into #ACTION_PARAMETER_SCALAR and #ACTION_PARAMETER_COLLECTION, so able to create either OneToOneActionParameter or OneToManyActionParameter.

ISIS-785: splits FeatureType#ACTION_PARAMETER into #ACTION_PARAMETER_SCALAR and #ACTION_PARAMETER_COLLECTION, so able to create either OneToOneActionParameter or OneToManyActionParameter.

...


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

Branch: refs/heads/master
Commit: d51d4aa6beb84323b580213293b84d7877cb7e24
Parents: 8d80712
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Jan 18 14:35:14 2017 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Jan 18 14:35:14 2017 +0000

----------------------------------------------------------------------
 .../core/metamodel/facetapi/FeatureType.java    | 21 +++++++++---
 .../core/metamodel/facets/FacetedMethod.java    | 27 ++++++++++------
 .../facets/FacetedMethodParameter.java          |  8 +++--
 .../isis/core/metamodel/facets/TypedHolder.java |  7 ++--
 .../metamodel/facets/TypedHolderDefault.java    |  4 +--
 .../specloader/SpecificationLoader.java         | 34 ++++++++++++++++++--
 .../facetprocessor/FacetProcessor.java          | 23 +++++++------
 .../specimpl/ObjectActionDefault.java           | 10 +++---
 .../specimpl/ObjectActionParameterAbstract.java | 10 ++++--
 ...bjectActionParameterContributeeAbstract.java |  5 +--
 .../ObjectActionParameterMixedInAbstract.java   |  5 +--
 .../OneToManyActionParameterContributee.java    |  3 +-
 .../OneToManyActionParameterDefault.java        |  3 +-
 .../OneToManyActionParameterMixedIn.java        |  3 +-
 .../OneToOneActionParameterContributee.java     |  3 +-
 .../OneToOneActionParameterDefault.java         |  3 +-
 .../OneToOneActionParameterMixedIn.java         |  3 +-
 .../AbstractFacetFactoryJUnit4TestCase.java     |  3 +-
 .../facets/AbstractFacetFactoryTest.java        |  3 +-
 ...ParameterAbstractTest_getId_and_getName.java |  8 ++---
 ...ivenAuditableAnnotationFacetFactoryTest.java |  2 +-
 ...uditableFacetMarkerInterfaceFactoryTest.java |  2 +-
 ...storeIdentityAnnotationFacetFactoryTest.java |  2 +-
 ...DiscriminatorAnnotationFacetFactoryTest.java |  2 +-
 ...stenceCapableAnnotationFacetFactoryTest.java |  2 +-
 .../JdoVersionAnnotationFacetFactoryTest.java   |  2 +-
 ...FromJdoColumnAnnotationFacetFactoryTest.java |  2 +-
 ...FromJdoColumnAnnotationFacetFactoryTest.java |  2 +-
 ...NotPersistentAnnotationFacetFactoryTest.java |  2 +-
 ...JdoPrimaryKeyAnnotationFacetFactoryTest.java |  2 +-
 30 files changed, 139 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FeatureType.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FeatureType.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FeatureType.java
index 8f50ccd..20aad5b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FeatureType.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facetapi/FeatureType.java
@@ -77,7 +77,16 @@ public enum FeatureType {
             return Identifier.actionIdentifier(type.getName(), fullMethodName, parameterTypes);
         }
     },
-    ACTION_PARAMETER("Parameter") {
+    ACTION_PARAMETER_SCALAR("Scalar Parameter") {
+        /**
+         * Always returns <tt>null</tt>.
+         */
+        @Override
+        public Identifier identifierFor(final Class<?> type, final Method method) {
+            return null;
+        }
+    },
+    ACTION_PARAMETER_COLLECTION("Collection Parameter") {
         /**
          * Always returns <tt>null</tt>.
          */
@@ -99,7 +108,7 @@ public enum FeatureType {
     public final static List<FeatureType> COLLECTIONS_ONLY = ImmutableList.of(COLLECTION);
     public final static List<FeatureType> COLLECTIONS_AND_ACTIONS = ImmutableList.of(COLLECTION, ACTION);
     public final static List<FeatureType> ACTIONS_ONLY = ImmutableList.of(ACTION);
-    public final static List<FeatureType> PARAMETERS_ONLY = ImmutableList.of(ACTION_PARAMETER);
+    public final static List<FeatureType> PARAMETERS_ONLY = ImmutableList.of(ACTION_PARAMETER_SCALAR, ACTION_PARAMETER_COLLECTION);
     public final static List<FeatureType> PROPERTIES_ONLY = ImmutableList.of(PROPERTY);
     public final static List<FeatureType> PROPERTIES_AND_ACTIONS = ImmutableList.of(PROPERTY, ACTION);
     public final static List<FeatureType> OBJECTS_ONLY = ImmutableList.of(OBJECT);
@@ -111,7 +120,8 @@ public enum FeatureType {
     public final static List<FeatureType> OBJECTS_PROPERTIES_AND_COLLECTIONS = ImmutableList.of(OBJECT, PROPERTY, COLLECTION);
     public final static List<FeatureType> OBJECTS_POST_PROCESSING_ONLY = ImmutableList.of(OBJECT_POST_PROCESSING);
 
-    public static final List<FeatureType> ACTIONS_AND_PARAMETERS = ImmutableList.of(ACTION, ACTION_PARAMETER);
+    public static final List<FeatureType> ACTIONS_AND_PARAMETERS =
+            ImmutableList.of(ACTION, ACTION_PARAMETER_SCALAR, ACTION_PARAMETER_COLLECTION);
 
     /**
      * Use of this is discouraged; instead use multiple {@link FacetFactory}s
@@ -122,7 +132,8 @@ public enum FeatureType {
      * Use of this is discouraged; instead use multiple {@link FacetFactory}s
      * for different features.
      */
-    public final static List<FeatureType> EVERYTHING = ImmutableList.of(OBJECT, PROPERTY, COLLECTION, ACTION, ACTION_PARAMETER);
+    public final static List<FeatureType> EVERYTHING =
+            ImmutableList.of(OBJECT, PROPERTY, COLLECTION, ACTION, ACTION_PARAMETER_SCALAR);
 
     private final String name;
 
@@ -149,7 +160,7 @@ public enum FeatureType {
     }
 
     public boolean isActionParameter() {
-        return this == ACTION_PARAMETER;
+        return this == ACTION_PARAMETER_SCALAR || this == ACTION_PARAMETER_COLLECTION;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetedMethod.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetedMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetedMethod.java
index e59a3e4..490866d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetedMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetedMethod.java
@@ -114,22 +114,29 @@ public class FacetedMethod extends TypedHolderDefault implements IdentifiedHolde
             final Class<?> parameterType = parameterTypes[paramNum];
             final Type genericParameterType = genericParameterTypes[paramNum];
 
-            final FacetedMethodParameter fmp = new FacetedMethodParameter(declaringType, actionMethod, parameterType);
+            final FeatureType featureType =
+                    specificationLoader.isParamCollection(parameterType, genericParameterType)
+                            ? FeatureType.ACTION_PARAMETER_COLLECTION
+                            : FeatureType.ACTION_PARAMETER_SCALAR;
+
+            final FacetedMethodParameter fmp = new FacetedMethodParameter(featureType, declaringType, actionMethod, parameterType);
             actionParams.add(fmp);
 
             // this is based on similar logic to ActionAnnotationFacetFactory#processTypeOf
-            TypeOfFacet typeOfFacet = specificationLoader.inferFromGenericParamType(fmp, parameterType, genericParameterType);
+            if(featureType == FeatureType.ACTION_PARAMETER_COLLECTION) {
+                TypeOfFacet typeOfFacet = specificationLoader.inferFromGenericParamType(fmp, parameterType, genericParameterType);
 
-            if(typeOfFacet == null ) {
-                if (org.apache.isis.core.metamodel.specloader.CollectionUtils.isArrayType(parameterType)) {
-                    typeOfFacet = specificationLoader.inferFromArrayType(fmp, parameterType);
+                if(typeOfFacet == null ) {
+                    if (org.apache.isis.core.metamodel.specloader.CollectionUtils.isArrayType(parameterType)) {
+                        typeOfFacet = specificationLoader.inferFromArrayType(fmp, parameterType);
+                    }
                 }
-            }
 
-            // copy over (corresponds to similar code for OneToManyAssociation in FacetMethodsBuilder).
-            if(typeOfFacet != null ) {
-                FacetUtil.addFacet(typeOfFacet);
-                fmp.setType(typeOfFacet.value());
+                // copy over (corresponds to similar code for OneToManyAssociation in FacetMethodsBuilder).
+                if(typeOfFacet != null ) {
+                    FacetUtil.addFacet(typeOfFacet);
+                    fmp.setType(typeOfFacet.value());
+                }
             }
 
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/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 3939093..6fdf648 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
@@ -29,8 +29,12 @@ public class FacetedMethodParameter extends TypedHolderDefault implements Identi
 
     private final Identifier identifier;
 
-    public FacetedMethodParameter(final Class<?> declaringType, final Method method, final Class<?> type) {
-        super(FeatureType.ACTION_PARAMETER, type);
+    public FacetedMethodParameter(
+            final FeatureType featureType,
+            final Class<?> declaringType,
+            final Method method,
+            final Class<?> type) {
+        super(featureType, type);
 
         // best we can do...
         this.identifier = FeatureType.ACTION.identifierFor(declaringType, method);

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolder.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolder.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolder.java
index d1a9868..3946037 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolder.java
@@ -34,10 +34,11 @@ public interface TypedHolder extends FacetHolder {
     public FeatureType getFeatureType();
 
     /**
-     * The type of a {@link FeatureType#PROPERTY property}, the referenced type
+     * The type of a {@link FeatureType#PROPERTY property}, the referenced (element) type
      * of a {@link FeatureType#COLLECTION collection}, the return type of an
-     * {@link FeatureType#ACTION action} and for {@link FeatureType#ACTION_PARAMETER action parameter}s
-     * either the scalar type or the inferred generic type if a collection.
+     * {@link FeatureType#ACTION action}, the type of a
+     * {@link FeatureType#ACTION_PARAMETER_SCALAR scalar action parameter}s, and the inferred
+     * element type for a {@link FeatureType#ACTION_PARAMETER_COLLECTION collection action parameter}.
      */
     public Class<?> getType();
 

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolderDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolderDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolderDefault.java
index a27f4b6..22cfe13 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolderDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/TypedHolderDefault.java
@@ -40,8 +40,8 @@ public class TypedHolderDefault extends FacetHolderImpl implements TypedHolder {
     }
 
     /**
-     * For {@link FeatureType#COLLECTION collection}s, and for some {@link FeatureType#ACTION_PARAMETER}s, represents the element
-     * type.
+     * For {@link FeatureType#COLLECTION collection}s and for
+     * {@link FeatureType#ACTION_PARAMETER_COLLECTION}s, represents the element type.
      */
     @Override
     public void setType(final Class<?> type) {

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
index 757ad2d..eb34dc0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@ -531,11 +531,31 @@ public class SpecificationLoader implements ApplicationScopedComponent {
 
     //region > inferFromGenericParamType, inferFromGenericReturnType, inferFromArrayType
 
+    /**
+     * @return true means that either {@link #inferFromGenericParamType(Class, Type)} or {@link #inferFromArrayType(FacetHolder, Class)} will return a non-null value.
+     */
+    @Programmatic
+    public boolean isParamCollection(
+            final Class<?> parameterType,
+            final Type genericParameterType) {
+        return inferFromGenericParamType(parameterType, genericParameterType) != null || inferFromArrayType(parameterType) != null;
+    }
+
     @Programmatic
     public TypeOfFacet inferFromGenericParamType(
             final FacetHolder holder,
             final Class<?> parameterType,
             final Type genericParameterType) {
+        final Class<?> actualType = inferFromGenericParamType(parameterType, genericParameterType);
+        return actualType != null
+                ? new TypeOfFacetInferredFromGenerics(actualType, holder, this)
+                : null;
+    }
+
+    @Programmatic
+    public Class<?> inferFromGenericParamType(
+            final Class<?> parameterType,
+            final Type genericParameterType) {
 
         if(!CollectionUtils.isCollectionType(parameterType)) {
             return null;
@@ -549,7 +569,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
                 final Type actualTypeArgument = actualTypeArguments[0];
                 if(actualTypeArgument instanceof Class) {
                     final Class<?> actualType = (Class<?>) actualTypeArgument;
-                    return new TypeOfFacetInferredFromGenerics(actualType, holder, this);
+                    return actualType;
                 }
             }
         }
@@ -616,12 +636,20 @@ public class SpecificationLoader implements ApplicationScopedComponent {
     public TypeOfFacet inferFromArrayType(
             final FacetHolder holder,
             final Class<?> type) {
-        if(!org.apache.isis.core.metamodel.specloader.CollectionUtils.isArrayType(type)) {
+        final Class<?> componentType = inferFromArrayType(type);
+        return componentType != null
+                ? new TypeOfFacetInferredFromArray(componentType, holder, this)
+                : null;
+    }
+
+    @Programmatic
+    public Class<?> inferFromArrayType(final Class<?> type) {
+        if(!CollectionUtils.isArrayType(type)) {
             return null;
         }
         if (type.isArray()) {
             final Class<?> componentType = type.getComponentType();
-            return new TypeOfFacetInferredFromArray(componentType, holder, this);
+            return componentType;
         }
         return null;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
index 0791311..3e1d532 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
@@ -49,9 +49,6 @@ import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.ServicesInjectorAware;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-
 public class FacetProcessor implements ServicesInjectorAware {
 
     private final ProgrammingModel programmingModel;
@@ -332,8 +329,7 @@ public class FacetProcessor implements ServicesInjectorAware {
     }
 
     /**
-     * Attaches all facets applicable to the provided
-     * {@link FeatureType#ACTION_PARAMETER parameter}), to the supplied
+     * Attaches all facets applicable to the provided parameter to the supplied
      * {@link FacetHolder}.
      * 
      * <p>
@@ -356,7 +352,19 @@ public class FacetProcessor implements ServicesInjectorAware {
             final int paramNum,
             final MethodRemover methodRemover,
             final FacetedMethodParameter facetedMethodParameter) {
-        final List<FacetFactory> factoryList = getFactoryListByFeatureType(FeatureType.ACTION_PARAMETER);
+        for (FeatureType featureType : FeatureType.PARAMETERS_ONLY) {
+            processParams(introspectedClass, method, paramNum, methodRemover, facetedMethodParameter, featureType);
+        }
+    }
+
+    public void processParams(
+            final Class<?> introspectedClass,
+            final Method method,
+            final int paramNum,
+            final MethodRemover methodRemover,
+            final FacetedMethodParameter facetedMethodParameter,
+            final FeatureType featureType) {
+        final List<FacetFactory> factoryList = getFactoryListByFeatureType(featureType);
         final ProcessParameterContext processParameterContext =
                 new ProcessParameterContext(introspectedClass, method, paramNum, methodRemover, facetedMethodParameter);
         for (final FacetFactory facetFactory : factoryList) {
@@ -364,9 +372,6 @@ public class FacetProcessor implements ServicesInjectorAware {
         }
     }
 
-
-    
-    
     private List<FacetFactory> getFactoryListByFeatureType(final FeatureType featureType) {
         cacheByFeatureTypeIfRequired();
         List<FacetFactory> list = factoryListByFeatureType.get(featureType);

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
index 79258f7..a0bc998 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
@@ -47,7 +47,6 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
-import org.apache.isis.core.metamodel.facets.TypedHolder;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet;
 import org.apache.isis.core.metamodel.facets.actions.action.invocation.CommandUtil;
 import org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacet;
@@ -195,15 +194,16 @@ public class ObjectActionDefault extends ObjectMemberAbstract implements ObjectA
 
         final List<ObjectActionParameter> parameters = Lists.newArrayList();
         for (int paramNum = 0; paramNum < parameterCount; paramNum++) {
-            final TypedHolder paramPeer = paramPeers.get(paramNum);
+            final FacetedMethodParameter paramPeer = paramPeers.get(paramNum);
 
             final ObjectSpecification specification = ObjectMemberAbstract
                     .getSpecification(getSpecificationLoader(), paramPeer.getType());
 
             // previously we threw an exception here if the specification represented a collection.  No longer!
-            final ObjectActionParameter parameter = specification.isNotCollection() ?
-                    new OneToOneActionParameterDefault(paramNum, this, paramPeer) :
-                    new OneToManyActionParameterDefault(paramNum, this, paramPeer);
+            final ObjectActionParameter parameter =
+                    paramPeer.getFeatureType() == FeatureType.ACTION_PARAMETER_SCALAR
+                            ? new OneToOneActionParameterDefault(paramNum, this, paramPeer)
+                            : new OneToManyActionParameterDefault(paramNum, this, paramPeer);
 
             parameters.add(parameter);
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index 9c1e2fc..89e48e6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -63,11 +63,17 @@ import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public abstract class ObjectActionParameterAbstract implements ObjectActionParameter {
 
+    private final FeatureType featureType;
     private final int number;
     private final ObjectActionDefault parentAction;
     private final TypedHolder peer;
 
-    protected ObjectActionParameterAbstract(final int number, final ObjectActionDefault objectAction, final TypedHolder peer) {
+    protected ObjectActionParameterAbstract(
+            final FeatureType featureType,
+            final int number,
+            final ObjectActionDefault objectAction,
+            final TypedHolder peer) {
+        this.featureType = featureType;
         this.number = number;
         this.parentAction = objectAction;
         this.peer = peer;
@@ -75,7 +81,7 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
 
     @Override
     public FeatureType getFeatureType() {
-        return FeatureType.ACTION_PARAMETER;
+        return featureType;
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterContributeeAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterContributeeAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterContributeeAbstract.java
index 448c8aa..47e4ce9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterContributeeAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterContributeeAbstract.java
@@ -21,6 +21,7 @@ import java.util.List;
 import org.apache.isis.core.commons.lang.ListExtensions;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 
 public abstract class ObjectActionParameterContributeeAbstract
@@ -32,11 +33,11 @@ public abstract class ObjectActionParameterContributeeAbstract
     private final ObjectActionContributee contributeeAction;
 
     public ObjectActionParameterContributeeAbstract(
-            final ObjectAdapter serviceAdapter,
+            final FeatureType featureType, final ObjectAdapter serviceAdapter,
             final ObjectActionParameterAbstract serviceActionParameter,
             final int contributeeParamNumber,
             final ObjectActionContributee contributeeAction) {
-        super(contributeeParamNumber, contributeeAction, serviceActionParameter.getPeer());
+        super(featureType, contributeeParamNumber, contributeeAction, serviceActionParameter.getPeer());
         this.serviceAdapter = serviceAdapter;
         this.serviceActionParameter = serviceActionParameter;
         this.contributeeAction = contributeeAction;

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterMixedInAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterMixedInAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterMixedInAbstract.java
index f8516cd..658b61f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterMixedInAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterMixedInAbstract.java
@@ -18,6 +18,7 @@ package org.apache.isis.core.metamodel.specloader.specimpl;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.interactions.ActionArgValidityContext;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 
@@ -29,9 +30,9 @@ public abstract class ObjectActionParameterMixedInAbstract
     private final ObjectActionMixedIn mixedInAction;
 
     public ObjectActionParameterMixedInAbstract(
-            final ObjectActionParameterAbstract mixinParameter,
+            final FeatureType featureType, final ObjectActionParameterAbstract mixinParameter,
             final ObjectActionMixedIn mixedInAction) {
-        super(mixinParameter.getNumber(), mixedInAction, mixinParameter.getPeer());
+        super(featureType, mixinParameter.getNumber(), mixedInAction, mixinParameter.getPeer());
         this.mixinParameter = mixinParameter;
         this.mixedInAction = mixedInAction;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterContributee.java
index 4db147e..afaa1a0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterContributee.java
@@ -17,6 +17,7 @@
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyActionParameter;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyFeature;
 
@@ -29,7 +30,7 @@ public class OneToManyActionParameterContributee
             final ObjectActionParameterAbstract serviceActionParameter,
             final int contributeeParamNumber,
             final ObjectActionContributee contributeeAction) {
-        super(serviceAdapter, serviceActionParameter, contributeeParamNumber, contributeeAction);
+        super(FeatureType.ACTION_PARAMETER_COLLECTION, serviceAdapter, serviceActionParameter, contributeeParamNumber, contributeeAction);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterDefault.java
index a542f15..72ba757 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterDefault.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.TypedHolder;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyActionParameter;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyFeature;
@@ -29,7 +30,7 @@ public class OneToManyActionParameterDefault extends ObjectActionParameterAbstra
             final int index,
             final ObjectActionDefault actionImpl,
             final TypedHolder peer) {
-        super(index, actionImpl, peer);
+        super(FeatureType.ACTION_PARAMETER_COLLECTION, index, actionImpl, peer);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterMixedIn.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterMixedIn.java
index 6ca04c0..f51a2a0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyActionParameterMixedIn.java
@@ -16,6 +16,7 @@
  */
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyActionParameter;
 import org.apache.isis.core.metamodel.spec.feature.OneToManyFeature;
 
@@ -26,7 +27,7 @@ public class OneToManyActionParameterMixedIn
     public OneToManyActionParameterMixedIn(
             final ObjectActionParameterAbstract mixinParameter,
             final ObjectActionMixedIn mixedInAction) {
-        super(mixinParameter, mixedInAction);
+        super(FeatureType.ACTION_PARAMETER_COLLECTION, mixinParameter, mixedInAction);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterContributee.java
index 6250086..654beba 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterContributee.java
@@ -17,6 +17,7 @@
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneActionParameter;
 
 public class OneToOneActionParameterContributee
@@ -28,7 +29,7 @@ public class OneToOneActionParameterContributee
             final ObjectActionParameterAbstract serviceActionParameter,
             final int contributeeParamNumber,
             final ObjectActionContributee contributeeAction) {
-        super(serviceAdapter, serviceActionParameter, contributeeParamNumber, contributeeAction);
+        super(FeatureType.ACTION_PARAMETER_SCALAR, serviceAdapter, serviceActionParameter, contributeeParamNumber, contributeeAction);
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterDefault.java
index 65cf664..7a99d2a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterDefault.java
@@ -19,6 +19,7 @@
 
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.TypedHolder;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneActionParameter;
 
@@ -28,7 +29,7 @@ public class OneToOneActionParameterDefault extends ObjectActionParameterAbstrac
             final int index,
             final ObjectActionDefault actionImpl,
             final TypedHolder peer) {
-        super(index, actionImpl, peer);
+        super(FeatureType.ACTION_PARAMETER_SCALAR, index, actionImpl, peer);
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterMixedIn.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterMixedIn.java
index 5842361..05aa227 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneActionParameterMixedIn.java
@@ -16,6 +16,7 @@
  */
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
+import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneActionParameter;
 
 public class OneToOneActionParameterMixedIn
@@ -25,7 +26,7 @@ public class OneToOneActionParameterMixedIn
     public OneToOneActionParameterMixedIn(
             final ObjectActionParameterAbstract mixinParameter,
             final ObjectActionMixedIn mixedInAction) {
-        super(mixinParameter, mixedInAction);
+        super(FeatureType.ACTION_PARAMETER_SCALAR, mixinParameter, mixedInAction);
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
index ee195e2..5a80218 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
@@ -145,7 +145,8 @@ public abstract class AbstractFacetFactoryJUnit4TestCase {
 
         facetHolder = new AbstractFacetFactoryTest.IdentifiedHolderImpl(Identifier.propertyOrCollectionIdentifier(Customer.class, "firstName"));
         facetedMethod = FacetedMethod.createForProperty(AbstractFacetFactoryTest.Customer.class, "firstName");
-        facetedMethodParameter = new FacetedMethodParameter(facetedMethod.getOwningType(), facetedMethod.getMethod(), String.class);
+        facetedMethodParameter = new FacetedMethodParameter(FeatureType.ACTION_PARAMETER_SCALAR, facetedMethod.getOwningType(), facetedMethod.getMethod(), String.class
+        );
     }
     
     @After

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
index 4721012..12fd5be 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
@@ -104,7 +104,8 @@ public abstract class AbstractFacetFactoryTest extends TestCase {
                 Identifier.propertyOrCollectionIdentifier(Customer.class, "firstName"));
         facetedMethod = FacetedMethod.createForProperty(Customer.class, "firstName");
         facetedMethodParameter = new FacetedMethodParameter(
-                facetedMethod.getOwningType(), facetedMethod.getMethod(), String.class);
+                FeatureType.ACTION_PARAMETER_SCALAR, facetedMethod.getOwningType(), facetedMethod.getMethod(), String.class
+        );
 
         methodRemover = new ProgrammableMethodRemover();
 

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstractTest_getId_and_getName.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstractTest_getId_and_getName.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstractTest_getId_and_getName.java
index 52bc0e6..3985ca0 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstractTest_getId_and_getName.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstractTest_getId_and_getName.java
@@ -19,9 +19,6 @@
 
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
 import com.google.common.collect.Lists;
 
 import org.jmock.Expectations;
@@ -41,6 +38,9 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
 public class ObjectActionParameterAbstractTest_getId_and_getName {
 
     @Rule
@@ -63,7 +63,7 @@ public class ObjectActionParameterAbstractTest_getId_and_getName {
 
     private final static class ObjectActionParameterAbstractToTest extends ObjectActionParameterAbstract {
         private ObjectActionParameterAbstractToTest(final int number, final ObjectActionDefault objectAction, final TypedHolder peer) {
-            super(number, objectAction, peer);
+            super(FeatureType.ACTION_PARAMETER_SCALAR, number, objectAction, peer);
         }
 
         private ObjectSpecification objectSpec;

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java
index ea06673..243a606 100644
--- a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableAnnotationFacetFactoryTest.java
@@ -60,7 +60,7 @@ public class GivenAuditableAnnotationFacetFactoryTest extends
         assertFalse(contains(featureTypes, FeatureType.COLLECTION));
         Assert.assertFalse(contains(featureTypes, FeatureType.ACTION));
         assertFalse(contains(featureTypes,
-                FeatureType.ACTION_PARAMETER));
+                FeatureType.ACTION_PARAMETER_SCALAR));
     }
 
     public void testAuditableAnnotationPickedUpOnClass() {

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableFacetMarkerInterfaceFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableFacetMarkerInterfaceFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableFacetMarkerInterfaceFactoryTest.java
index 970d029..de11405 100644
--- a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableFacetMarkerInterfaceFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/auditable/GivenAuditableFacetMarkerInterfaceFactoryTest.java
@@ -57,7 +57,7 @@ public class GivenAuditableFacetMarkerInterfaceFactoryTest extends
         assertFalse(contains(featureTypes, FeatureType.COLLECTION));
         Assert.assertFalse(contains(featureTypes, FeatureType.ACTION));
         assertFalse(contains(featureTypes,
-                FeatureType.ACTION_PARAMETER));
+                FeatureType.ACTION_PARAMETER_SCALAR));
     }
 
     public void testAuditableMarkerInterfacePickedUpOnClass() {

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/datastoreidentity/GivenJdoDatastoreIdentityAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/datastoreidentity/GivenJdoDatastoreIdentityAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/datastoreidentity/GivenJdoDatastoreIdentityAnnotationFacetFactoryTest.java
index 949a3b9..980855d 100644
--- a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/datastoreidentity/GivenJdoDatastoreIdentityAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/datastoreidentity/GivenJdoDatastoreIdentityAnnotationFacetFactoryTest.java
@@ -58,7 +58,7 @@ public class GivenJdoDatastoreIdentityAnnotationFacetFactoryTest extends
         assertFalse(contains(featureTypes, FeatureType.COLLECTION));
         Assert.assertFalse(contains(featureTypes, FeatureType.ACTION));
         assertFalse(contains(featureTypes,
-                FeatureType.ACTION_PARAMETER));
+                FeatureType.ACTION_PARAMETER_SCALAR));
     }
 
     public void testDatastoreIdentityAnnotationPickedUpOnClass() {

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/GivenJdoDiscriminatorAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/GivenJdoDiscriminatorAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/GivenJdoDiscriminatorAnnotationFacetFactoryTest.java
index 661e50c..f0d9af3 100644
--- a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/GivenJdoDiscriminatorAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/GivenJdoDiscriminatorAnnotationFacetFactoryTest.java
@@ -53,7 +53,7 @@ public class GivenJdoDiscriminatorAnnotationFacetFactoryTest extends AbstractFac
         assertFalse(contains(featureTypes, FeatureType.PROPERTY));
         assertFalse(contains(featureTypes, FeatureType.COLLECTION));
         assertFalse(contains(featureTypes, FeatureType.ACTION));
-        assertFalse(contains(featureTypes, FeatureType.ACTION_PARAMETER));
+        assertFalse(contains(featureTypes, FeatureType.ACTION_PARAMETER_SCALAR));
     }
 
     public void testDiscriminatorValueAnnotationPickedUpOnClass() {

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/persistencecapable/GivenJdoPersistenceCapableAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/persistencecapable/GivenJdoPersistenceCapableAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/persistencecapable/GivenJdoPersistenceCapableAnnotationFacetFactoryTest.java
index f80da90..e59a286 100644
--- a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/persistencecapable/GivenJdoPersistenceCapableAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/persistencecapable/GivenJdoPersistenceCapableAnnotationFacetFactoryTest.java
@@ -63,7 +63,7 @@ public class GivenJdoPersistenceCapableAnnotationFacetFactoryTest extends
                 .assertFalse(contains(featureTypes,
                 FeatureType.ACTION));
         assertFalse(contains(featureTypes,
-                FeatureType.ACTION_PARAMETER));
+                FeatureType.ACTION_PARAMETER_SCALAR));
     }
 
     public void testPersistenceCapableAnnotationPickedUpOnClass() {

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/version/JdoVersionAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/version/JdoVersionAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/version/JdoVersionAnnotationFacetFactoryTest.java
index ecb3462..b1db8f8 100644
--- a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/version/JdoVersionAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/version/JdoVersionAnnotationFacetFactoryTest.java
@@ -51,7 +51,7 @@ public class JdoVersionAnnotationFacetFactoryTest extends AbstractFacetFactoryTe
         assertFalse(contains(featureTypes, FeatureType.PROPERTY));
         assertFalse(contains(featureTypes, FeatureType.COLLECTION));
         assertFalse(contains(featureTypes, FeatureType.ACTION));
-        assertFalse(contains(featureTypes, FeatureType.ACTION_PARAMETER));
+        assertFalse(contains(featureTypes, FeatureType.ACTION_PARAMETER_SCALAR));
     }
 
     public void testVersionAnnotationPickedUpOnClass() {

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest.java
index 79ff9eb..ba36638 100644
--- a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest.java
@@ -53,7 +53,7 @@ public class BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest extends Ab
         assertTrue(contains(featureTypes, FeatureType.PROPERTY));
         assertFalse(contains(featureTypes, FeatureType.COLLECTION));
         assertFalse(contains(featureTypes, FeatureType.ACTION));
-        assertFalse(contains(featureTypes, FeatureType.ACTION_PARAMETER));
+        assertFalse(contains(featureTypes, FeatureType.ACTION_PARAMETER_SCALAR));
     }
 
     public void testAnnotationPickedUpOnProperty() throws Exception {

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryDerivedFromJdoColumnAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryDerivedFromJdoColumnAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryDerivedFromJdoColumnAnnotationFacetFactoryTest.java
index 88d8c6c..dc4b385 100644
--- a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryDerivedFromJdoColumnAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryDerivedFromJdoColumnAnnotationFacetFactoryTest.java
@@ -54,7 +54,7 @@ public class MandatoryDerivedFromJdoColumnAnnotationFacetFactoryTest extends Abs
         assertTrue(contains(featureTypes, FeatureType.PROPERTY));
         assertFalse(contains(featureTypes, FeatureType.COLLECTION));
         assertFalse(contains(featureTypes, FeatureType.ACTION));
-        assertFalse(contains(featureTypes, FeatureType.ACTION_PARAMETER));
+        assertFalse(contains(featureTypes, FeatureType.ACTION_PARAMETER_SCALAR));
     }
 
     public void testPrimitiveWithNoAnnotation_isMandatory() throws Exception {

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/notpersistent/GivenJdoNotPersistentAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/notpersistent/GivenJdoNotPersistentAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/notpersistent/GivenJdoNotPersistentAnnotationFacetFactoryTest.java
index b27a0a4..8c18680 100644
--- a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/notpersistent/GivenJdoNotPersistentAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/notpersistent/GivenJdoNotPersistentAnnotationFacetFactoryTest.java
@@ -52,7 +52,7 @@ public class GivenJdoNotPersistentAnnotationFacetFactoryTest extends AbstractFac
         assertTrue(contains(featureTypes, FeatureType.PROPERTY));
         assertFalse(contains(featureTypes, FeatureType.COLLECTION));
         assertFalse(contains(featureTypes, FeatureType.ACTION));
-        assertFalse(contains(featureTypes, FeatureType.ACTION_PARAMETER));
+        assertFalse(contains(featureTypes, FeatureType.ACTION_PARAMETER_SCALAR));
     }
 
     public void testNotPersistentAnnotationPickedUpOnProperty() throws Exception {

http://git-wip-us.apache.org/repos/asf/isis/blob/d51d4aa6/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/GivenJdoPrimaryKeyAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/GivenJdoPrimaryKeyAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/GivenJdoPrimaryKeyAnnotationFacetFactoryTest.java
index 2324e40..aaeb530 100644
--- a/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/GivenJdoPrimaryKeyAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/GivenJdoPrimaryKeyAnnotationFacetFactoryTest.java
@@ -53,7 +53,7 @@ public class GivenJdoPrimaryKeyAnnotationFacetFactoryTest extends AbstractFacetF
         assertTrue(contains(featureTypes, FeatureType.PROPERTY));
         assertFalse(contains(featureTypes, FeatureType.COLLECTION));
         assertFalse(contains(featureTypes, FeatureType.ACTION));
-        assertFalse(contains(featureTypes, FeatureType.ACTION_PARAMETER));
+        assertFalse(contains(featureTypes, FeatureType.ACTION_PARAMETER_SCALAR));
     }
 
     public void testIdAnnotationPickedUpOnProperty() throws Exception {