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.