This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new d50efdd  ISIS-1599 adds Array as supported action parameter
d50efdd is described below

commit d50efdd8af1dbe1df80ec8c81e17026ee981739f
Author: Andi Huber <ahu...@apache.org>
AuthorDate: Fri Apr 13 01:49:12 2018 +0200

    ISIS-1599 adds Array as supported action parameter
---
 .../ActionChoicesForCollectionParameterFacetFactory.java   |  2 +-
 .../actions/action/invocation/RelaxedMethodInvoker.java    | 14 +++++++++++++-
 .../facets/collparam/semantics/CollectionSemantics.java    |  2 +-
 3 files changed, 15 insertions(+), 3 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionChoicesForCollectionParameterFacetFactory.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionChoicesForCollectionParameterFacetFactory.java
index 8b5ae4f..f779a07 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionChoicesForCollectionParameterFacetFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionChoicesForCollectionParameterFacetFactory.java
@@ -119,7 +119,7 @@ public class 
ActionChoicesForCollectionParameterFacetFactory extends FacetFactor
                                        validationFailures.add(
                                         "Collection action parameter found 
that is not exactly one "
                                         + "of the following supported types: "
-                                        + "List, Set, SortedSet or Collection. 
 "
+                                        + "List, Set, SortedSet, Collection or 
Array.  "
                                         + "Class: %s action: %s parameter %d",
                                         objectSpec.getFullIdentifier(), 
objectAction.getName(), paramNum);
                                        return; 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/RelaxedMethodInvoker.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/RelaxedMethodInvoker.java
index 1c0d38c..52dc432 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/RelaxedMethodInvoker.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/RelaxedMethodInvoker.java
@@ -26,12 +26,14 @@ import java.util.List;
 import java.util.Set;
 import java.util.SortedSet;
 
+import org.apache.isis.applib.internal.base._Casts;
 import org.apache.isis.applib.internal.base._NullSafe;
+import org.apache.isis.applib.internal.collections._Arrays;
 import org.apache.isis.applib.internal.collections._Collections;
 
 /**
  * Package private utility for method invocation pre-processing. 
- * Adapts supported collection parameter types List, Set, SortedSet and 
Collection.
+ * Adapts supported collection parameter types List, Set, SortedSet, 
Collection and Arrays.
  */
 class RelaxedMethodInvoker {
 
@@ -63,12 +65,22 @@ class RelaxedMethodInvoker {
         * @param parameterType
         * @return
         */
+       
        private static Object adapt(Object obj, Class<?> parameterType) {
 
                if(obj==null) {
                        return null;
                }
                
+               if(_Arrays.isArrayType(parameterType)) {
+                       final Class<?> componentType = 
_Arrays.inferComponentTypeIfAny(parameterType);
+                       if(componentType==null) {
+                               return obj;
+                       }
+                       @SuppressWarnings("rawtypes") final List list = 
(List)obj;
+                       return _Arrays.toArray(_Casts.uncheckedCast(list), 
componentType);
+               }
+               
                // allow no side effects on Collection arguments
                if(Collection.class.equals(parameterType)) {
                        return 
_Collections.asUnmodifiableCollection((List<?>)obj);
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collparam/semantics/CollectionSemantics.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collparam/semantics/CollectionSemantics.java
index 76f5c60..b841135 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collparam/semantics/CollectionSemantics.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collparam/semantics/CollectionSemantics.java
@@ -26,7 +26,7 @@ import java.util.SortedSet;
 
 public enum CollectionSemantics {
        
-       ARRAY,
+       ARRAY(true),
        
        COLLECTION_INTERFACE(true),
        

-- 
To stop receiving notification emails like this one, please contact
ahu...@apache.org.

Reply via email to