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 2021/09/03 11:09:45 UTC

[isis] branch master updated: ISIS-2774: ensure eval methods are not void

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 090d4ed  ISIS-2774: ensure eval methods are not void
090d4ed is described below

commit 090d4ed7f7712acff9d0385fdfcd8591d9400193
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Sep 3 13:09:37 2021 +0200

    ISIS-2774: ensure eval methods are not void
---
 .../apache/isis/core/metamodel/commons/MethodUtil.java   | 16 ++++++++++++++++
 .../apache/isis/core/metamodel/facets/Evaluators.java    |  1 +
 2 files changed, 17 insertions(+)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/MethodUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/MethodUtil.java
index 2373263..5e09ba3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/MethodUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/MethodUtil.java
@@ -26,6 +26,7 @@ import java.util.Objects;
 import java.util.function.Predicate;
 
 import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.collections._Collections;
 import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 
 import lombok.val;
@@ -56,6 +57,21 @@ public class MethodUtil {
         return method.getParameterCount() == 0;
     }
 
+    public static boolean isVoid(final Method method) {
+        val returnType = method.getReturnType();
+        return returnType.equals(void.class)
+                    || returnType.equals(Void.class);
+    }
+
+    public static boolean isNotVoid(final Method method) {
+        return !isVoid(method);
+    }
+
+    public static boolean isScalar(final Method method) {
+        return isNotVoid(method)
+                    && ! _Collections.isCollectionOrArrayOrCanType(method.getReturnType());
+    }
+
 
     @UtilityClass
     public static class Predicates {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/Evaluators.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/Evaluators.java
index 52b8ed6..7f5f3bf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/Evaluators.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/Evaluators.java
@@ -82,6 +82,7 @@ public final class Evaluators  {
         .streamDeclaredMethods(cls)
         .filter(MethodUtil::isNotStatic)
         .filter(MethodUtil::isNoArg)
+        .filter(MethodUtil::isNotVoid)
         .map(method->MethodEvaluator.create(method, annotationType))
         .flatMap(Optional::stream);
     }