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/07 21:38:45 UTC

[isis] branch master updated: ISIS-2774: improves autoCompleteXxx and choicesXxx member support method search

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 92ee37f  ISIS-2774: improves autoCompleteXxx and choicesXxx member support method search
92ee37f is described below

commit 92ee37ff59bd6c470cbb21f01ae00b49bbe32bc8
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Sep 7 23:38:36 2021 +0200

    ISIS-2774: improves autoCompleteXxx and choicesXxx member support method
    search
    
    the return type of the support methods must be a non-scalar, if not
    methods will not be picked up and the generic orphaned methods
    validation will report these or not based on annotation policy; hence we
    don't need any extra validation steps to verify type conformity of
    picked up support methods
---
 .../isis/core/config/progmodel/ProgrammingModelConstants.java |  3 +++
 .../isis/core/metamodel/facets/FacetFactoryAbstract.java      |  1 -
 .../method/PropertyAutoCompleteFacetMethodFactory.java        | 11 +++++------
 .../choices/method/PropertyChoicesFacetViaMethodFactory.java  | 11 +++++------
 .../facets/properties/PropertyMethodsFacetFactoryTest.java    |  4 ++--
 5 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java b/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
index 7233fd3..7627cf6 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
@@ -142,6 +142,9 @@ public final class ProgrammingModelConstants {
         private final Can<Class<?>> returnTypes;
 
         public static Can<Class<?>> nonScalar(final @NonNull Class<?> elementReturnType) {
+            if(VOID.returnTypes.contains(elementReturnType)) {
+                return Can.empty();
+            }
             return Can.<Class<?>>of(
                 Can.class,
                 Collection.class,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
index e4d5090..d7e7557 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactoryAbstract.java
@@ -85,7 +85,6 @@ implements FacetFactory, HasMetaModelContext {
 
     // -- METHOD UTILITITES
 
-    protected static final Class<?> ANY_RETURN = null;
     protected static final Class<?>[] NO_ARG = new Class<?>[0];
     protected static final Class<?>[] STRING_ARG = new Class<?>[] {String.class};
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
index db8d36f..cc70adc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/autocomplete/method/PropertyAutoCompleteFacetMethodFactory.java
@@ -43,20 +43,19 @@ extends MemberSupportFacetFactoryAbstract {
             final ProcessMethodContext processMethodContext,
             final Can<String> methodNameCandidates) {
 
+        val getterOrMixinMain = processMethodContext.getMethod();
+        val returnType = getterOrMixinMain.getReturnType();
+
         MethodFinder
-        .findMethod(
+        .findMethod_returningNonScalar(
             MethodFinderOptions
             .memberSupport(processMethodContext.getIntrospectionPolicy()),
             processMethodContext.getCls(),
             methodNameCandidates,
-            ANY_RETURN,
+            returnType,
             STRING_ARG)
         .peek(processMethodContext::removeMethod)
         .forEach(autoCompleteMethod->{
-
-            val getterOrMixinMain = processMethodContext.getMethod();
-            val returnType = getterOrMixinMain.getReturnType();
-
             addFacet(
                     new PropertyAutoCompleteFacetMethod(
                             autoCompleteMethod, returnType, processMethodContext.getFacetHolder()));
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
index 299f2df..a1eea83 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/choices/method/PropertyChoicesFacetViaMethodFactory.java
@@ -43,20 +43,19 @@ extends MemberSupportFacetFactoryAbstract {
             final ProcessMethodContext processMethodContext,
             final Can<String> methodNameCandidates) {
 
+        val getterOrMixinMain = processMethodContext.getMethod();
+        val returnType = getterOrMixinMain.getReturnType();
+
         MethodFinder
-        .findMethod(
+        .findMethod_returningNonScalar(
             MethodFinderOptions
             .memberSupport(processMethodContext.getIntrospectionPolicy()),
             processMethodContext.getCls(),
             methodNameCandidates,
-            ANY_RETURN,
+            returnType,
             NO_ARG)
         .peek(processMethodContext::removeMethod)
         .forEach(choicesMethod->{
-
-            val getterOrMixinMain = processMethodContext.getMethod();
-            val returnType = getterOrMixinMain.getReturnType();
-
             addFacet(
                     new PropertyChoicesFacetViaMethod(
                             choicesMethod, returnType, processMethodContext.getFacetHolder()));
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
index 453982d..51f8eec 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/PropertyMethodsFacetFactoryTest.java
@@ -208,7 +208,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
             }
 
             @SuppressWarnings("unused")
-            public Object[] choicesFirstName() {
+            public String[] choicesFirstName() {
                 return null;
             }
         }
@@ -238,7 +238,7 @@ public class PropertyMethodsFacetFactoryTest extends AbstractFacetFactoryTest {
             }
 
             @SuppressWarnings("unused")
-            public Object[] autoCompleteFirstName(final String searchArg) {
+            public String[] autoCompleteFirstName(final String searchArg) {
                 return null;
             }
         }