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 2022/05/21 07:09:48 UTC

[isis] 01/02: ISIS-3051: remove parameter-peer hackery

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

commit 3635c5abae88fd1682bc68bcc2dd26c1ece2369d
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sat May 14 10:31:41 2022 +0200

    ISIS-3051: remove parameter-peer hackery
---
 .../param/name/ParameterNameFacetFactoryUsingReflection.java     | 3 +++
 .../postprocessors/ObjectSpecificationPostProcessorAbstract.java | 8 --------
 .../postprocessors/all/DescribedAsFromTypePostProcessor.java     | 7 +++++--
 .../postprocessors/param/ChoicesAndDefaultsPostProcessor.java    | 9 ++++++++-
 .../postprocessors/param/TypicalLengthFromTypePostProcessor.java | 2 +-
 .../java/org/apache/isis/core/metamodel/spec/Specification.java  | 4 ++--
 .../isis/core/metamodel/spec/feature/ObjectActionParameter.java  | 2 --
 .../specloader/specimpl/ObjectActionParameterAbstract.java       | 2 +-
 .../specloader/specimpl/ObjectSpecificationAbstract.java         | 5 +++++
 .../specloader/specimpl/dflt/ObjectSpecificationDefault.java     | 4 +---
 .../isis/core/metamodel/testspec/ObjectSpecificationStub.java    | 6 ++++++
 11 files changed, 32 insertions(+), 20 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetFactoryUsingReflection.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetFactoryUsingReflection.java
index edee125761..62379efdd0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetFactoryUsingReflection.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetFactoryUsingReflection.java
@@ -18,6 +18,7 @@
  */
 package org.apache.isis.core.metamodel.facets.param.name;
 
+import java.util.Optional;
 import java.util.regex.Pattern;
 
 import javax.inject.Inject;
