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