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