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.