This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch ISIS-3193 in repository https://gitbox.apache.org/repos/asf/isis.git
commit cf9c2715f6b308fd9e28d256b7ddbe5f087a0f64 Author: Dan Haywood <[email protected]> AuthorDate: Tue Aug 30 08:34:55 2022 +0100 ISIS-3193: moves @Action(dependentDefaultsPolicy=...) to @Parameter(dependentDefaultsPolicy=...) --- .../applib/annotation/DependentDefaultsPolicy.java | 6 +++-- .../apache/isis/applib/annotation/Parameter.java | 12 +++++++++ .../apache/isis/core/config/IsisConfiguration.java | 31 +++++++++++++--------- .../config/metamodel/facets/ParameterPolicies.java | 2 +- .../action/ActionAnnotationFacetFactory.java | 13 +-------- .../parameter/ParameterAnnotationFacetFactory.java | 27 ++++++++++++++++--- ...ctionFacetForActionAnnotationAsConfigured.java} | 8 +++--- .../depdef/ParameterDependentDefaultsFacet.java} | 23 ++++++++-------- .../ParameterDependentDefaultsFacetAbstract.java} | 10 +++---- ...endentDefaultsFacetForParameterAnnotation.java} | 8 +++--- ...erDependentDefaultsFacetFromConfiguration.java} | 8 +++--- .../spec/feature/ObjectActionParameter.java | 2 +- .../apache/isis/core/metamodel/util/Facets.java | 9 ++++--- 13 files changed, 94 insertions(+), 65 deletions(-) diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/DependentDefaultsPolicy.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/DependentDefaultsPolicy.java index 3af2cf38d7..25983c4214 100644 --- a/api/applib/src/main/java/org/apache/isis/applib/annotation/DependentDefaultsPolicy.java +++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/DependentDefaultsPolicy.java @@ -35,12 +35,14 @@ public enum DependentDefaultsPolicy { AS_CONFIGURED, /** - * If an end-user has changed a parameter value, then do not overwrite the value. + * If an end-user has changed this parameter's value, then do not overwrite the value when an earlier parameter changes. */ PRESERVE_CHANGES, /** - * If the parameter declares a default that is dependent on the value of a previous parameter, and that previous parameter changes its value, then update the dependent, <i>even if</i> the end-user had changed the value of that dependent default. + * If this parameter declares a default that is dependent on the value of a previous parameter, and that previous + * parameter has been changed by the end-user, then update this dependent parameter with its computed default, + * <i>even if</i> the end-user has changed the value of this parameter previously. */ UPDATE_DEPENDENT, diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/Parameter.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/Parameter.java index d2e634784f..5c34f86929 100644 --- a/api/applib/src/main/java/org/apache/isis/applib/annotation/Parameter.java +++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/Parameter.java @@ -134,5 +134,17 @@ public @interface Parameter { String regexPatternReplacement() default "Doesn't match pattern"; + /** + * Whether dependent parameters should be reset to their default if an earlier parameter changes its + * value, or whether instead a parameter value, once changed by the end-user, should never be + * overwritten even if the end-user changes an earlier parameter value. + */ + /** + * Whether this parameter should be reset to its default if an earlier parameter changes its + * value, or whether instead the parameter's value, once changed by the end-user, should never be + * overwritten even if the end-user changes an earlier parameter value. + */ + DependentDefaultsPolicy dependentDefaultsPolicy() + default DependentDefaultsPolicy.AS_CONFIGURED; } diff --git a/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java index b62f1649cf..fc578dbed0 100644 --- a/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java +++ b/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java @@ -810,19 +810,6 @@ public class IsisConfiguration { } - /** - * Whether dependent parameters should be reset to their default if an earlier parameter changes its - * value, or whether instead a parameter value, once changed by the end-user, should never be - * overwritten even if the end-user changes an earlier parameter value. - * - * <p> - * This setting can be overridden on a case-by-case basis using - * {@link org.apache.isis.applib.annotation.Action#dependentDefaultsPolicy() Action#dependentDefaultsPolicy()}. - * </p> - */ - private ParameterPolicies.DependentDefaultsPolicy dependentDefaultsPolicy = ParameterPolicies.DependentDefaultsPolicy.UPDATE_DEPENDENT; - - } private final ActionLayout actionLayout = new ActionLayout(); @@ -1282,6 +1269,24 @@ public class IsisConfiguration { } } + private final Parameter parameter = new Parameter(); + @Data + public static class Parameter { + + /** + * Whether dependent parameters should be reset to their default if an earlier parameter changes its + * value, or whether instead a parameter value, once changed by the end-user, should never be + * overwritten even if the end-user changes an earlier parameter value. + * + * <p> + * This setting can be overridden on a case-by-case basis using + * {@link org.apache.isis.applib.annotation.Parameter#dependentDefaultsPolicy() Parameter#dependentDefaultsPolicy()}. + * </p> + */ + private ParameterPolicies.DependentDefaultsPolicy dependentDefaultsPolicy = ParameterPolicies.DependentDefaultsPolicy.UPDATE_DEPENDENT; + + } + private final ParameterLayout parameterLayout = new ParameterLayout(); @Data public static class ParameterLayout implements Applib.Annotation.ConfigPropsForPropertyOrParameterLayout { diff --git a/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ParameterPolicies.java b/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ParameterPolicies.java index 60b4e7bef3..2e2d6c6f1e 100644 --- a/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ParameterPolicies.java +++ b/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ParameterPolicies.java @@ -48,7 +48,7 @@ public final class ParameterPolicies { public static DependentDefaultsPolicy dependentDefaultsPolicy( final @NonNull IsisConfiguration configuration) { - return configuration.getApplib().getAnnotation().getAction().getDependentDefaultsPolicy(); + return configuration.getApplib().getAnnotation().getParameter().getDependentDefaultsPolicy(); } diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java index a661345280..b9dd84b3a7 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java @@ -31,7 +31,6 @@ import org.apache.isis.core.metamodel.facetapi.FeatureType; import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract; import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet; import org.apache.isis.core.metamodel.facets.actions.action.choicesfrom.ChoicesFromFacetForActionAnnotation; -import org.apache.isis.core.metamodel.facets.actions.action.depdef.DependentDefaultsFacet; import org.apache.isis.core.metamodel.facets.actions.action.explicit.ActionExplicitFacetForActionAnnotation; import org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation; import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacetAbstract; @@ -75,7 +74,7 @@ extends FacetFactoryAbstract { processHidden(processMethodContext, actionIfAny); processRestrictTo(processMethodContext, actionIfAny); processSemantics(processMethodContext, actionIfAny); - processDependentDefaultsPolicy(processMethodContext, actionIfAny); + // must come after processing semantics processCommandPublishing(processMethodContext, actionIfAny); @@ -198,16 +197,6 @@ extends FacetFactoryAbstract { .create(actionIfAny, facetedMethod)); } - // check for @Action(dependentDefaultsPolicy=...) - void processDependentDefaultsPolicy( - final ProcessMethodContext processMethodContext, - final Optional<Action> actionIfAny) { - val facetedMethod = processMethodContext.getFacetHolder(); - addFacetIfPresent( - DependentDefaultsFacet - .create(actionIfAny, getConfiguration(), facetedMethod)); - } - void processCommandPublishing( final ProcessMethodContext processMethodContext, final Optional<Action> actionIfAny) { diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java index 05db0f4105..16817c024a 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/ParameterAnnotationFacetFactory.java @@ -18,16 +18,20 @@ */ package org.apache.isis.core.metamodel.facets.param.parameter; +import java.util.Optional; + import javax.inject.Inject; import javax.validation.constraints.Pattern; import org.springframework.core.MethodParameter; +import org.apache.isis.applib.annotation.Action; import org.apache.isis.applib.annotation.Parameter; import org.apache.isis.commons.internal.base._NullSafe; import org.apache.isis.core.metamodel.context.MetaModelContext; import org.apache.isis.core.metamodel.facetapi.FeatureType; import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract; +import org.apache.isis.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet; import org.apache.isis.core.metamodel.facets.param.parameter.fileaccept.FileAcceptFacetForParameterAnnotation; import org.apache.isis.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetForParameterAnnotation; import org.apache.isis.core.metamodel.facets.param.parameter.mandatory.MandatoryFacetInvertedByNullableAnnotationOnParameter; @@ -49,6 +53,7 @@ extends FacetFactoryAbstract { @Override public void processParams(final ProcessParameterContext processParameterContext) { + processParamsDependentDefaultsPolicy(processParameterContext); processParamsMaxLength(processParameterContext); processParamsMustSatisfy(processParameterContext); processParamsRegEx(processParameterContext); @@ -56,6 +61,18 @@ extends FacetFactoryAbstract { processParamsFileAccept(processParameterContext); } + // check for @Parameter(dependentDefaultsPolicy=...) + void processParamsDependentDefaultsPolicy(final ProcessParameterContext processParameterContext) { + + val holder = processParameterContext.getFacetHolder(); + val parameterIfAny = processParameterContext.synthesizeOnParameter(Parameter.class); + + addFacetIfPresent( + ParameterDependentDefaultsFacet + .create(parameterIfAny, getConfiguration(), holder)); + } + + void processParamsMaxLength(final ProcessParameterContext processParameterContext) { val holder = processParameterContext.getFacetHolder(); @@ -79,6 +96,8 @@ extends FacetFactoryAbstract { void processParamsRegEx(final ProcessParameterContext processParameterContext) { val holder = processParameterContext.getFacetHolder(); + val parameterIfAny = processParameterContext.synthesizeOnParameter(Parameter.class); + val parameterType = processParameterContext.getParameterType(); val patternIfAny = processParameterContext.synthesizeOnParameter(Pattern.class); @@ -86,7 +105,6 @@ extends FacetFactoryAbstract { RegExFacetForPatternAnnotationOnParameter .create(patternIfAny, parameterType, holder)); - val parameterIfAny = processParameterContext.synthesizeOnParameter(Parameter.class); addFacetIfPresent( RegExFacetForParameterAnnotation .create(parameterIfAny, parameterType, holder)); @@ -95,13 +113,14 @@ extends FacetFactoryAbstract { void processParamsOptional(final ProcessParameterContext processParameterContext) { val holder = processParameterContext.getFacetHolder(); + val parameterIfAny = processParameterContext.synthesizeOnParameter(Parameter.class); + val parameterAnnotations = MethodParameter .forExecutable(processParameterContext.getMethod(), processParameterContext.getParamNum()) .getParameterAnnotations(); val parameterType = processParameterContext.getParameterType(); - val parameterIfAny = processParameterContext.synthesizeOnParameter(Parameter.class); - - val hasNullable = + + val hasNullable = _NullSafe.stream(parameterAnnotations) .map(annot->annot.annotationType().getSimpleName()) .anyMatch(name->name.equals("Nullable")); diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/depdef/DependentDefaultsActionFacetForActionAnnotationAsConfigured.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsActionFacetForActionAnnotationAsConfigured.java similarity index 79% rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/depdef/DependentDefaultsActionFacetForActionAnnotationAsConfigured.java rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsActionFacetForActionAnnotationAsConfigured.java index 8cbd1ec4fd..facf4fe3c5 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/depdef/DependentDefaultsActionFacetForActionAnnotationAsConfigured.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsActionFacetForActionAnnotationAsConfigured.java @@ -17,15 +17,15 @@ * under the License. * */ -package org.apache.isis.core.metamodel.facets.actions.action.depdef; +package org.apache.isis.core.metamodel.facets.param.parameter.depdef; import org.apache.isis.core.config.metamodel.facets.ParameterPolicies; import org.apache.isis.core.metamodel.facetapi.FacetHolder; -public class DependentDefaultsActionFacetForActionAnnotationAsConfigured -extends DependentDefaultsActionFacetForActionAnnotation { +public class ParameterDependentDefaultsActionFacetForActionAnnotationAsConfigured +extends ParameterDependentDefaultsFacetForParameterAnnotation { - DependentDefaultsActionFacetForActionAnnotationAsConfigured( + ParameterDependentDefaultsActionFacetForActionAnnotationAsConfigured( final ParameterPolicies.DependentDefaultsPolicy value, final FacetHolder holder) { super(value, holder); } diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/depdef/DependentDefaultsFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacet.java similarity index 74% rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/depdef/DependentDefaultsFacet.java rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacet.java index 86c56f4eba..0f7df285fc 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/depdef/DependentDefaultsFacet.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacet.java @@ -17,11 +17,12 @@ * under the License. * */ -package org.apache.isis.core.metamodel.facets.actions.action.depdef; +package org.apache.isis.core.metamodel.facets.param.parameter.depdef; import java.util.Optional; import org.apache.isis.applib.annotation.Action; +import org.apache.isis.applib.annotation.Parameter; import org.apache.isis.commons.internal.base._Optionals; import org.apache.isis.core.config.IsisConfiguration; import org.apache.isis.core.config.metamodel.facets.ParameterPolicies; @@ -36,11 +37,11 @@ import org.apache.isis.core.metamodel.facets.SingleValueFacet; * * @since 2.0 */ -public interface DependentDefaultsFacet +public interface ParameterDependentDefaultsFacet extends SingleValueFacet<ParameterPolicies.DependentDefaultsPolicy> { - static Optional<DependentDefaultsFacet> create( - final Optional<Action> actionsIfAny, + static Optional<ParameterDependentDefaultsFacet> create( + final Optional<Parameter> parameterIfAny, final IsisConfiguration configuration, final FacetHolder holder) { @@ -49,24 +50,24 @@ extends SingleValueFacet<ParameterPolicies.DependentDefaultsPolicy> { return _Optionals.orNullable( - actionsIfAny - .map(Action::dependentDefaultsPolicy) - .<DependentDefaultsFacet>map(policy -> { + parameterIfAny + .map(Parameter::dependentDefaultsPolicy) + .<ParameterDependentDefaultsFacet>map(policy -> { switch (policy) { case PRESERVE_CHANGES: - return new DependentDefaultsActionFacetForActionAnnotation( + return new ParameterDependentDefaultsFacetForParameterAnnotation( ParameterPolicies.DependentDefaultsPolicy.PRESERVE_CHANGES, holder); case UPDATE_DEPENDENT: - return new DependentDefaultsActionFacetForActionAnnotation( + return new ParameterDependentDefaultsFacetForParameterAnnotation( ParameterPolicies.DependentDefaultsPolicy.UPDATE_DEPENDENT, holder); case NOT_SPECIFIED: case AS_CONFIGURED: - return new DependentDefaultsActionFacetForActionAnnotation(defaultPolicyFromConfig, holder); + return new ParameterDependentDefaultsFacetForParameterAnnotation(defaultPolicyFromConfig, holder); default: } throw new IllegalStateException("dependentDefaultsPolicy '" + policy + "' not recognised"); }) , - () -> new DependentDefaultsActionFacetFromConfiguration(defaultPolicyFromConfig, holder)); + () -> new ParameterDependentDefaultsFacetFromConfiguration(defaultPolicyFromConfig, holder)); } } diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/depdef/DependentDefaultsFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetAbstract.java similarity index 83% rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/depdef/DependentDefaultsFacetAbstract.java rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetAbstract.java index c2955c1eed..aa184e2f2f 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/depdef/DependentDefaultsFacetAbstract.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetAbstract.java @@ -17,22 +17,22 @@ * under the License. * */ -package org.apache.isis.core.metamodel.facets.actions.action.depdef; +package org.apache.isis.core.metamodel.facets.param.parameter.depdef; import org.apache.isis.core.config.metamodel.facets.ParameterPolicies; import org.apache.isis.core.metamodel.facetapi.Facet; import org.apache.isis.core.metamodel.facetapi.FacetHolder; import org.apache.isis.core.metamodel.facets.SingleValueFacetAbstract; -abstract class DependentDefaultsFacetAbstract +abstract class ParameterDependentDefaultsFacetAbstract extends SingleValueFacetAbstract<ParameterPolicies.DependentDefaultsPolicy> -implements DependentDefaultsFacet { +implements ParameterDependentDefaultsFacet { private static final Class<? extends Facet> type() { - return DependentDefaultsFacet.class; + return ParameterDependentDefaultsFacet.class; } - protected DependentDefaultsFacetAbstract( + protected ParameterDependentDefaultsFacetAbstract( final ParameterPolicies.DependentDefaultsPolicy value, final FacetHolder holder) { super(type(), value, holder); } diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/depdef/DependentDefaultsActionFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetForParameterAnnotation.java similarity index 81% rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/depdef/DependentDefaultsActionFacetForActionAnnotation.java rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetForParameterAnnotation.java index 1f19633c12..e36364da56 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/depdef/DependentDefaultsActionFacetForActionAnnotation.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetForParameterAnnotation.java @@ -17,15 +17,15 @@ * under the License. * */ -package org.apache.isis.core.metamodel.facets.actions.action.depdef; +package org.apache.isis.core.metamodel.facets.param.parameter.depdef; import org.apache.isis.core.config.metamodel.facets.ParameterPolicies; import org.apache.isis.core.metamodel.facetapi.FacetHolder; -public class DependentDefaultsActionFacetForActionAnnotation -extends DependentDefaultsFacetAbstract { +public class ParameterDependentDefaultsFacetForParameterAnnotation +extends ParameterDependentDefaultsFacetAbstract { - DependentDefaultsActionFacetForActionAnnotation( + ParameterDependentDefaultsFacetForParameterAnnotation( final ParameterPolicies.DependentDefaultsPolicy value, final FacetHolder holder) { super(value, holder); } diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/depdef/DependentDefaultsActionFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java similarity index 82% rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/depdef/DependentDefaultsActionFacetFromConfiguration.java rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java index 0fe0962433..c0bb59a50c 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/depdef/DependentDefaultsActionFacetFromConfiguration.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java @@ -17,15 +17,15 @@ * under the License. * */ -package org.apache.isis.core.metamodel.facets.actions.action.depdef; +package org.apache.isis.core.metamodel.facets.param.parameter.depdef; import org.apache.isis.core.config.metamodel.facets.ParameterPolicies; import org.apache.isis.core.metamodel.facetapi.FacetHolder; -public class DependentDefaultsActionFacetFromConfiguration -extends DependentDefaultsFacetAbstract { +public class ParameterDependentDefaultsFacetFromConfiguration +extends ParameterDependentDefaultsFacetAbstract { - DependentDefaultsActionFacetFromConfiguration( + ParameterDependentDefaultsFacetFromConfiguration( final ParameterPolicies.DependentDefaultsPolicy value, final FacetHolder holder) { super(value, holder); } 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 a4c28db5b1..7a44ee35ef 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 @@ -151,7 +151,7 @@ extends ObjectFeature, CurrentHolder { default void reassessDefault(final ParameterNegotiationModel pendingArgs) { val paramIndex = getParameterIndex(); val bindableParamDirtyFlag = pendingArgs.getBindableParamValueDirtyFlag(paramIndex); - if(Facets.dependentDefaultsPolicy(getAction()).isUpdateDependent() + if(Facets.dependentDefaultsPolicy(this).isUpdateDependent() // always allow when not dirtied by the user (UI) || ! bindableParamDirtyFlag.getValue().booleanValue() ) { // reassess defaults honoring defaults semantics diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Facets.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Facets.java index fdf346a7a5..3b2a7e4a3a 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Facets.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Facets.java @@ -42,7 +42,6 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy; import org.apache.isis.core.metamodel.facetapi.Facet; import org.apache.isis.core.metamodel.facetapi.FacetHolder; import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet; -import org.apache.isis.core.metamodel.facets.actions.action.depdef.DependentDefaultsFacet; import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet; import org.apache.isis.core.metamodel.facets.collections.CollectionFacet; import org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet; @@ -67,11 +66,13 @@ import org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacet; import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet; import org.apache.isis.core.metamodel.facets.objectvalue.multiline.MultiLineFacet; import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet; +import org.apache.isis.core.metamodel.facets.param.parameter.depdef.ParameterDependentDefaultsFacet; import org.apache.isis.core.metamodel.interactions.managed.ManagedProperty; import org.apache.isis.core.metamodel.interactions.managed.ParameterNegotiationModel; import org.apache.isis.core.metamodel.object.ManagedObject; import org.apache.isis.core.metamodel.spec.ObjectSpecification; import org.apache.isis.core.metamodel.spec.feature.ObjectAction; +import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter; import org.apache.isis.core.metamodel.spec.feature.ObjectFeature; import lombok.val; @@ -171,9 +172,9 @@ public final class Facets { } public static ParameterPolicies.DependentDefaultsPolicy dependentDefaultsPolicy( - final ObjectAction action) { - return action.lookupFacet(DependentDefaultsFacet.class) - .map(DependentDefaultsFacet::value) + final ObjectActionParameter parameter) { + return parameter.lookupFacet(ParameterDependentDefaultsFacet.class) + .map(ParameterDependentDefaultsFacet::value) .orElseGet(ParameterPolicies.DependentDefaultsPolicy::defaultsIfNotSpecifiedOtherwise); }
