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 15:06:10 UTC

[1/2] isis git commit: ISIS-785: extracts method in ReferencePanel to create select2 object [Forced Update!]

Repository: isis
Updated Branches:
  refs/heads/maint-1.13.3 1dc47eef7 -> 482286e2b (forced update)


ISIS-785: extracts method in ReferencePanel to create select2 object


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

Branch: refs/heads/maint-1.13.3
Commit: d1453c12b67019fb400802c70dad1aadc36d2062
Parents: 50a38e9
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Jan 20 15:05:09 2017 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jan 20 15:05:09 2017 +0000

----------------------------------------------------------------------
 .../scalars/reference/ReferencePanel.java       | 81 ++++++++++----------
 1 file changed, 42 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/d1453c12/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
index abf32e4..4e5bc79 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
@@ -124,47 +124,10 @@ public class ReferencePanel extends ScalarPanelAbstract {
         
         entityLink = new EntityLinkSelect2Panel(ComponentType.ENTITY_LINK.getWicketId(), this);
 
-        // create select2
         entityLink.setRequired(getModel().isRequired());
-
-        if(getModel().isCollection()) {
-            final IModel<ArrayList<ObjectAdapterMemento>> model =
-                    ScalarModelWithMultiPending.Util.createModel(getModel());
-            this.select2 = Select2.newSelect2MultiChoice(ID_AUTO_COMPLETE, model, getModel());
-        } else {
-            final IModel<ObjectAdapterMemento> modelObject =
-                    ScalarModelWithPending.Util.createModel(getModel());
-            this.select2 = Select2.newSelect2Choice(ID_AUTO_COMPLETE, modelObject, getModel());
-        }
-
-        setProviderAndCurrAndPending(select2, getModel().getActionArgsHint());
-
-        final Settings settings = select2.getSettings();
-
-        // one of these three case should be true
-        // (as per the isEditableWithEitherAutoCompleteOrChoices() guard above)
-        if(getModel().hasChoices()) {
-
-            settings.setPlaceholder(getModel().getName());
-
-        } else if(getModel().hasAutoComplete()) {
-
-            final int minLength = getModel().getAutoCompleteMinLength();
-            settings.setMinimumInputLength(minLength);
-            settings.setPlaceholder(getModel().getName());
-
-        } else if(hasObjectAutoComplete()) {
-            final ObjectSpecification typeOfSpecification = getModel().getTypeOfSpecification();
-            final AutoCompleteFacet autoCompleteFacet = typeOfSpecification.getFacet(AutoCompleteFacet.class);
-            final int minLength = autoCompleteFacet.getMinLength();
-            settings.setMinimumInputLength(minLength);
-        }
-
+        this.select2 = createSelect2();
         entityLink.addOrReplace(select2.component());
 
-        // end create select2
-
-
         syncWithInput();
 
         setOutputMarkupId(true);
@@ -189,7 +152,8 @@ public class ReferencePanel extends ScalarPanelAbstract {
 
 
         // find the links...
-        final List<LinkAndLabel> entityActions = EntityActionUtil.getEntityActionLinksForAssociation(this.scalarModel, getDeploymentCategory());
+        final List<LinkAndLabel> entityActions =
+                EntityActionUtil.getEntityActionLinksForAssociation(this.scalarModel, getDeploymentCategory());
 
         addPositioningCssTo(labelIfRegular, entityActions);
 
@@ -224,6 +188,45 @@ public class ReferencePanel extends ScalarPanelAbstract {
         return labelIfRegular;
     }
 
+    private Select2 createSelect2() {
+
+        final Select2 select2;
+        if(getModel().isCollection()) {
+            final IModel<ArrayList<ObjectAdapterMemento>> model =
+                    ScalarModelWithMultiPending.Util.createModel(getModel());
+            select2 = Select2.newSelect2MultiChoice(ID_AUTO_COMPLETE, model, getModel());
+        } else {
+            final IModel<ObjectAdapterMemento> modelObject =
+                    ScalarModelWithPending.Util.createModel(getModel());
+            select2 = Select2.newSelect2Choice(ID_AUTO_COMPLETE, modelObject, getModel());
+        }
+
+        setProviderAndCurrAndPending(select2, getModel().getActionArgsHint());
+
+        final Settings settings = select2.getSettings();
+
+        // one of these three case should be true
+        // (as per the isEditableWithEitherAutoCompleteOrChoices() guard above)
+        if(getModel().hasChoices()) {
+
+            settings.setPlaceholder(getModel().getName());
+
+        } else if(getModel().hasAutoComplete()) {
+
+            final int minLength = getModel().getAutoCompleteMinLength();
+            settings.setMinimumInputLength(minLength);
+            settings.setPlaceholder(getModel().getName());
+
+        } else if(hasObjectAutoComplete()) {
+            final ObjectSpecification typeOfSpecification = getModel().getTypeOfSpecification();
+            final AutoCompleteFacet autoCompleteFacet = typeOfSpecification.getFacet(AutoCompleteFacet.class);
+            final int minLength = autoCompleteFacet.getMinLength();
+            settings.setMinimumInputLength(minLength);
+        }
+
+        return select2;
+    }
+
     // //////////////////////////////////////
 
     // called from buildGui


[2/2] isis git commit: ISIS-785: tidying up, moves methods from SpecificationLoader into either TypeOfFacet.Util or CollectionUtils (as static methods)

Posted by da...@apache.org.
ISIS-785: tidying up, moves methods from SpecificationLoader into either TypeOfFacet.Util or CollectionUtils (as static methods)


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

Branch: refs/heads/maint-1.13.3
Commit: 482286e2b5bbced62a5e01c1618ae38aea3be5c6
Parents: d1453c1
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Jan 20 15:05:54 2017 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jan 20 15:05:54 2017 +0000

----------------------------------------------------------------------
 .../core/metamodel/facets/FacetedMethod.java    |  11 +-
 .../facets/actcoll/typeof/TypeOfFacet.java      |  94 +++++++++++++
 .../action/ActionAnnotationFacetFactory.java    |   5 +-
 .../metamodel/specloader/CollectionUtils.java   |  47 +++++++
 .../specloader/SpecificationLoader.java         | 135 -------------------
 .../actions/ActionMethodsFacetFactoryTest.java  |   1 +
 ...apterMementoProviderForValueChoicesTest.java |   7 -
 7 files changed, 152 insertions(+), 148 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/482286e2/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 c2d6410..7c4b64e 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
@@ -34,7 +34,7 @@ import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
 import org.apache.isis.core.metamodel.facets.collparam.semantics.CollectionSemanticsFacet;
 import org.apache.isis.core.metamodel.facets.collparam.semantics.CollectionSemanticsFacetDefault;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.specloader.*;
 
 /**
  * non-final only so it can be mocked if need be.
@@ -117,7 +117,8 @@ public class FacetedMethod extends TypedHolderDefault implements IdentifiedHolde
             final Type genericParameterType = genericParameterTypes[paramNum];
 
             final FeatureType featureType =
-                    specificationLoader.isParamCollection(parameterType, genericParameterType)
+                    org.apache.isis.core.metamodel.specloader.CollectionUtils
+                            .isParamCollection(parameterType, genericParameterType)
                             ? FeatureType.ACTION_PARAMETER_COLLECTION
                             : FeatureType.ACTION_PARAMETER_SCALAR;
 
@@ -131,11 +132,13 @@ public class FacetedMethod extends TypedHolderDefault implements IdentifiedHolde
                         CollectionSemanticsFacetDefault.forParamType(parameterType, fmp);
                 FacetUtil.addFacet(semanticsFacet);
 
-                TypeOfFacet typeOfFacet = specificationLoader.inferFromGenericParamType(fmp, parameterType, genericParameterType);
+                TypeOfFacet typeOfFacet = TypeOfFacet.Util
+                        .inferFromGenericParamType(fmp, parameterType, genericParameterType,
+                        specificationLoader);
 
                 if(typeOfFacet == null ) {
                     if (org.apache.isis.core.metamodel.specloader.CollectionUtils.isArrayType(parameterType)) {
-                        typeOfFacet = specificationLoader.inferFromArrayType(fmp, parameterType);
+                        typeOfFacet = TypeOfFacet.Util.inferFromArrayType(fmp, parameterType, specificationLoader);
                     }
                 }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/482286e2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacet.java
index 67bd5b5..d3219c1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actcoll/typeof/TypeOfFacet.java
@@ -19,7 +19,17 @@
 
 package org.apache.isis.core.metamodel.facets.actcoll.typeof;
 
+import java.lang.reflect.GenericDeclaration;
+import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.SingleClassValueFacet;
+import org.apache.isis.core.metamodel.specloader.CollectionUtils;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 /**
  * The type of the collection or the action.
@@ -30,4 +40,88 @@ import org.apache.isis.core.metamodel.facets.SingleClassValueFacet;
  * <tt>@TypeOf</tt> annotation.
  */
 public interface TypeOfFacet extends SingleClassValueFacet {
+
+    public static class Util {
+        private Util(){}
+
+        @Programmatic
+        public static TypeOfFacet inferFromGenericReturnType(
+                final Class<?> cls,
+                final Method method,
+                final FacetHolder holder,
+                final SpecificationLoader specificationLoader) {
+
+            final Class<?> methodReturnType = method.getReturnType();
+            if (!CollectionUtils.isCollectionType(methodReturnType)) {
+                return null;
+            }
+
+            final Type type = method.getGenericReturnType();
+            if (!(type instanceof ParameterizedType)) {
+                return null;
+            }
+
+            final ParameterizedType methodParameterizedType = (ParameterizedType) type;
+            final Type[] methodActualTypeArguments = methodParameterizedType.getActualTypeArguments();
+
+            if (methodActualTypeArguments.length == 0) {
+                return null;
+            }
+
+            final Object methodActualTypeArgument = methodActualTypeArguments[0];
+            if (methodActualTypeArgument instanceof Class) {
+                final Class<?> actualType = (Class<?>) methodActualTypeArgument;
+                return new TypeOfFacetInferredFromGenerics(actualType, holder, specificationLoader);
+            }
+
+            if (methodActualTypeArgument instanceof TypeVariable) {
+
+                final TypeVariable<?> methodTypeVariable = (TypeVariable<?>) methodActualTypeArgument;
+                final GenericDeclaration methodGenericClassDeclaration = methodTypeVariable.getGenericDeclaration();
+
+                // try to match up with the actual type argument of the generic superclass.
+                final Type genericSuperclass = cls.getGenericSuperclass();
+                if(genericSuperclass instanceof ParameterizedType) {
+                    final ParameterizedType parameterizedTypeOfSuperclass = (ParameterizedType)genericSuperclass;
+                    if(parameterizedTypeOfSuperclass.getRawType() == methodGenericClassDeclaration) {
+                        final Type[] genericSuperClassActualTypeArguments = parameterizedTypeOfSuperclass.getActualTypeArguments();
+                        // simplification: if there's just one, then use it.
+                        if(methodActualTypeArguments.length == 1) {
+                            final Type actualType = genericSuperClassActualTypeArguments[0];
+                            if(actualType instanceof Class) {
+                                // just being safe
+                                final Class<?> actualCls = (Class<?>) actualType;
+                                return new TypeOfFacetInferredFromGenerics(actualCls, holder, specificationLoader);
+                            }
+                        }
+                    }
+                }
+                // otherwise, what to do?
+            }
+            return null;
+        }
+
+        @Programmatic
+        public static TypeOfFacet inferFromArrayType(
+                final FacetHolder holder,
+                final Class<?> type,
+                final SpecificationLoader specificationLoader) {
+            final Class<?> componentType = CollectionUtils.inferFromArrayType(type);
+            return componentType != null
+                    ? new TypeOfFacetInferredFromArray(componentType, holder, specificationLoader)
+                    : null;
+        }
+
+        @Programmatic
+        public static TypeOfFacet inferFromGenericParamType(
+                final FacetHolder holder,
+                final Class<?> parameterType,
+                final Type genericParameterType,
+                final SpecificationLoader specificationLoader) {
+            final Class<?> actualType = CollectionUtils.inferFromGenericParamType(parameterType, genericParameterType);
+            return actualType != null
+                    ? new TypeOfFacetInferredFromGenerics(actualType, holder, specificationLoader)
+                    : null;
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/482286e2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
index fdb6fb3..b181bee 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
@@ -439,13 +439,14 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract
         // infer from return type
         if(typeOfFacet == null) {
             final Class<?> returnType = method.getReturnType();
-            typeOfFacet = getSpecificationLoader().inferFromArrayType(holder, returnType);
+            typeOfFacet = TypeOfFacet.Util.inferFromArrayType(holder, returnType, getSpecificationLoader());
         }
 
         // infer from generic return type
         if(typeOfFacet == null) {
             final Class<?> cls = processMethodContext.getCls();
-            typeOfFacet = getSpecificationLoader().inferFromGenericReturnType(cls, method, holder);
+            typeOfFacet = TypeOfFacet.Util.inferFromGenericReturnType(cls, method, holder,
+                    getSpecificationLoader());
         }
 
         FacetUtil.addFacet(typeOfFacet);

http://git-wip-us.apache.org/repos/asf/isis/blob/482286e2/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/CollectionUtils.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/CollectionUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/CollectionUtils.java
index 29098eb..1f6133a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/CollectionUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/CollectionUtils.java
@@ -19,6 +19,13 @@
 
 package org.apache.isis.core.metamodel.specloader;
 
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
+
 /**
  * Defines the types which are considered to be collections.
  * 
@@ -40,6 +47,46 @@ public final class CollectionUtils {
         return cls.isArray();
     }
 
+    public static Class<?> inferFromArrayType(final Class<?> type) {
+        if(!isArrayType(type)) {
+            return null;
+        }
+        if (type.isArray()) {
+            final Class<?> componentType = type.getComponentType();
+            return componentType;
+        }
+        return null;
+    }
+
+    @Programmatic
+    public static Class<?> inferFromGenericParamType(
+            final Class<?> parameterType,
+            final Type genericParameterType) {
 
+        if(!isCollectionType(parameterType)) {
+            return null;
+        }
 
+        if(genericParameterType instanceof ParameterizedType) {
+            final ParameterizedType parameterizedType = (ParameterizedType) genericParameterType;
+            final Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
+            if(actualTypeArguments.length == 1) {
+                final Type actualTypeArgument = actualTypeArguments[0];
+                if(actualTypeArgument instanceof Class) {
+                    final Class<?> actualType = (Class<?>) actualTypeArgument;
+                    return actualType;
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * @return true means that either {@link CollectionUtils#inferFromGenericParamType(Class, Type)} or {@link TypeOfFacet.Util#inferFromArrayType(FacetHolder, Class, SpecificationLoader)} will return a non-null value.
+     */
+    public static boolean isParamCollection(
+            final Class<?> parameterType,
+            final Type genericParameterType) {
+        return inferFromGenericParamType(parameterType, genericParameterType) != null || inferFromArrayType(parameterType) != null;
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/482286e2/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 5172394..cf3a009 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
@@ -16,11 +16,6 @@
  */
 package org.apache.isis.core.metamodel.specloader;
 
-import java.lang.reflect.GenericDeclaration;
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -43,11 +38,7 @@ import org.apache.isis.core.commons.ensure.Assert;
 import org.apache.isis.core.commons.exceptions.IsisException;
 import org.apache.isis.core.commons.lang.ClassUtil;
 import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.FacetFactory;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromArray;
-import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics;
 import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacet;
 import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
 import org.apache.isis.core.metamodel.layoutmetadata.LayoutMetadataReader;
@@ -529,131 +520,5 @@ public class SpecificationLoader implements ApplicationScopedComponent {
 
     //endregion
 
-    //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;
-        }
-
-        if(genericParameterType instanceof ParameterizedType) {
-            final ParameterizedType parameterizedType = (ParameterizedType) genericParameterType;
-            final Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
-            if(actualTypeArguments.length == 1) {
-                final Type actualTypeArgument = actualTypeArguments[0];
-                if(actualTypeArgument instanceof Class) {
-                    final Class<?> actualType = (Class<?>) actualTypeArgument;
-                    return actualType;
-                }
-            }
-        }
-        return null;
-    }
-
-    @Programmatic
-    public TypeOfFacet inferFromGenericReturnType(
-            final Class<?> cls,
-            final Method method,
-            final FacetHolder holder) {
-
-        final Class<?> methodReturnType = method.getReturnType();
-        if (!CollectionUtils.isCollectionType(methodReturnType)) {
-            return null;
-        }
-
-        final Type type = method.getGenericReturnType();
-        if (!(type instanceof ParameterizedType)) {
-            return null;
-        }
-
-        final ParameterizedType methodParameterizedType = (ParameterizedType) type;
-        final Type[] methodActualTypeArguments = methodParameterizedType.getActualTypeArguments();
-
-        if (methodActualTypeArguments.length == 0) {
-            return null;
-        }
-
-        final Object methodActualTypeArgument = methodActualTypeArguments[0];
-        if (methodActualTypeArgument instanceof Class) {
-            final Class<?> actualType = (Class<?>) methodActualTypeArgument;
-            return new TypeOfFacetInferredFromGenerics(actualType, holder, this);
-        }
-
-        if (methodActualTypeArgument instanceof TypeVariable) {
-
-            final TypeVariable<?> methodTypeVariable = (TypeVariable<?>) methodActualTypeArgument;
-            final GenericDeclaration methodGenericClassDeclaration = methodTypeVariable.getGenericDeclaration();
-
-            // try to match up with the actual type argument of the generic superclass.
-            final Type genericSuperclass = cls.getGenericSuperclass();
-            if(genericSuperclass instanceof ParameterizedType) {
-                final ParameterizedType parameterizedTypeOfSuperclass = (ParameterizedType)genericSuperclass;
-                if(parameterizedTypeOfSuperclass.getRawType() == methodGenericClassDeclaration) {
-                    final Type[] genericSuperClassActualTypeArguments = parameterizedTypeOfSuperclass.getActualTypeArguments();
-                    // simplification: if there's just one, then use it.
-                    if(methodActualTypeArguments.length == 1) {
-                        final Type actualType = genericSuperClassActualTypeArguments[0];
-                        if(actualType instanceof Class) {
-                            // just being safe
-                            final Class<?> actualCls = (Class<?>) actualType;
-                            return new TypeOfFacetInferredFromGenerics(actualCls, holder, this);
-                        }
-                    }
-                }
-            }
-            // otherwise, what to do?
-        }
-        return null;
-    }
-
-    @Programmatic
-    public TypeOfFacet inferFromArrayType(
-            final FacetHolder holder,
-            final Class<?> 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 componentType;
-        }
-        return null;
-    }
-
-    //endregion
-
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/482286e2/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
index 61b9a3a..7ed3aff 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
@@ -20,6 +20,7 @@
 package org.apache.isis.core.metamodel.facets.actions;
 
 import java.lang.reflect.Method;
+import java.lang.reflect.Type;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;

http://git-wip-us.apache.org/repos/asf/isis/blob/482286e2/core/viewer-wicket-ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ObjectAdapterMementoProviderForValueChoicesTest.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ObjectAdapterMementoProviderForValueChoicesTest.java b/core/viewer-wicket-ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ObjectAdapterMementoProviderForValueChoicesTest.java
index 55e3025..f4d91b5 100644
--- a/core/viewer-wicket-ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ObjectAdapterMementoProviderForValueChoicesTest.java
+++ b/core/viewer-wicket-ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ObjectAdapterMementoProviderForValueChoicesTest.java
@@ -69,13 +69,6 @@ public class ObjectAdapterMementoProviderForValueChoicesTest {
         Assert.assertThat(mementos.iterator().next(), is(mockMemento1));
     }
 
-    @Test
-    public void whenNullPlaceholder() throws Exception {
-        final Collection<ObjectAdapterMemento> mementos = provider.toChoices(Collections.singletonList("$$_isis_null_$$"));
-        Assert.assertThat(mementos.size(), is(1));
-        Assert.assertThat(mementos.iterator().next(), is(nullValue()));
-    }
-
     private ObjectAdapterMemento mock(final String id) {
         final ObjectAdapterMemento mock = context.mock(ObjectAdapterMemento.class, id);
         context.checking(new Expectations() {{