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 2019/12/17 15:03:38 UTC

[isis] branch master updated: ISIS-2226: invokeAutofit(...) allow additional args to be null-able

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 8ffe71a  ISIS-2226: invokeAutofit(...) allow additional args to be null-able
8ffe71a is described below

commit 8ffe71a7fb25cc5f585ac5b0edbe56eb77de56ff
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Dec 17 16:03:26 2019 +0100

    ISIS-2226: invokeAutofit(...) allow additional args to be null-able
---
 .../method/ActionParameterAutoCompleteFacetViaMethod.java        | 5 ++++-
 .../main/java/org/apache/isis/metamodel/spec/ManagedObject.java  | 9 ++++++---
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
index 10d8d4d..abe7474 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethod.java
@@ -23,6 +23,7 @@ import java.lang.reflect.Method;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal._Constants;
@@ -84,7 +85,9 @@ implements ImperativeFacet {
 
         final Object collectionOrArray = 
                 ManagedObject.InvokeUtil.invokeAutofit(
-                        method, owningAdapter, dependentArgs, Can.ofSingleton(searchArg));
+                        method, owningAdapter, dependentArgs, 
+                        Can.ofSingleton(Optional.ofNullable(searchArg)));
+        
         if (collectionOrArray == null) {
             return _Constants.emptyObjects;
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
index 585d249..32c7bcd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/ManagedObject.java
@@ -23,6 +23,7 @@ import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Optional;
 import java.util.function.Function;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
@@ -443,7 +444,7 @@ public interface ManagedObject {
                 final Method method, 
                 final ManagedObject target, 
                 final Can<? extends ManagedObject> dependentArgs,
-                final Can<Object> additionalArgValues) {
+                final Can<Optional<Object>> additionalArgValues) {
     
             val argArray = adjust(method, dependentArgs, additionalArgValues);
             
@@ -457,13 +458,14 @@ public interface ManagedObject {
                 final Method method, 
                 final ManagedObject target, 
                 final Can<? extends ManagedObject> dependentArgs) {
+            
             return invokeAutofit(method, target, dependentArgs, Can.empty());
         }
     
         private static Object[] adjust(
                 final Method method, 
                 final Can<? extends ManagedObject> dependentArgs,
-                final Can<Object> additionalArgValues) {
+                final Can<Optional<Object>> additionalArgValues) {
             
             val parameterTypes = method.getParameterTypes();
             val paramCount = parameterTypes.length;
@@ -483,7 +485,8 @@ public interface ManagedObject {
             // add the additional parameter values (if any)
             int paramIndex = dependentArgsToConsiderCount;
             for(val additionalArg : additionalArgValues) {
-                adjusted[paramIndex] = additionalArg;
+                val paramType = parameterTypes[paramIndex];
+                adjusted[paramIndex] = honorPrimitiveDefaults(paramType, additionalArg.orElse(null));
                 ++paramIndex;
             }