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/08 13:45:46 UTC

[isis] branch master updated: ISIS-2774: method finder overhaul (6)

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 6b37e02  ISIS-2774: method finder overhaul (6)
6b37e02 is described below

commit 6b37e02bbdd14418d88e68c7eade51ffd9cb720b
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Sep 8 15:44:52 2021 +0200

    ISIS-2774: method finder overhaul (6)
---
 .../progmodel/ProgrammingModelConstants.java       |  42 +++---
 .../isis/core/metamodel/facets/ActionSupport.java  |  67 +++-------
 .../core/metamodel/facets/ParameterSupport.java    | 144 +++------------------
 .../ActionValidationFacetViaMethodFactory.java     |   4 +-
 ...ActionParameterSupportFacetFactoryAbstract.java |   2 +-
 .../PropertyAutoCompleteFacetMethodFactory.java    |  11 +-
 .../PropertyChoicesFacetViaMethodFactory.java      |  11 +-
 .../isis/core/metamodel/methods/MethodFinder.java  |  14 +-
 .../core/metamodel/methods/MethodFinderPAT.java    |  41 +-----
 9 files changed, 92 insertions(+), 244 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 104de7b..ac4e821 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
@@ -24,6 +24,7 @@ import java.lang.reflect.Member;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.util.Collection;
+import java.util.function.Function;
 import java.util.function.IntFunction;
 import java.util.function.Predicate;
 import java.util.stream.Stream;
@@ -141,24 +142,29 @@ public final class ProgrammingModelConstants {
         }
         private final Can<Class<?>> returnTypes;
 
-        public static Can<Class<?>> nonScalar(final @NonNull Class<?> elementReturnType) {
-            if(VOID.returnTypes.contains(elementReturnType)) {
+        public static Can<Class<?>> nonScalar(final @NonNull Class<?> elementType) {
+            if(VOID.returnTypes.contains(elementType)) {
                 return Can.empty();
             }
             return Can.<Class<?>>of(
                 Can.class,
                 Collection.class,
-                Array.newInstance(elementReturnType, 0).getClass());
+                Array.newInstance(elementType, 0).getClass());
         }
     }
 
     // -- PARAMETER SUPPORT
 
