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