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 <[email protected]> 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);
