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:21 UTC
[14/36] isis git commit: ISIS-785: moves logic for inferring element
type for arrays "ie X[] foo()" from ActionAnnotationFacetFactory to
SpecificationLoader,
in order that it might be reused for similar processing of
FacetedMethodParameters for actions s
ISIS-785: moves logic for inferring element type for arrays "ie X[] foo()" from ActionAnnotationFacetFactory to SpecificationLoader, in order that it might be reused for similar processing of FacetedMethodParameters for actions such as "void foo(X[] xxx)"
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/31d0a72a
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/31d0a72a
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/31d0a72a
Branch: refs/heads/master
Commit: 31d0a72a6430203b2c53a22c4249728b7137081d
Parents: 449f569
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Jan 18 12:07:56 2017 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Jan 18 12:07:56 2017 +0000
----------------------------------------------------------------------
.../action/ActionAnnotationFacetFactory.java | 24 ++++----------------
.../specloader/SpecificationLoader.java | 13 +++++++++++
2 files changed, 17 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/31d0a72a/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 7b58bac..4912ba6 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
@@ -46,10 +46,9 @@ import org.apache.isis.core.metamodel.facets.Annotations;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
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.actions.action.bulk.BulkFacetObjectOnly;
import org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation;
import org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForBulkAnnotation;
+import org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetObjectOnly;
import org.apache.isis.core.metamodel.facets.actions.action.command.CommandFacetForActionAnnotation;
import org.apache.isis.core.metamodel.facets.actions.action.command.CommandFacetForCommandAnnotation;
import org.apache.isis.core.metamodel.facets.actions.action.disabled.DisabledFacetForDisabledAnnotationOnAction;
@@ -85,7 +84,6 @@ import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
import org.apache.isis.core.metamodel.services.ServicesInjector;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.specloader.CollectionUtils;
-import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorComposite;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForDeprecatedAnnotation;
import org.apache.isis.core.metamodel.util.EventUtil;
@@ -441,32 +439,18 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract
// infer from return type
if(facet == null) {
final Class<?> returnType = method.getReturnType();
- if (returnType.isArray()) {
- final Class<?> componentType = returnType.getComponentType();
- facet = new TypeOfFacetInferredFromArray(componentType, holder, getSpecificationLoader());
- }
+ facet = getSpecificationLoader().inferForArray(holder, returnType);
}
// infer from generic return type
if(facet == null) {
- facet = inferFromGenericReturnType(processMethodContext);
+ final Class<?> cls = processMethodContext.getCls();
+ facet = getSpecificationLoader().inferFromGenericReturnType(cls, method, holder);
}
FacetUtil.addFacet(facet);
}
- private TypeOfFacet inferFromGenericReturnType(
- final ProcessMethodContext processMethodContext) {
-
- final Class<?> cls = processMethodContext.getCls();
- final Method method = processMethodContext.getMethod();
- final FacetHolder holder = processMethodContext.getFacetHolder();
-
- final SpecificationLoader specificationLoader = getSpecificationLoader();
-
- return specificationLoader.inferFromGenericReturnType(cls, method, holder);
- }
-
// ///////////////////////////////////////////////////////////////
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/31d0a72a/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 64e3251..caf059b 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
@@ -45,7 +45,9 @@ 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.FacetedMethod;
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;
@@ -579,6 +581,17 @@ public class SpecificationLoader implements ApplicationScopedComponent {
}
return null;
}
+
+ @Programmatic
+ public TypeOfFacet inferForArray(
+ final FacetedMethod holder,
+ final Class<?> type) {
+ if (type.isArray()) {
+ final Class<?> componentType = type.getComponentType();
+ return new TypeOfFacetInferredFromArray(componentType, holder, this);
+ }
+ return null;
+ }
//endregion