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 14:19:41 UTC
[isis] branch master updated: ISIS-2774: unify common search logic
within ActionParameterSupportFacetAbstract
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 ca4f0ad ISIS-2774: unify common search logic within ActionParameterSupportFacetAbstract
ca4f0ad is described below
commit ca4f0ad1ed4a5098000a308878fb1daa63bb2fcf
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Sep 7 16:19:31 2021 +0200
ISIS-2774: unify common search logic within
ActionParameterSupportFacetAbstract
---
.../progmodel/ProgrammingModelConstants.java | 28 ++++++---
.../core/metamodel/facets/ParameterSupport.java | 8 +--
.../DescribedAsFacetForMemberViaMethodFactory.java | 3 +-
...ParameterAutoCompleteFacetViaMethodFactory.java | 72 +++++-----------------
...ctionParameterChoicesFacetViaMethodFactory.java | 65 +++++--------------
...tionParameterDefaultsFacetViaMethodFactory.java | 64 +++++--------------
.../ActionParameterDisabledFacetViaMethod.java | 10 +--
...tionParameterDisabledFacetViaMethodFactory.java | 69 ++++-----------------
...ActionParameterHiddenFacetViaMethodFactory.java | 65 ++++---------------
.../ActionParameterSupportFacetAbstract.java} | 67 ++++++++++----------
...onParameterValidationFacetViaMethodFactory.java | 5 +-
11 files changed, 130 insertions(+), 326 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 118884e..914a632 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
@@ -148,6 +148,15 @@ public final class ProgrammingModelConstants {
}
}
+ // -- PARAMETER SUPPORT
+
+ public static enum ReturnType {
+ NON_SCALAR,
+ TEXT,
+ BOOLEAN,
+ SAME_AS_PARAMETER_TYPE,
+ }
+
// -- OBJECT SUPPORT
@Getter
@@ -176,18 +185,21 @@ public final class ProgrammingModelConstants {
@Getter
public static enum MemberSupportPrefix {
- DEFAULT("default"),
- CHOICES("choices"),
- AUTO_COMPLETE("autoComplete"),
- HIDE("hide"),
- DISABLE("disable"),
- VALIDATE("validate"),
- NAMED("named"), // imperative naming
- DESCRIBED("described"); // imperative naming
+ 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
MemberSupportPrefix(
+ final ReturnType parameterSearchReturnType,
final String ...methodNamePrefixes) {
+ this.parameterSearchReturnType = parameterSearchReturnType;
this.methodNamePrefixes = Can.of(methodNamePrefixes);
}
+ private final ReturnType parameterSearchReturnType;
private final Can<String> methodNamePrefixes;
}
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 3998f99..1f7049a 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,6 +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.metamodel.methods.MethodFinder;
import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
import org.apache.isis.core.metamodel.methods.MethodFinderUtils.MethodAndPpmConstructor;
@@ -51,13 +52,6 @@ public final class ParameterSupport {
@Value @Builder
public static class ParamSupportingMethodSearchRequest {
- public static enum ReturnType {
- NON_SCALAR,
- TEXT,
- BOOLEAN,
- SAME_AS_PARAMETER_TYPE,
- }
-
@NonNull FacetFactory.ProcessMethodContext processMethodContext;
@NonNull Can<IntFunction<String>> paramIndexToMethodNameProviders;
@NonNull EnumSet<SearchAlgorithm> searchAlgorithms;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/described/method/DescribedAsFacetForMemberViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/described/method/DescribedAsFacetForMemberViaMethodFactory.java
index e95dd40..7ab6d7f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/described/method/DescribedAsFacetForMemberViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/described/method/DescribedAsFacetForMemberViaMethodFactory.java
@@ -22,7 +22,6 @@ import javax.inject.Inject;
import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.members.support.MemberSupportFacetFactoryAbstract;
import org.apache.isis.core.metamodel.methods.MethodFinder;
@@ -60,7 +59,7 @@ extends MemberSupportFacetFactoryAbstract {
}
processMethodContext.removeMethod(describedMethod);
- FacetUtil.addFacet(
+ addFacet(
new DescribedAsFacetForMemberViaMethod(
describedMethod,
processMethodContext.getFacetHolder()));
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
index 841c2dc..1cfd557 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
@@ -18,76 +18,36 @@
*/
package org.apache.isis.core.metamodel.facets.param.autocomplete.method;
-import java.util.EnumSet;
-
import javax.inject.Inject;
-import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.ParameterSupport;
-import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
-import org.apache.isis.core.metamodel.facets.ParameterSupport.SearchAlgorithm;
-import org.apache.isis.core.metamodel.facets.param.autocomplete.ActionParameterAutoCompleteFacet;
-import org.apache.isis.core.metamodel.facets.members.support.MemberSupportFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
+import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchResult;
+import org.apache.isis.core.metamodel.facets.param.support.ActionParameterSupportFacetAbstract;
import lombok.val;
public class ActionParameterAutoCompleteFacetViaMethodFactory
-extends MemberSupportFacetFactoryAbstract {
+extends ActionParameterSupportFacetAbstract {
@Inject
public ActionParameterAutoCompleteFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.ACTIONS_ONLY, MemberSupportPrefix.AUTO_COMPLETE);
+ super(mmc, MemberSupportPrefix.AUTO_COMPLETE, searchOptions->
+ searchOptions
+ .additionalParamType(String.class));
}
@Override
- public void process(final ProcessMethodContext processMethodContext) {
-
- val facetedMethod = processMethodContext.getFacetHolder();
- val parameters = facetedMethod.getParameters();
-
- if (parameters.isEmpty()) {
- return;
- }
-
- // attach ActionParameterChoicesFacet if autoCompleteNumMethod is found ...
-
- val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
- .flatMap(processMethodContext::parameterSupportCandidates);
-
- val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
- .processMethodContext(processMethodContext)
- .returnType(ReturnType.NON_SCALAR)
- .additionalParamType(String.class)
- .paramIndexToMethodNameProviders(methodNameCandidates)
- .searchAlgorithms(EnumSet.of(SearchAlgorithm.PPM, SearchAlgorithm.SWEEP))
- .build();
-
- ParameterSupport.findParamSupportingMethods(searchRequest, searchResult -> {
-
- val autoCompleteMethod = searchResult.getSupportingMethod();
- val paramIndex = searchResult.getParamIndex();
- val paramType = searchResult.getParamType();
-
- processMethodContext.removeMethod(autoCompleteMethod);
-
- if (facetedMethod.containsNonFallbackFacet(ActionParameterAutoCompleteFacet.class)) {
- val cls = processMethodContext.getCls();
- throw new MetaModelException(cls + " uses both old and new autoComplete syntax - "
- + "must use one or other");
- }
-
- // add facets directly to parameters, not to actions
- val paramAsHolder = parameters.get(paramIndex);
- val ppmFactory = searchResult.getPpmFactory();
-
- addFacet(
- new ActionParameterAutoCompleteFacetViaMethod(
- autoCompleteMethod, paramType, ppmFactory, paramAsHolder));
- });
-
+ protected void onSearchResult(
+ final FacetedMethodParameter paramAsHolder,
+ final ParamSupportingMethodSearchResult searchResult) {
+ val autoCompleteMethod = searchResult.getSupportingMethod();
+ val paramType = searchResult.getParamType();
+ val ppmFactory = searchResult.getPpmFactory();
+ addFacet(
+ new ActionParameterAutoCompleteFacetViaMethod(
+ autoCompleteMethod, paramType, ppmFactory, paramAsHolder));
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
index 3885185..3720800 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
@@ -18,72 +18,35 @@
*/
package org.apache.isis.core.metamodel.facets.param.choices.methodnum;
-import java.util.EnumSet;
-
import javax.inject.Inject;
import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.ParameterSupport;
-import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
-import org.apache.isis.core.metamodel.facets.ParameterSupport.SearchAlgorithm;
-import org.apache.isis.core.metamodel.facets.members.support.MemberSupportFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
+import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchResult;
+import org.apache.isis.core.metamodel.facets.param.support.ActionParameterSupportFacetAbstract;
import lombok.val;
public class ActionParameterChoicesFacetViaMethodFactory
-extends MemberSupportFacetFactoryAbstract {
+extends ActionParameterSupportFacetAbstract {
@Inject
public ActionParameterChoicesFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.ACTIONS_ONLY, MemberSupportPrefix.CHOICES);
+ super(mmc, MemberSupportPrefix.CHOICES);
}
- // ///////////////////////////////////////////////////////
- // Actions
- // ///////////////////////////////////////////////////////
-
@Override
- public void process(final ProcessMethodContext processMethodContext) {
-
- val facetedMethod = processMethodContext.getFacetHolder();
- val parameters = facetedMethod.getParameters();
-
- if (parameters.isEmpty()) {
- return;
- }
-
- // attach ActionChoicesFacet if choicesNumMethod is found ...
-
- val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
- .flatMap(processMethodContext::parameterSupportCandidates);
-
- val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
- .processMethodContext(processMethodContext)
- .returnType(ReturnType.NON_SCALAR)
- .paramIndexToMethodNameProviders(methodNameCandidates)
- .searchAlgorithms(EnumSet.of(SearchAlgorithm.PPM, SearchAlgorithm.SWEEP))
- .build();
-
- ParameterSupport.findParamSupportingMethods(searchRequest, searchResult -> {
-
- val choicesMethod = searchResult.getSupportingMethod();
- val paramIndex = searchResult.getParamIndex();
- val returnType = searchResult.getReturnType();
-
- processMethodContext.removeMethod(choicesMethod);
-
- // add facets directly to parameters, not to actions
- val paramAsHolder = parameters.get(paramIndex);
- val ppmFactory = searchResult.getPpmFactory();
- addFacet(
- new ActionParameterChoicesFacetViaMethod(
- choicesMethod, returnType, ppmFactory, paramAsHolder));
- });
-
+ protected void onSearchResult(
+ final FacetedMethodParameter paramAsHolder,
+ final ParamSupportingMethodSearchResult searchResult) {
+ val choicesMethod = searchResult.getSupportingMethod();
+ val returnType = searchResult.getReturnType();
+ val ppmFactory = searchResult.getPpmFactory();
+ addFacet(
+ new ActionParameterChoicesFacetViaMethod(
+ choicesMethod, returnType, ppmFactory, paramAsHolder));
}
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
index d99686c..dea1a97 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/defaults/methodnum/ActionParameterDefaultsFacetViaMethodFactory.java
@@ -18,18 +18,14 @@
*/
package org.apache.isis.core.metamodel.facets.param.defaults.methodnum;
-import java.util.EnumSet;
-
import javax.inject.Inject;
import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.ParameterSupport;
-import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
-import org.apache.isis.core.metamodel.facets.ParameterSupport.SearchAlgorithm;
-import org.apache.isis.core.metamodel.facets.members.support.MemberSupportFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
+import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchResult;
+import org.apache.isis.core.metamodel.facets.param.support.ActionParameterSupportFacetAbstract;
import lombok.val;
@@ -37,55 +33,23 @@ import lombok.val;
* Sets up all the {@link Facet}s for an action in a single shot.
*/
public class ActionParameterDefaultsFacetViaMethodFactory
-extends MemberSupportFacetFactoryAbstract {
+extends ActionParameterSupportFacetAbstract {
@Inject
public ActionParameterDefaultsFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.ACTIONS_ONLY, MemberSupportPrefix.DEFAULT);
+ super(mmc, MemberSupportPrefix.DEFAULT);
}
- // ///////////////////////////////////////////////////////
- // Actions
- // ///////////////////////////////////////////////////////
-
@Override
- public void process(final ProcessMethodContext processMethodContext) {
-
- val facetedMethod = processMethodContext.getFacetHolder();
- val parameters = facetedMethod.getParameters();
-
- if (parameters.isEmpty()) {
- return;
- }
-
- // attach DefaultFacetForParameters if defaultNumMethod is found ...
-
- val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
- .flatMap(processMethodContext::parameterSupportCandidates);
-
- val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
- .processMethodContext(processMethodContext)
- .returnType(ReturnType.SAME_AS_PARAMETER_TYPE)
- .paramIndexToMethodNameProviders(methodNameCandidates)
- .searchAlgorithms(EnumSet.of(SearchAlgorithm.PPM, SearchAlgorithm.SWEEP))
- .build();
-
- ParameterSupport.findParamSupportingMethods(searchRequest, searchResult -> {
-
- val defaultMethod = searchResult.getSupportingMethod();
- val paramIndex = searchResult.getParamIndex();
-
- processMethodContext.removeMethod(defaultMethod);
-
- // add facets directly to parameters, not to actions
- val paramAsHolder = parameters.get(paramIndex);
- //val translationContext = paramAsHolder.getIdentifier().toFullIdentityString();
- val ppmFactory = searchResult.getPpmFactory();
-
- addFacet(new ActionParameterDefaultsFacetViaMethod(
- defaultMethod, paramIndex, ppmFactory, paramAsHolder));
- });
+ protected void onSearchResult(
+ final FacetedMethodParameter paramAsHolder,
+ final ParamSupportingMethodSearchResult searchResult) {
+ val defaultMethod = searchResult.getSupportingMethod();
+ val paramIndex = searchResult.getParamIndex();
+ val ppmFactory = searchResult.getPpmFactory();
+ addFacet(
+ new ActionParameterDefaultsFacetViaMethod(
+ defaultMethod, paramIndex, ppmFactory, paramAsHolder));
}
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethod.java
index d13960d..27b96fe 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethod.java
@@ -25,7 +25,6 @@ import java.util.function.BiConsumer;
import org.apache.isis.applib.services.i18n.TranslatableString;
import org.apache.isis.applib.services.i18n.TranslationContext;
-import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
@@ -42,21 +41,18 @@ extends ActionParameterDisabledFacetAbstract
implements ImperativeFacet {
@Getter(onMethod_ = {@Override}) private final @NonNull Can<Method> methods;
- private final TranslationService translationService;
private final TranslationContext translationContext;
private final Optional<Constructor<?>> ppmFactory;
public ActionParameterDisabledFacetViaMethod(
final Method method,
- final TranslationService translationService,
- final TranslationContext translationContext,
final Optional<Constructor<?>> ppmFactory,
final FacetHolder holder) {
super(holder);
this.methods = ImperativeFacet.singleMethod(method);
- this.translationService = translationService;
- this.translationContext = translationContext;
+ this.translationContext =
+ TranslationContext.forTranslationContextHolder(holder.getFeatureIdentifier());
this.ppmFactory = ppmFactory;
}
@@ -80,7 +76,7 @@ implements ImperativeFacet {
}
if(returnValue instanceof TranslatableString) {
final TranslatableString ts = (TranslatableString) returnValue;
- return ts.translate(translationService, translationContext);
+ return ts.translate(getTranslationService(), translationContext);
}
return null;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
index 344cba9..0acf5e9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/disable/method/ActionParameterDisabledFacetViaMethodFactory.java
@@ -18,20 +18,14 @@
*/
package org.apache.isis.core.metamodel.facets.param.disable.method;
-import java.util.EnumSet;
-
import javax.inject.Inject;
-import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
-import org.apache.isis.applib.services.i18n.TranslationContext;
import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.ParameterSupport;
-import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
-import org.apache.isis.core.metamodel.facets.ParameterSupport.SearchAlgorithm;
+import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
+import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchResult;
import org.apache.isis.core.metamodel.facets.param.disable.ActionParameterDisabledFacet;
-import org.apache.isis.core.metamodel.facets.members.support.MemberSupportFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.param.support.ActionParameterSupportFacetAbstract;
import lombok.val;
@@ -39,59 +33,22 @@ import lombok.val;
* Sets up {@link ActionParameterDisabledFacet}.
*/
public class ActionParameterDisabledFacetViaMethodFactory
-extends MemberSupportFacetFactoryAbstract {
+extends ActionParameterSupportFacetAbstract {
@Inject
public ActionParameterDisabledFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.ACTIONS_ONLY, MemberSupportPrefix.DISABLE);
+ super(mmc, MemberSupportPrefix.DISABLE);
}
@Override
- public void process(final ProcessMethodContext processMethodContext) {
-
- val facetedMethod = processMethodContext.getFacetHolder();
- val parameters = facetedMethod.getParameters();
-
- if (parameters.isEmpty()) {
- return;
- }
-
- // attach ActionParameterDisabledFacet if disableNumMethod is found ...
-
- val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
- .flatMap(processMethodContext::parameterSupportCandidates);
-
- val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
- .processMethodContext(processMethodContext)
- .returnType(ReturnType.TEXT)
- .paramIndexToMethodNameProviders(methodNameCandidates)
- .searchAlgorithms(EnumSet.of(SearchAlgorithm.PPM, SearchAlgorithm.SWEEP))
- .build();
-
- ParameterSupport.findParamSupportingMethods(searchRequest, searchResult -> {
-
- val disableMethod = searchResult.getSupportingMethod();
- val paramNum = searchResult.getParamIndex();
-
- processMethodContext.removeMethod(disableMethod);
-
- if (facetedMethod.containsNonFallbackFacet(ActionParameterDisabledFacet.class)) {
- val cls = processMethodContext.getCls();
- throw new MetaModelException(cls + " uses both old and new 'disable' syntax - "
- + "must use one or other");
- }
-
- // add facets directly to parameters, not to actions
- val paramAsHolder = parameters.get(paramNum);
- val translationContext = TranslationContext.forTranslationContextHolder(paramAsHolder.getFeatureIdentifier());
- val ppmFactory = searchResult.getPpmFactory();
- val translationService = getMetaModelContext().getTranslationService();
-
- addFacet(
- new ActionParameterDisabledFacetViaMethod(
- disableMethod, translationService, translationContext, ppmFactory, paramAsHolder));
- });
-
+ protected void onSearchResult(
+ final FacetedMethodParameter paramAsHolder,
+ final ParamSupportingMethodSearchResult searchResult) {
+ val disableMethod = searchResult.getSupportingMethod();
+ val ppmFactory = searchResult.getPpmFactory();
+ addFacet(
+ new ActionParameterDisabledFacetViaMethod(
+ disableMethod, ppmFactory, paramAsHolder));
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
index f9399a5..884158d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/hide/method/ActionParameterHiddenFacetViaMethodFactory.java
@@ -18,19 +18,14 @@
*/
package org.apache.isis.core.metamodel.facets.param.hide.method;
-import java.util.EnumSet;
-
import javax.inject.Inject;
-import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.ParameterSupport;
-import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
-import org.apache.isis.core.metamodel.facets.ParameterSupport.SearchAlgorithm;
+import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
+import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchResult;
import org.apache.isis.core.metamodel.facets.param.hide.ActionParameterHiddenFacet;
-import org.apache.isis.core.metamodel.facets.members.support.MemberSupportFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.param.support.ActionParameterSupportFacetAbstract;
import lombok.val;
@@ -38,56 +33,22 @@ import lombok.val;
* Sets up {@link ActionParameterHiddenFacet}.
*/
public class ActionParameterHiddenFacetViaMethodFactory
-extends MemberSupportFacetFactoryAbstract {
+extends ActionParameterSupportFacetAbstract {
@Inject
public ActionParameterHiddenFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.ACTIONS_ONLY, MemberSupportPrefix.HIDE);
+ super(mmc, MemberSupportPrefix.HIDE);
}
@Override
- public void process(final ProcessMethodContext processMethodContext) {
-
- val facetedMethod = processMethodContext.getFacetHolder();
- val parameters = facetedMethod.getParameters();
-
- if (parameters.isEmpty()) {
- return;
- }
-
- // attach ActionParameterHiddenFacet if hideNumMethod is found ...
-
- val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
- .flatMap(processMethodContext::parameterSupportCandidates);
-
- val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
- .processMethodContext(processMethodContext)
- .returnType(ReturnType.BOOLEAN)
- .paramIndexToMethodNameProviders(methodNameCandidates)
- .searchAlgorithms(EnumSet.of(SearchAlgorithm.PPM, SearchAlgorithm.SWEEP))
- .build();
-
- ParameterSupport.findParamSupportingMethods(searchRequest, searchResult -> {
-
- val hideMethod = searchResult.getSupportingMethod();
- val paramIndex = searchResult.getParamIndex();
-
- processMethodContext.removeMethod(hideMethod);
-
- if (facetedMethod.containsNonFallbackFacet(ActionParameterHiddenFacet.class)) {
- val cls = processMethodContext.getCls();
- throw new MetaModelException(cls + " uses both old and new 'hide' syntax - "
- + "must use one or other");
- }
-
- // add facets directly to parameters, not to actions
- val paramAsHolder = parameters.get(paramIndex);
- val ppmFactory = searchResult.getPpmFactory();
-
- addFacet(
- new ActionParameterHiddenFacetViaMethod(hideMethod, ppmFactory, paramAsHolder));
- });
-
+ protected void onSearchResult(
+ final FacetedMethodParameter paramAsHolder,
+ final ParamSupportingMethodSearchResult searchResult) {
+ val hideMethod = searchResult.getSupportingMethod();
+ val ppmFactory = searchResult.getPpmFactory();
+ addFacet(
+ new ActionParameterHiddenFacetViaMethod(
+ hideMethod, ppmFactory, paramAsHolder));
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/support/ActionParameterSupportFacetAbstract.java
similarity index 55%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/support/ActionParameterSupportFacetAbstract.java
index 841c2dc..a94b1f1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/autocomplete/method/ActionParameterAutoCompleteFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/support/ActionParameterSupportFacetAbstract.java
@@ -16,34 +16,47 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.metamodel.facets.param.autocomplete.method;
+package org.apache.isis.core.metamodel.facets.param.support;
import java.util.EnumSet;
+import java.util.function.UnaryOperator;
-import javax.inject.Inject;
-
-import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
import org.apache.isis.core.metamodel.facets.ParameterSupport;
-import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
+import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest;
+import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ParamSupportingMethodSearchRequestBuilder;
+import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchResult;
import org.apache.isis.core.metamodel.facets.ParameterSupport.SearchAlgorithm;
-import org.apache.isis.core.metamodel.facets.param.autocomplete.ActionParameterAutoCompleteFacet;
import org.apache.isis.core.metamodel.facets.members.support.MemberSupportFacetFactoryAbstract;
+import lombok.NonNull;
import lombok.val;
-public class ActionParameterAutoCompleteFacetViaMethodFactory
+public abstract class ActionParameterSupportFacetAbstract
extends MemberSupportFacetFactoryAbstract {
- @Inject
- public ActionParameterAutoCompleteFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.ACTIONS_ONLY, MemberSupportPrefix.AUTO_COMPLETE);
+ private final UnaryOperator<ParamSupportingMethodSearchRequest.ParamSupportingMethodSearchRequestBuilder>
+ searchRefiner;
+
+ protected ActionParameterSupportFacetAbstract(
+ final @NonNull MetaModelContext mmc,
+ final @NonNull MemberSupportPrefix memberSupportPrefix) {
+ this(mmc, memberSupportPrefix, UnaryOperator.identity());
+ }
+
+ protected ActionParameterSupportFacetAbstract(
+ final @NonNull MetaModelContext mmc,
+ final @NonNull MemberSupportPrefix memberSupportPrefix,
+ final @NonNull UnaryOperator<ParamSupportingMethodSearchRequestBuilder> searchRefiner) {
+ super(mmc, FeatureType.ACTIONS_ONLY, memberSupportPrefix);
+ this.searchRefiner = searchRefiner;
}
@Override
- public void process(final ProcessMethodContext processMethodContext) {
+ public final void process(final ProcessMethodContext processMethodContext) {
val facetedMethod = processMethodContext.getFacetHolder();
val parameters = facetedMethod.getParameters();
@@ -52,42 +65,28 @@ extends MemberSupportFacetFactoryAbstract {
return;
}
- // attach ActionParameterChoicesFacet if autoCompleteNumMethod is found ...
-
val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
.flatMap(processMethodContext::parameterSupportCandidates);
- val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
+ val searchRequest = searchRefiner.apply(ParameterSupport.ParamSupportingMethodSearchRequest.builder()
.processMethodContext(processMethodContext)
- .returnType(ReturnType.NON_SCALAR)
- .additionalParamType(String.class)
- .paramIndexToMethodNameProviders(methodNameCandidates)
+ .paramIndexToMethodNameProviders(methodNameCandidates))
.searchAlgorithms(EnumSet.of(SearchAlgorithm.PPM, SearchAlgorithm.SWEEP))
+ .returnType(memberSupportPrefix.getParameterSearchReturnType())
.build();
ParameterSupport.findParamSupportingMethods(searchRequest, searchResult -> {
-
- val autoCompleteMethod = searchResult.getSupportingMethod();
+ processMethodContext.removeMethod(searchResult.getSupportingMethod());
val paramIndex = searchResult.getParamIndex();
- val paramType = searchResult.getParamType();
-
- processMethodContext.removeMethod(autoCompleteMethod);
-
- if (facetedMethod.containsNonFallbackFacet(ActionParameterAutoCompleteFacet.class)) {
- val cls = processMethodContext.getCls();
- throw new MetaModelException(cls + " uses both old and new autoComplete syntax - "
- + "must use one or other");
- }
-
// add facets directly to parameters, not to actions
val paramAsHolder = parameters.get(paramIndex);
- val ppmFactory = searchResult.getPpmFactory();
-
- addFacet(
- new ActionParameterAutoCompleteFacetViaMethod(
- autoCompleteMethod, paramType, ppmFactory, paramAsHolder));
+ onSearchResult(paramAsHolder, searchResult);
});
}
+ protected abstract void onSearchResult(
+ FacetedMethodParameter paramAsHolder,
+ ParamSupportingMethodSearchResult searchResult);
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethodFactory.java
index f274f05..c80a6f9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethodFactory.java
@@ -28,10 +28,9 @@ import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSup
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.ParameterSupport;
-import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
import org.apache.isis.core.metamodel.facets.ParameterSupport.SearchAlgorithm;
-import org.apache.isis.core.metamodel.facets.param.validate.ActionParameterValidationFacet;
import org.apache.isis.core.metamodel.facets.members.support.MemberSupportFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.param.validate.ActionParameterValidationFacet;
import lombok.val;
@@ -63,7 +62,7 @@ extends MemberSupportFacetFactoryAbstract {
val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
.processMethodContext(processMethodContext)
- .returnType(ReturnType.TEXT)
+ .returnType(org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ReturnType.TEXT)
.paramIndexToMethodNameProviders(methodNameCandidates)
.searchAlgorithms(EnumSet.of(SearchAlgorithm.PPM, SearchAlgorithm.SINGLEARG_BEING_PARAMTYPE))
.build();