@@ -67,6 +68,8 @@ extends FacetFactoryAbstract {
         val naturalName = StringExtensions.asNaturalName2(parameterName);
         val facetHolder = processParameterContext.getFacetHolder();
 
+
+
         FacetUtil.addFacet(
                 new NamedFacetForParameterUsingReflection(naturalName, facetHolder));
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/ObjectSpecificationPostProcessorAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/ObjectSpecificationPostProcessorAbstract.java
index 0466b1df25..ad5b713105 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/ObjectSpecificationPostProcessorAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/ObjectSpecificationPostProcessorAbstract.java
@@ -19,8 +19,6 @@
 package org.apache.isis.core.metamodel.postprocessors;
 
 import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facetapi.HasFacetHolder;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.MixedIn;
@@ -81,10 +79,4 @@ implements ObjectSpecificationPostProcessor {
         return objectMemberImpl.getFacetedMethod();
     }
 
-    protected static FacetHolder peerFor(final ObjectActionParameter param) {
-        // TODO: hacky, need to copy facet onto underlying peer, not to the param itself.
-        var paramImpl = (HasFacetHolder) param;
-        return paramImpl.getFacetHolder();
-    }
-
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/DescribedAsFromTypePostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/DescribedAsFromTypePostProcessor.java
index f28267d6f7..ffb5c7141c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/DescribedAsFromTypePostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/DescribedAsFromTypePostProcessor.java
@@ -58,7 +58,10 @@ extends ObjectSpecificationPostProcessorAbstract {
     }
 
     @Override
-    protected void doPostProcess(final ObjectSpecification objectSpecification, final ObjectAction objectAction, final ObjectActionParameter parameter) {
+    protected void doPostProcess(
+            final ObjectSpecification objectSpecification, 
+            final ObjectAction objectAction, 
+            final ObjectActionParameter parameter) {
         if(parameter.containsNonFallbackFacet(ParamDescribedFacet.class)) {
             return;
         }
@@ -67,7 +70,7 @@ extends ObjectSpecificationPostProcessorAbstract {
         .ifPresent(describedAsFacet->{
             FacetUtil.addFacetIfPresent(
                     DescribedAsFacetOnParameterFromType
-                    .create(describedAsFacet, peerFor(parameter)));
+                    .create(describedAsFacet, parameter));
         });
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ChoicesAndDefaultsPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ChoicesAndDefaultsPostProcessor.java
index 9e02a71689..2e7d3513a3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ChoicesAndDefaultsPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ChoicesAndDefaultsPostProcessor.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.core.metamodel.postprocessors.param;
 
+import java.util.Optional;
+
 import javax.inject.Inject;
 
 import org.apache.isis.core.metamodel.context.MetaModelContext;
@@ -62,11 +64,16 @@ extends ObjectSpecificationPostProcessorAbstract {
             final ObjectSpecification objectSpecification,
             final ObjectAction objectAction,
             final ObjectActionParameter param) {
+
+        val paramAsHolder = param;
+
+
+
         if(!hasMemberLevelChoices(param)) {
             param.getElementType()
             .lookupNonFallbackFacet(ChoicesFacet.class)
             .ifPresent(choicesFacet -> FacetUtil
-                    .addFacet(new ActionParameterChoicesFacetFromChoicesFacet(peerFor(param))));
+                    .addFacet(new ActionParameterChoicesFacetFromChoicesFacet(param)));
         }
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/TypicalLengthFromTypePostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/TypicalLengthFromTypePostProcessor.java
index b3c9ebd61f..34106ef604 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/TypicalLengthFromTypePostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/TypicalLengthFromTypePostProcessor.java
@@ -53,7 +53,7 @@ extends ObjectSpecificationPostProcessorAbstract {
             .ifPresent(typicalLengthFacet ->
                     FacetUtil.addFacet(
                             TypicalLengthFacetOnParameterFromType
-                            .createWhilePostprocessing(typicalLengthFacet, peerFor(parameter))));
+                            .createWhilePostprocessing(typicalLengthFacet, parameter)));
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Specification.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Specification.java
index 07705da0df..423dae2ddc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Specification.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/Specification.java
@@ -18,8 +18,8 @@
  */
 package org.apache.isis.core.metamodel.spec;
 
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.HasFacetHolder;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
@@ -36,7 +36,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
  * Introduces so that viewers can deal with abstract Instances of said.
  *
  */
-public interface Specification extends FacetHolder {
+public interface Specification extends HasFacetHolder {
 
     FeatureType getFeatureType();
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
index 1badc0083e..44dc8284c6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectActionParameter.java
@@ -238,6 +238,4 @@ extends ObjectFeature, CurrentHolder {
         return ActionParameterMemento.forActionParameter(this);
     }
 
-
-
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index c88c25c013..74bb790dbc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -164,7 +164,7 @@ implements
     // -- FacetHolder
 
     @Override
-    public FacetHolder getFacetHolder() {
+    public final FacetHolder getFacetHolder() {
         // that is the faceted method parameter
         return parentAction.getFacetedMethod().getParameters().getElseFail(parameterIndex);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index 47f729141d..67c831fab1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -52,6 +52,7 @@ import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.InteractionResult;
 import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.all.described.ObjectDescribedFacet;
 import org.apache.isis.core.metamodel.facets.all.help.HelpFacet;
@@ -127,6 +128,10 @@ implements ObjectSpecification {
         }
     }
 
+    @Override
+    public FacetHolder getFacetHolder() {
+        return this;
+    }
 
     // -- FIELDS
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index dff41e973d..01e44e7cdf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -40,7 +40,6 @@ import org.apache.isis.commons.internal.reflection._Reflect;
 import org.apache.isis.core.metamodel.commons.StringExtensions;
 import org.apache.isis.core.metamodel.commons.ToString;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
@@ -73,8 +72,7 @@ import lombok.extern.log4j.Log4j2;
 
 @Log4j2
 public class ObjectSpecificationDefault
-extends ObjectSpecificationAbstract
-implements FacetHolder {
+extends ObjectSpecificationAbstract {
 
     private static String determineShortName(final Class<?> introspectedClass) {
         final String name = introspectedClass.getName();
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
index 0de46cd282..d9ebbc9854 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
@@ -36,6 +36,7 @@ import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.consent.InteractionResult;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderAbstract;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.WhereValueFacet;
@@ -77,6 +78,11 @@ implements ObjectSpecification {
     private final Class<?> correspondingClass;
     private final String name;
 
+    @Override
+    public FacetHolder getFacetHolder() {
+        return this;
+    }
+
     @Override
     public Optional<? extends ObjectMember> getMember(final String memberId) {
         val objectAction = getAction(memberId);