You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2018/04/12 23:49:17 UTC

[isis] branch master updated: ISIS-1599 adds Array as supported action parameter

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 <ah...@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
ahuber@apache.org.