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/19 11:09:20 UTC

[14/24] 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/maint-1.13.3
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