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:33:37 UTC
[isis] branch master updated: ISIS-2774: also simplify
ActionParameterValidationFacetViaMethodFactory
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 83ff549 ISIS-2774: also simplify ActionParameterValidationFacetViaMethodFactory
83ff549 is described below
commit 83ff54967d8bdde9cfb5863d3e3f879508ca9eac
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Sep 7 16:33:28 2021 +0200
ISIS-2774: also simplify ActionParameterValidationFacetViaMethodFactory
---
.../ActionParameterValidationFacetViaMethod.java | 10 +---
...onParameterValidationFacetViaMethodFactory.java | 68 +++++-----------------
2 files changed, 18 insertions(+), 60 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethod.java
index 00cc60d..a381f9e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethod.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 ActionParameterValidationFacetAbstract
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 ActionParameterValidationFacetViaMethod(
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;
}
@@ -81,7 +77,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/validate/method/ActionParameterValidationFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/validate/method/ActionParameterValidationFacetViaMethodFactory.java
index c80a6f9..e6c3c59 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
@@ -22,14 +22,12 @@ 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.FacetedMethodParameter;
+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.members.support.MemberSupportFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.param.support.ActionParameterSupportFacetAbstract;
import org.apache.isis.core.metamodel.facets.param.validate.ActionParameterValidationFacet;
import lombok.val;
@@ -37,60 +35,24 @@ import lombok.val;
/**
* Sets up {@link ActionParameterValidationFacet}. */
public class ActionParameterValidationFacetViaMethodFactory
-extends MemberSupportFacetFactoryAbstract {
+extends ActionParameterSupportFacetAbstract {
@Inject
public ActionParameterValidationFacetViaMethodFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.ACTIONS_ONLY, MemberSupportPrefix.VALIDATE);
+ super(mmc, MemberSupportPrefix.VALIDATE, searchOptions->
+ searchOptions
+ .searchAlgorithms(EnumSet.of(SearchAlgorithm.PPM, SearchAlgorithm.SINGLEARG_BEING_PARAMTYPE)));
}
@Override
- public void process(final ProcessMethodContext processMethodContext) {
-
- val facetedMethod = processMethodContext.getFacetHolder();
- val parameters = facetedMethod.getParameters();
-
- if (parameters.isEmpty()) {
- return;
- }
-
- // attach ActionParameterValidationFacet if validateNumMethod is found ...
- // in any case single-arg, either same as param-type or PPM style
-
- val methodNameCandidates = memberSupportPrefix.getMethodNamePrefixes()
- .flatMap(processMethodContext::parameterSupportCandidates);
-
- val searchRequest = ParameterSupport.ParamSupportingMethodSearchRequest.builder()
- .processMethodContext(processMethodContext)
- .returnType(org.apache.isis.core.config.progmodel.ProgrammingModelConstants.ReturnType.TEXT)
- .paramIndexToMethodNameProviders(methodNameCandidates)
- .searchAlgorithms(EnumSet.of(SearchAlgorithm.PPM, SearchAlgorithm.SINGLEARG_BEING_PARAMTYPE))
- .build();
-
- ParameterSupport.findParamSupportingMethods(searchRequest, searchResult -> {
-
- val validateMethod = searchResult.getSupportingMethod();
- val paramNum = searchResult.getParamIndex();
-
- processMethodContext.removeMethod(validateMethod);
-
- if (facetedMethod.containsNonFallbackFacet(ActionParameterValidationFacet.class)) {
- val cls = processMethodContext.getCls();
- throw new MetaModelException(cls + " uses both old and new 'validate' 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 ActionParameterValidationFacetViaMethod(
- validateMethod, translationService, translationContext, ppmFactory, paramAsHolder));
-
- });
+ protected void onSearchResult(
+ final FacetedMethodParameter paramAsHolder,
+ final ParamSupportingMethodSearchResult searchResult) {
+ val validateMethod = searchResult.getSupportingMethod();
+ val ppmFactory = searchResult.getPpmFactory();
+ addFacet(
+ new ActionParameterValidationFacetViaMethod(
+ validateMethod, ppmFactory, paramAsHolder));
}