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;
}