-    public static enum ReturnType {
-        NON_SCALAR,
-        TEXT,
-        BOOLEAN,
-        SAME_AS_PARAMETER_TYPE,
+    @RequiredArgsConstructor
+    public static enum ReturnTypePattern {
+        SCALAR(Can::ofSingleton),
+        NON_SCALAR(ReturnTypeCategory::nonScalar),
+        TEXT(__->ReturnTypeCategory.TRANSLATABLE.getReturnTypes()),
+        BOOLEAN(__->ReturnTypeCategory.BOOLEAN.getReturnTypes());
+        final Function<Class<?>, Can<Class<?>>> matchingTypesForElementType;
+        public Can<Class<?>> matchingTypes(final @NonNull Class<?> elementType) {
+            return matchingTypesForElementType.apply(elementType);
+        }
     }
 
     // -- OBJECT SUPPORT
@@ -193,21 +199,21 @@ public final class ProgrammingModelConstants {
 
     @Getter
     public static enum MemberSupportPrefix {
-        DEFAULT(ReturnType.SAME_AS_PARAMETER_TYPE, "default"),
-        CHOICES(ReturnType.NON_SCALAR, "choices"),
-        AUTO_COMPLETE(ReturnType.NON_SCALAR, "autoComplete"),
-        HIDE(ReturnType.BOOLEAN, "hide"),
-        DISABLE(ReturnType.TEXT, "disable"),
-        VALIDATE(ReturnType.TEXT, "validate"),
-        NAMED(ReturnType.TEXT, "named"), // imperative naming
-        DESCRIBED(ReturnType.TEXT, "described"); // imperative naming
+        DEFAULT(ReturnTypePattern.SCALAR, "default"),
+        CHOICES(ReturnTypePattern.NON_SCALAR, "choices"),
+        AUTO_COMPLETE(ReturnTypePattern.NON_SCALAR, "autoComplete"),
+        HIDE(ReturnTypePattern.BOOLEAN, "hide"),
+        DISABLE(ReturnTypePattern.TEXT, "disable"),
+        VALIDATE(ReturnTypePattern.TEXT, "validate"),
+        NAMED(ReturnTypePattern.TEXT, "named"), // imperative naming
+        DESCRIBED(ReturnTypePattern.TEXT, "described"); // imperative naming
         MemberSupportPrefix(
-                final ReturnType parameterSearchReturnType,
+                final ReturnTypePattern parameterSearchReturnType,
                 final String ...methodNamePrefixes) {
             this.supportMethodReturnType = parameterSearchReturnType;
             this.methodNamePrefixes = Can.of(methodNamePrefixes);
         }
-        private final ReturnType supportMethodReturnType;
+        private final ReturnTypePattern supportMethodReturnType;
         private final Can<String> methodNamePrefixes;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/ActionSupport.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/ActionSupport.java
index 07b24a6..aaa31ed 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/ActionSupport.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/ActionSupport.java
@@ -29,8 +29,7 @@ import org.springframework.lang.Nullable;
 
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.collections._Arrays;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ReturnType;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ReturnTypeCategory;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ReturnTypePattern;
 import org.apache.isis.core.metamodel.methods.MethodFinder;
 import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
 import org.apache.isis.core.metamodel.methods.MethodFinderPAT;
@@ -52,7 +51,7 @@ public final class ActionSupport {
         @NonNull FacetFactory.ProcessMethodContext processMethodContext;
         @Getter @NonNull MethodFinderOptions finderOptions;
         @NonNull EnumSet<SearchAlgorithm> searchAlgorithms;
-        @NonNull ReturnType returnType;
+        @NonNull ReturnTypePattern returnTypePattern;
 
         Class<?> additionalParamType;
 
@@ -109,28 +108,15 @@ public final class ActionSupport {
         val paramTypes = searchRequest.getParamTypes();
         val finderOptions = searchRequest.getFinderOptions();
         val additionalParamTypes = Can.ofNullable(searchRequest.getAdditionalParamType());
-
-        switch(searchRequest.getReturnType()) {
-        case BOOLEAN:
-            MethodFinderPAT
-                .findMethodWithPATArg_returningBoolean(
-                        finderOptions,
-                        paramTypes, additionalParamTypes)
-                .map(ActionSupport::toSearchResult)
-                .forEach(onMethodFound);
-            break;
-        case TEXT:
-            MethodFinderPAT
-                .findMethodWithPATArg_returningText(
-                        finderOptions,
-                        paramTypes, additionalParamTypes)
-                .map(ActionSupport::toSearchResult)
-                .forEach(onMethodFound);
-            break;
-        default:
-
-        }
-
+        val anyOfReturnTypes = searchRequest.getReturnTypePattern().matchingTypes(void.class); // ignores actual type
+
+        MethodFinderPAT
+        .findMethodWithPATArg_returningAnyOf(
+                finderOptions,
+                anyOfReturnTypes,
+                paramTypes, additionalParamTypes)
+        .map(ActionSupport::toSearchResult)
+        .forEach(onMethodFound);
     }
 
     private static ActionSupportingMethodSearchResult toSearchResult(
@@ -156,28 +142,15 @@ public final class ActionSupport {
         if(paramsConsideredCount>=0) {
 
             val paramTypesToLookFor = concat(paramTypes, paramsConsideredCount, additionalParamType);
-
-            switch(searchRequest.getReturnType()) {
-            case BOOLEAN:
-                MethodFinder
-                    .findMethod_returningCategory(
-                            finderOptions,
-                            ReturnTypeCategory.BOOLEAN,
-                            paramTypesToLookFor)
-                    .map(ActionSupport::toSearchResult)
-                    .forEach(onMethodFound);
-                break;
-            case TEXT:
-                MethodFinder
-                    .findMethod_returningCategory(
-                            finderOptions,
-                            ReturnTypeCategory.TRANSLATABLE,
-                            paramTypesToLookFor)
-                    .map(ActionSupport::toSearchResult)
-                    .forEach(onMethodFound);
-                break;
-            default:
-            }
+            val anyOfReturnTypes = searchRequest.getReturnTypePattern().matchingTypes(void.class); // ignores actual type
+
+            MethodFinder
+            .findMethod_returningAnyOf(
+                    finderOptions,
+                    anyOfReturnTypes,
+                    paramTypesToLookFor)
+            .map(ActionSupport::toSearchResult)
+            .forEach(onMethodFound);
 
         }
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/ParameterSupport.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/ParameterSupport.java
index 69aeefc..1ff02bf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/ParameterSupport.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/ParameterSupport.java
@@ -30,8 +30,7 @@ import org.springframework.lang.Nullable;
 
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.collections._Arrays;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ReturnType;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ReturnTypeCategory;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ReturnTypePattern;
 import org.apache.isis.core.metamodel.methods.MethodFinder;
 import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
 import org.apache.isis.core.metamodel.methods.MethodFinderPAT;
@@ -57,7 +56,7 @@ public final class ParameterSupport {
         @NonNull FacetFactory.ProcessMethodContext processMethodContext;
         @NonNull Can<IntFunction<String>> paramIndexToMethodNameProviders;
         @NonNull EnumSet<SearchAlgorithm> searchAlgorithms;
-        @NonNull ReturnType returnType;
+        @NonNull ReturnTypePattern returnTypePattern;
 
         Class<?> additionalParamType;
 
@@ -133,47 +132,14 @@ public final class ParameterSupport {
         val paramType = paramTypes[paramIndex];
         val additionalParamTypes = Can.ofNullable(searchRequest.getAdditionalParamType());
 
-        switch(searchRequest.getReturnType()) {
-        case BOOLEAN:
-            MethodFinderPAT
-                .findMethodWithPATArg_returningBoolean(
-                        MethodFinderOptions
-                        .memberSupport(type, methodNames, processMethodContext.getIntrospectionPolicy()),
-                        paramTypes, additionalParamTypes)
-                .map(methodAndPatConstructor->toSearchResult(paramIndex, paramType, methodAndPatConstructor))
-                .forEach(onMethodFound);
-            break;
-        case TEXT:
-            MethodFinderPAT
-                .findMethodWithPATArg_returningText(
-                        MethodFinderOptions
-                        .memberSupport(type, methodNames, processMethodContext.getIntrospectionPolicy()),
-                        paramTypes, additionalParamTypes)
-                .map(methodAndPatConstructor->toSearchResult(paramIndex, paramType, methodAndPatConstructor))
-                .forEach(onMethodFound);
-            break;
-        case NON_SCALAR:
-            MethodFinderPAT
-                .findMethodWithPATArg_returningNonScalar(
-                        MethodFinderOptions
-                        .memberSupport(type, methodNames, processMethodContext.getIntrospectionPolicy()),
-                        paramType, paramTypes, additionalParamTypes)
-                .map(methodAndPatConstructor->toSearchResult(paramIndex, paramType, methodAndPatConstructor))
-                .forEach(onMethodFound);
-            break;
-        case SAME_AS_PARAMETER_TYPE:
-            MethodFinderPAT
-                .findMethodWithPATArg(
-                        MethodFinderOptions
-                        .memberSupport(type, methodNames, processMethodContext.getIntrospectionPolicy()),
-                        paramType, paramTypes, additionalParamTypes)
-                .map(methodAndPatConstructor->toSearchResult(paramIndex, paramType, methodAndPatConstructor))
-                .forEach(onMethodFound);
-            break;
-        default:
-
-        }
-
+        MethodFinderPAT
+        .findMethodWithPATArg_returningAnyOf(
+                MethodFinderOptions
+                .memberSupport(type, methodNames, processMethodContext.getIntrospectionPolicy()),
+                searchRequest.getReturnTypePattern().matchingTypes(paramType),
+                paramTypes, additionalParamTypes)
+        .map(methodAndPatConstructor->toSearchResult(paramIndex, paramType, methodAndPatConstructor))
+        .forEach(onMethodFound);
     }
 
     private static ParamSupportingMethodSearchResult toSearchResult(
@@ -199,47 +165,14 @@ public final class ParameterSupport {
         val paramType = paramTypes[paramIndex];
         val singleArg = new Class<?>[]{paramType};
 
-        switch(searchRequest.getReturnType()) {
-        case BOOLEAN:
-            MethodFinder
-                .findMethod_returningCategory(
-                        MethodFinderOptions
-                        .memberSupport(type, methodNames, processMethodContext.getIntrospectionPolicy()),
-                        ReturnTypeCategory.BOOLEAN,
-                        singleArg)
-                .map(supportingMethod->toSearchResult(paramIndex, paramType, supportingMethod))
-                .forEach(onMethodFound);
-            break;
-        case TEXT:
-            MethodFinder
-                .findMethod_returningCategory(
-                        MethodFinderOptions
-                        .memberSupport(type, methodNames, processMethodContext.getIntrospectionPolicy()),
-                        ReturnTypeCategory.TRANSLATABLE,
-                        singleArg)
-                .map(supportingMethod->toSearchResult(paramIndex, paramType, supportingMethod))
-                .forEach(onMethodFound);
-            break;
-        case NON_SCALAR:
-            MethodFinder
-                .findMethod_returningNonScalar(
-                        MethodFinderOptions
-                        .memberSupport(type, methodNames, processMethodContext.getIntrospectionPolicy()),
-                        paramType, singleArg)
-                .map(supportingMethod->toSearchResult(paramIndex, paramType, supportingMethod))
-                .forEach(onMethodFound);
-            break;
-        case SAME_AS_PARAMETER_TYPE:
-            MethodFinder
-                .findMethod(
-                        MethodFinderOptions
-                        .memberSupport(type, methodNames, processMethodContext.getIntrospectionPolicy()),
-                        paramType, singleArg)
-                .map(supportingMethod->toSearchResult(paramIndex, paramType, supportingMethod))
-                .forEach(onMethodFound);
-            break;
-        default:
-        }
+        MethodFinder
+        .findMethod_returningAnyOf(
+                MethodFinderOptions
+                .memberSupport(type, methodNames, processMethodContext.getIntrospectionPolicy()),
+                searchRequest.getReturnTypePattern().matchingTypes(paramType),
+                singleArg)
+        .map(supportingMethod->toSearchResult(paramIndex, paramType, supportingMethod))
+        .forEach(onMethodFound);
 
     }
 
@@ -265,49 +198,14 @@ public final class ParameterSupport {
             val paramTypesToLookFor = concat(paramTypes, paramsConsideredCount, additionalParamType);
 
             final Method supportingMethod;
-
-            switch(searchRequest.getReturnType()) {
-            case BOOLEAN:
-                supportingMethod = MethodFinder
-                    .findMethod_returningCategory(
-                            MethodFinderOptions
-                            .memberSupport(type, methodNames, processMethodContext.getIntrospectionPolicy()),
-                            ReturnTypeCategory.BOOLEAN,
-                            paramTypesToLookFor)
-                    .findFirst()
-                    .orElse(null);
-                break;
-            case TEXT:
-                supportingMethod = MethodFinder
-                    .findMethod_returningCategory(
+            supportingMethod = MethodFinder
+                    .findMethod_returningAnyOf(
                             MethodFinderOptions
                             .memberSupport(type, methodNames, processMethodContext.getIntrospectionPolicy()),
-                            ReturnTypeCategory.TRANSLATABLE,
+                            searchRequest.getReturnTypePattern().matchingTypes(paramType),
                             paramTypesToLookFor)
                     .findFirst()
                     .orElse(null);
-                break;
-            case NON_SCALAR:
-                supportingMethod = MethodFinder
-                    .findMethod_returningNonScalar(
-                            MethodFinderOptions
-                            .memberSupport(type, methodNames, processMethodContext.getIntrospectionPolicy()),
-                            paramType, paramTypesToLookFor)
-                    .findFirst()
-                    .orElse(null);
-                break;
-            case SAME_AS_PARAMETER_TYPE:
-                supportingMethod = MethodFinder
-                    .findMethod(
-                            MethodFinderOptions
-                            .memberSupport(type, methodNames, processMethodContext.getIntrospectionPolicy()),
-                            paramType, paramTypesToLookFor)
-                    .findFirst()
-                    .orElse(null);
-                break;
-            default:
-                supportingMethod = null;
-            }
 
             if(supportingMethod != null) {
                 onMethodFound.accept(toSearchResult(paramIndex, paramType, supportingMethod));
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java
index be864a7..7d30916 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/validate/method/ActionValidationFacetViaMethodFactory.java
@@ -23,7 +23,7 @@ import java.util.EnumSet;
 import javax.inject.Inject;
 
 import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ReturnType;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ReturnTypePattern;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.ActionSupport;
@@ -52,7 +52,7 @@ extends MemberSupportFacetFactoryAbstract {
 
         val searchRequest = ActionSupport.ActionSupportingMethodSearchRequest.builder()
                 .processMethodContext(processMethodContext)
-                .returnType(ReturnType.TEXT)
+                .returnTypePattern(ReturnTypePattern.TEXT)
                 .finderOptions(methodFinderOptions)
                 .searchAlgorithms(EnumSet.of(SearchAlgorithm.PAT, SearchAlgorithm.ALL_PARAM_TYPES))
                 .build();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/support/ActionParameterSupportFacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/support/ActionParameterSupportFacetFactoryAbstract.java
index ddb0bc6..0a795e4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/support/ActionParameterSupportFacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/support/ActionParameterSupportFacetFactoryAbstract.java
@@ -74,7 +74,7 @@ extends MemberAndPropertySupportFacetFactoryAbstract {
                         .processMethodContext(processMethodContext)
                         .paramIndexToMethodNameProviders(methodNameCandidates)
                         .searchAlgorithms(EnumSet.of(SearchAlgorithm.PAT, SearchAlgorithm.SWEEP))
-                        .returnType(memberSupportPrefix.getSupportMethodReturnType()))
+                        .returnTypePattern(memberSupportPrefix.getSupportMethodReturnType()))
                 .build();
 
         ParameterSupport.findParamSupportingMethods(searchRequest, searchResult -> {
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 f0b10ce..ed2f2b1 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
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.facets.properties.autocomplete.method;
 import javax.inject.Inject;
 
 import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ReturnTypeCategory;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.members.support.MemberSupportFacetFactoryAbstract;
@@ -43,18 +44,18 @@ extends MemberSupportFacetFactoryAbstract {
             final MethodFinderOptions methodFinderOptions) {
 
         val getterOrMixinMain = processMethodContext.getMethod();
-        val returnType = getterOrMixinMain.getReturnType();
+        val getterType = getterOrMixinMain.getReturnType();
 
         MethodFinder
-        .findMethod_returningNonScalar(
+        .findMethod_returningAnyOf(
                 methodFinderOptions,
-            returnType,
-            STRING_ARG)
+                ReturnTypeCategory.nonScalar(getterType),
+                STRING_ARG)
         .peek(processMethodContext::removeMethod)
         .forEach(autoCompleteMethod->{
             addFacet(
                     new PropertyAutoCompleteFacetMethod(
-                            autoCompleteMethod, returnType, processMethodContext.getFacetHolder()));
+                            autoCompleteMethod, getterType, 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 25ce222..07584de 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
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.facets.properties.choices.method;
 import javax.inject.Inject;
 
 import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ReturnTypeCategory;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.members.support.MemberSupportFacetFactoryAbstract;
@@ -43,18 +44,18 @@ extends MemberSupportFacetFactoryAbstract {
             final MethodFinderOptions methodFinderOptions) {
 
         val getterOrMixinMain = processMethodContext.getMethod();
-        val returnType = getterOrMixinMain.getReturnType();
+        val getterType = getterOrMixinMain.getReturnType();
 
         MethodFinder
-        .findMethod_returningNonScalar(
+        .findMethod_returningAnyOf(
                 methodFinderOptions,
-            returnType,
-            NO_ARG)
+                ReturnTypeCategory.nonScalar(getterType),
+                NO_ARG)
         .peek(processMethodContext::removeMethod)
         .forEach(choicesMethod->{
             addFacet(
                     new PropertyChoicesFacetViaMethod(
-                            choicesMethod, returnType, processMethodContext.getFacetHolder()));
+                            choicesMethod, getterType, processMethodContext.getFacetHolder()));
         });
 
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinder.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinder.java
index c21a536..3f02fc8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinder.java
@@ -50,22 +50,24 @@ public final class MethodFinder {
 
     // -- SEARCH FOR MULTIPLE NAME CANDIDATES
 
-    public static Stream<Method> findMethod_returningCategory(
+
+    public static Stream<Method> findMethod_returningAnyOf(
             final MethodFinderOptions options,
-            final ReturnTypeCategory returnTypeCategory,
+            final Can<Class<?>> anyOfReturnTypes,
             final Class<?>[] signature) {
 
         return options.streamMethodsMatchingSignature(signature)
-                .filter(hasReturnTypeAnyOf(returnTypeCategory.getReturnTypes()));
+                .filter(hasReturnTypeAnyOf(anyOfReturnTypes));
     }
 
-    public static Stream<Method> findMethod_returningNonScalar(
+    @Deprecated
+    public static Stream<Method> findMethod_returningCategory(
             final MethodFinderOptions options,
-            final Class<?> elementReturnType,
+            final ReturnTypeCategory returnTypeCategory,
             final Class<?>[] signature) {
 
         return options.streamMethodsMatchingSignature(signature)
-                .filter(hasReturnTypeAnyOf(ReturnTypeCategory.nonScalar(elementReturnType)));
+                .filter(hasReturnTypeAnyOf(returnTypeCategory.getReturnTypes()));
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinderPAT.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinderPAT.java
index 2d2d3df..766ff0f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinderPAT.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinderPAT.java
@@ -25,7 +25,6 @@ import java.util.stream.Stream;
 
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.reflection._Reflect;
-import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ReturnTypeCategory;
 import org.apache.isis.core.metamodel.commons.MethodUtil;
 
 import static org.apache.isis.commons.internal.reflection._Reflect.Filter.paramSignatureMatch;
@@ -66,37 +65,14 @@ public final class MethodFinderPAT {
             .flatMap(Optional::stream);
     }
 
-    @Deprecated
-    public Stream<MethodAndPatConstructor> findMethodWithPATArg_returningBoolean(
+    public Stream<MethodAndPatConstructor> findMethodWithPATArg_returningAnyOf(
             final MethodFinderOptions options,
+            final Can<Class<?>> returnTypes,
             final Class<?>[] signature,
             final Can<Class<?>> additionalParamTypes) {
 
-        return MethodFinderPAT
-        .findMethodWithPATArg_returningAnyOf(
-                options, ReturnTypeCategory.BOOLEAN.getReturnTypes(), signature, additionalParamTypes);
-    }
-
-    @Deprecated
-    public Stream<MethodAndPatConstructor> findMethodWithPATArg_returningText(
-            final MethodFinderOptions options,
-            final Class<?>[] signature,
-            final Can<Class<?>> additionalParamTypes) {
-
-        return MethodFinderPAT
-        .findMethodWithPATArg_returningAnyOf(
-                options, ReturnTypeCategory.TRANSLATABLE.getReturnTypes(), signature, additionalParamTypes);
-    }
-
-    public Stream<MethodAndPatConstructor> findMethodWithPATArg_returningNonScalar(
-            final MethodFinderOptions options,
-            final Class<?> elementReturnType,
-            final Class<?>[] signature,
-            final Can<Class<?>> additionalParamTypes) {
-
-        return MethodFinderPAT
-        .findMethodWithPATArg_returningAnyOf(
-                options, ReturnTypeCategory.nonScalar(elementReturnType), signature, additionalParamTypes);
+        return returnTypes.stream()
+        .flatMap(returnType->findMethodWithPATArg(options, returnType, signature, additionalParamTypes));
     }
 
     // -- HELPER
@@ -112,14 +88,5 @@ public final class MethodFinderPAT {
                 .findFirst();
     }
 
-    private Stream<MethodAndPatConstructor> findMethodWithPATArg_returningAnyOf(
-            final MethodFinderOptions options,
-            final Can<Class<?>> returnTypes,
-            final Class<?>[] signature,
-            final Can<Class<?>> additionalParamTypes) {
-
-        return returnTypes.stream()
-        .flatMap(returnType->findMethodWithPATArg(options, returnType, signature, additionalParamTypes));
-    }
 
 }