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 2020/05/07 11:33:53 UTC

[isis] branch master updated (6f8de2c -> 3a0771f)

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from 6f8de2c  ISIS-2340: simplify ActionArgumentModel (also performance improvement)
     new 78f8650  ISIS-2340: decouple ActionArgumentModel from Wicket
     new 3a0771f  ISIS-2340: move ActionArgumentModel to common UI

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../model/action/form/ActionParameterUiModel.java} | 30 ++++++------
 .../wicket/model/models/ActionArgumentCache.java   | 19 ++++----
 .../viewer/wicket/model/models/ActionModel.java    | 10 ++--
 .../wicket/model/models/ScalarParameterModel.java  | 55 ++++++++++++----------
 .../components/actions/ActionParametersForm.java   | 17 +++----
 .../components/scalars/ScalarPanelAbstract2.java   |  3 +-
 6 files changed, 73 insertions(+), 61 deletions(-)
 rename viewers/{wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentModel.java => common/src/main/java/org/apache/isis/viewer/common/model/action/form/ActionParameterUiModel.java} (79%)


[isis] 02/02: ISIS-2340: move ActionArgumentModel to common UI

Posted by ah...@apache.org.
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 3a0771f089a41693b22614e06d4e2335f3f5ed6b
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu May 7 13:33:28 2020 +0200

    ISIS-2340: move ActionArgumentModel to common UI
---
 .../model/action/form/ActionParameterUiModel.java} | 13 ++++---
 .../wicket/model/models/ActionArgumentCache.java   | 13 ++++---
 .../viewer/wicket/model/models/ActionModel.java    |  7 ++--
 .../wicket/model/models/ScalarParameterModel.java  | 45 +++++++++++-----------
 .../components/actions/ActionParametersForm.java   |  4 +-
 5 files changed, 43 insertions(+), 39 deletions(-)

diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentModel.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/ActionParameterUiModel.java
similarity index 86%
rename from viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentModel.java
rename to viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/ActionParameterUiModel.java
index 0d6ba8a..7ce0f9a 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentModel.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/ActionParameterUiModel.java
@@ -16,29 +16,30 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.viewer.wicket.model.models;
+package org.apache.isis.viewer.common.model.action.form;
 
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModel;
 
-public interface ActionArgumentModel {
+public interface ActionParameterUiModel {
 
-    ObjectActionParameter getActionParameter();
-    
-    String getCssClass();
+    /** param meta model */
+    ObjectActionParameter getMetaModel();
     
     /** param value */
     ManagedObject getValue();
     
     /** param value */
     void setValue(ManagedObject paramValue);
+    
+    String getCssClass();
 
     // -- SHORTCUTS
     
     /** param index */
     default int getNumber() {
-        return getActionParameter().getNumber();
+        return getMetaModel().getNumber();
     }
 
     // -- DEPRECATIONS
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentCache.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentCache.java
index 98633b4..e4f7040 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentCache.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentCache.java
@@ -29,6 +29,7 @@ import org.apache.isis.core.commons.internal.collections._Maps;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
+import org.apache.isis.viewer.common.model.action.form.ActionParameterUiModel;
 import org.apache.isis.viewer.common.model.action.form.PendingParameterManager;
 import org.apache.isis.viewer.wicket.model.mementos.ActionMemento;
 import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
@@ -44,7 +45,7 @@ class ActionArgumentCache implements PendingParameterManager {
     @NonNull private final ActionMemento actionMemento;
     @NonNull private final ObjectAction action;
 
-    private final Map<Integer, ActionArgumentModel> arguments = _Maps.newHashMap();
+    private final Map<Integer, ActionParameterUiModel> arguments = _Maps.newHashMap();
     
     public ActionArgumentCache copy() {
         val copy = new ActionArgumentCache(
@@ -66,7 +67,7 @@ class ActionArgumentCache implements PendingParameterManager {
         .mapToObj(paramIndex->{
             val actionArgumentModel = Optional.ofNullable(arguments.get(paramIndex));
             val adapter = actionArgumentModel
-                    .map(ActionArgumentModel::getValue)
+                    .map(ActionParameterUiModel::getValue)
                     .orElse(ManagedObject.empty(paramTypes.getElseFail(paramIndex)));
             return adapter;
         
@@ -86,7 +87,7 @@ class ActionArgumentCache implements PendingParameterManager {
         });
     }
     
-    public Stream<ActionArgumentModel> streamActionArgumentModels() {
+    public Stream<ActionParameterUiModel> streamActionArgumentModels() {
         return streamParamNumbers()
                 .mapToObj(paramIndex->
                     arguments.computeIfAbsent(paramIndex, this::createArgumentModel));
@@ -111,7 +112,7 @@ class ActionArgumentCache implements PendingParameterManager {
         return IntStream.range(0, paramCount);
     }
 
-    private ActionArgumentModel createArgumentModel(int paramIndex) {
+    private ActionParameterUiModel createArgumentModel(int paramIndex) {
         val param = action.getParameters().getElseFail(paramIndex);
         val paramMemento =  new ActionParameterMemento(param);
         val actionArgumentModel = new ScalarParameterModel(entityModel, paramMemento);
@@ -124,9 +125,9 @@ class ActionArgumentCache implements PendingParameterManager {
                 (int)streamActionArgumentModels().count());
     }
     
-    private ActionArgumentModel computeIfAbsent(final ActionParameterMemento apm) {
+    private ActionParameterUiModel computeIfAbsent(final ActionParameterMemento apm) {
         final int i = apm.getNumber();
-        ActionArgumentModel actionArgumentModel = arguments.get(i);
+        ActionParameterUiModel actionArgumentModel = arguments.get(i);
         if (actionArgumentModel == null) {
             actionArgumentModel = new ScalarParameterModel(entityModel, apm);
             final int number = actionArgumentModel.getNumber();
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
index 40dc8e7..482aac2 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
@@ -58,6 +58,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModel;
 import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModelHead;
 import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
+import org.apache.isis.viewer.common.model.action.form.ActionParameterUiModel;
 import org.apache.isis.viewer.wicket.model.mementos.ActionMemento;
 
 import lombok.Value;
@@ -460,7 +461,7 @@ implements FormExecutorContext {
     @Value(staticConstructor = "of")
     public static class ActionArgumentModelAndConsents {
         final PendingParameterModel pendingArgs;
-        final ActionArgumentModel paramModel;
+        final ActionParameterUiModel paramModel;
         final Consent visibilityConsent;
         final Consent usabilityConsent;
     }
@@ -478,7 +479,7 @@ implements FormExecutorContext {
 
             actionArgumentModel.setActionArgsHint(pendingArgs);
 
-            val objectActionParamter = actionArgumentModel.getActionParameter();
+            val objectActionParamter = actionArgumentModel.getMetaModel();
 
             // visibility
             val visibilityConsent = objectActionParamter
@@ -504,7 +505,7 @@ implements FormExecutorContext {
         .skip(skipCount)
         .forEach(actionArgumentModel->{
 
-            val actionParameter = actionArgumentModel.getActionParameter();
+            val actionParameter = actionArgumentModel.getMetaModel();
             val paramValue = actionArgumentModel.getValue();
             val hasChoices = actionParameter.hasChoices();
             val hasAutoComplete = actionParameter.hasAutoComplete();
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
index 3e190d8..63aaaa1 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
@@ -37,6 +37,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModel;
 import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModelHead;
 import org.apache.isis.core.webapp.context.memento.ObjectMemento;
+import org.apache.isis.viewer.common.model.action.form.ActionParameterUiModel;
 import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
 
 import lombok.Getter;
@@ -45,7 +46,7 @@ import lombok.Setter;
 import lombok.val;
 
 public class ScalarParameterModel extends ScalarModel
-implements ActionArgumentModel {
+implements ActionParameterUiModel {
 
     private static final long serialVersionUID = 1L;
     
@@ -71,7 +72,7 @@ implements ActionArgumentModel {
     private transient ObjectActionParameter actionParameter;
     
     @Override
-    public ObjectActionParameter getActionParameter() {
+    public ObjectActionParameter getMetaModel() {
         if(actionParameter==null) {
             actionParameter = parameterMemento.getActionParameter(getSpecificationLoader()); 
         }
@@ -80,7 +81,7 @@ implements ActionArgumentModel {
 
     @Override
     public String getName() {
-        return getActionParameter().getName();
+        return getMetaModel().getName();
     }
 
     @Override
@@ -100,7 +101,7 @@ implements ActionArgumentModel {
             // shouldn't happen
             return null;
         }
-        final ObjectActionParameter actionParameter = getActionParameter();
+        final ObjectActionParameter actionParameter = getMetaModel();
         final ObjectAction action = actionParameter.getAction();
         final String objectSpecId = action.getOnType().getSpecId().asString().replace(".", "-");
         final String parmId = actionParameter.getId();
@@ -122,7 +123,7 @@ implements ActionArgumentModel {
 
     @Override
     public String parseAndValidate(final String proposedPojoAsStr) {
-        final ObjectActionParameter parameter = getActionParameter();
+        final ObjectActionParameter parameter = getMetaModel();
         try {
             ManagedObject parentAdapter = getParentUiModel().load();
             final String invalidReasonIfAny = parameter.isValid(parentAdapter, proposedPojoAsStr,
@@ -136,7 +137,7 @@ implements ActionArgumentModel {
 
     @Override
     public String validate(final ManagedObject proposedAdapter) {
-        final ObjectActionParameter parameter = getActionParameter();
+        final ObjectActionParameter parameter = getMetaModel();
         try {
             ManagedObject parentAdapter = getParentUiModel().load();
             final String invalidReasonIfAny = parameter.isValid(parentAdapter, proposedAdapter.getPojo(),
@@ -150,47 +151,47 @@ implements ActionArgumentModel {
 
     @Override
     public boolean isRequired() {
-        return isRequired(getActionParameter());
+        return isRequired(getMetaModel());
     }
 
     @Override
     public <T extends Facet> T getFacet(final Class<T> facetType) {
-        return getActionParameter().getFacet(facetType);
+        return getMetaModel().getFacet(facetType);
     }
 
     @Override
     public ManagedObject getDefault(
             @NonNull final PendingParameterModel pendingArgs) {
         
-        return getActionParameter().getDefault(pendingArgs);
+        return getMetaModel().getDefault(pendingArgs);
     }
 
     @Override
     public boolean hasChoices() {
-        return getActionParameter().hasChoices();
+        return getMetaModel().hasChoices();
     }
     @Override
     public Can<ManagedObject> getChoices(
             @NonNull final PendingParameterModel pendingArgs) {
-        return getActionParameter().getChoices(pendingArgs, InteractionInitiatedBy.USER);
+        return getMetaModel().getChoices(pendingArgs, InteractionInitiatedBy.USER);
     }
 
     @Override
     public boolean hasAutoComplete() {
-        return getActionParameter().hasAutoComplete();
+        return getMetaModel().hasAutoComplete();
     }
     @Override
     public Can<ManagedObject> getAutoComplete(
             @NonNull final PendingParameterModel pendingArgs,
             final String searchArg) {
         
-        return getActionParameter().getAutoComplete(pendingArgs, searchArg, InteractionInitiatedBy.USER);
+        return getMetaModel().getAutoComplete(pendingArgs, searchArg, InteractionInitiatedBy.USER);
     }
     
     @Override
     public int getAutoCompleteOrChoicesMinLength() {
         if (hasAutoComplete()) {
-            return getActionParameter().getAutoCompleteMinLength();
+            return getMetaModel().getAutoCompleteMinLength();
         } else {
             return 0;
         }
@@ -198,31 +199,31 @@ implements ActionArgumentModel {
 
     @Override
     public String getDescribedAs() {
-        return getActionParameter().getDescription();
+        return getMetaModel().getDescription();
     }
 
     @Override
     public Integer getLength() {
-        final BigDecimalValueFacet facet = getActionParameter().getFacet(BigDecimalValueFacet.class);
+        final BigDecimalValueFacet facet = getMetaModel().getFacet(BigDecimalValueFacet.class);
         return facet != null? facet.getPrecision(): null;
     }
 
     @Override
     public Integer getScale() {
-        final BigDecimalValueFacet facet = getActionParameter().getFacet(BigDecimalValueFacet.class);
+        final BigDecimalValueFacet facet = getMetaModel().getFacet(BigDecimalValueFacet.class);
         return facet != null? facet.getScale(): null;
     }
 
     @Override
     public int getTypicalLength() {
-        final TypicalLengthFacet facet = getActionParameter().getFacet(TypicalLengthFacet.class);
+        final TypicalLengthFacet facet = getMetaModel().getFacet(TypicalLengthFacet.class);
         return facet != null? facet.value() : StringValueSemanticsProvider.TYPICAL_LENGTH;
     }
 
 
     @Override
     public String getFileAccept() {
-        final FileAcceptFacet facet = getActionParameter().getFacet(FileAcceptFacet.class);
+        final FileAcceptFacet facet = getMetaModel().getFacet(FileAcceptFacet.class);
         return facet != null? facet.value(): null;
     }
 
@@ -233,7 +234,7 @@ implements ActionArgumentModel {
         if(objectAdapter != null) {
             return objectAdapter;
         }
-        if(getActionParameter().getFeatureType() == FeatureType.ACTION_PARAMETER_SCALAR) {
+        if(getMetaModel().getFeatureType() == FeatureType.ACTION_PARAMETER_SCALAR) {
             return objectAdapter;
         }
 
@@ -255,7 +256,7 @@ implements ActionArgumentModel {
 
     @Override
     public boolean isCollection() {
-        return getActionParameter().getFeatureType() == FeatureType.ACTION_PARAMETER_COLLECTION;
+        return getMetaModel().getFeatureType() == FeatureType.ACTION_PARAMETER_COLLECTION;
     }
 
     @Override
@@ -269,7 +270,7 @@ implements ActionArgumentModel {
     }
     
     public PendingParameterModelHead getPendingParamHead() {
-        val actionParameter = getActionParameter();
+        val actionParameter = getMetaModel();
         val actionOwner = getParentUiModel().load();
         return actionParameter.getAction().newPendingParameterModelHead(actionOwner);
     }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
index 9e1f196..13104d7 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
@@ -30,11 +30,11 @@ import org.apache.wicket.markup.repeater.RepeatingView;
 
 import org.apache.isis.core.commons.internal.base._Strings;
 import org.apache.isis.core.commons.internal.exceptions._Exceptions;
+import org.apache.isis.viewer.common.model.action.form.ActionParameterUiModel;
 import org.apache.isis.viewer.common.model.decorator.confirm.ConfirmUiModel;
 import org.apache.isis.viewer.common.model.decorator.confirm.ConfirmUiModel.Placement;
 import org.apache.isis.viewer.wicket.model.hints.IsisActionCompletedEvent;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
-import org.apache.isis.viewer.wicket.model.models.ActionArgumentModel;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
 import org.apache.isis.viewer.wicket.model.models.ScalarParameterModel;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
@@ -152,7 +152,7 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
     public void onUpdate(final AjaxRequestTarget target, final ScalarPanelAbstract2 scalarPanelUpdated) {
 
         val actionModel = getActionModel();
-        val paramModel = (ActionArgumentModel)scalarPanelUpdated.getModel();
+        val paramModel = (ActionParameterUiModel)scalarPanelUpdated.getModel();
         final int paramNumberUpdated = paramModel.getNumber();
         // only updates subsequent parameter panels starting from (paramNumberUpdated + 1)
         final int skipCount = paramNumberUpdated + 1;   


[isis] 01/02: ISIS-2340: decouple ActionArgumentModel from Wicket

Posted by ah...@apache.org.
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 78f8650b778c0ff735d3209ebe6c4d73ab799692
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu May 7 13:24:36 2020 +0200

    ISIS-2340: decouple ActionArgumentModel from Wicket
---
 .../wicket/model/models/ActionArgumentCache.java    |  8 ++++----
 .../wicket/model/models/ActionArgumentModel.java    | 21 +++++++++++----------
 .../viewer/wicket/model/models/ActionModel.java     |  5 ++---
 .../wicket/model/models/ScalarParameterModel.java   | 10 ++++++++--
 .../ui/components/actions/ActionParametersForm.java | 13 +++++++------
 .../ui/components/scalars/ScalarPanelAbstract2.java |  3 ++-
 6 files changed, 34 insertions(+), 26 deletions(-)

diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentCache.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentCache.java
index 721b56b..98633b4 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentCache.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentCache.java
@@ -53,7 +53,7 @@ class ActionArgumentCache implements PendingParameterManager {
                 action);
         primeArgumentModels();
         for (val argumentEntry : arguments.entrySet()) {
-            putArgumentValue(argumentEntry.getKey(), argumentEntry.getValue().getObject());
+            putArgumentValue(argumentEntry.getKey(), argumentEntry.getValue().getValue());
         }
         return copy;
     }
@@ -66,7 +66,7 @@ class ActionArgumentCache implements PendingParameterManager {
         .mapToObj(paramIndex->{
             val actionArgumentModel = Optional.ofNullable(arguments.get(paramIndex));
             val adapter = actionArgumentModel
-                    .map(ActionArgumentModel::getObject)
+                    .map(ActionArgumentModel::getValue)
                     .orElse(ManagedObject.empty(paramTypes.getElseFail(paramIndex)));
             return adapter;
         
@@ -82,7 +82,7 @@ class ActionArgumentCache implements PendingParameterManager {
         .forEach(actionArgumentModel -> {
             int paramIndex = actionArgumentModel.getNumber();
             val paramDefaultValue = defaultsFixedPoint.getElseFail(paramIndex);
-            actionArgumentModel.setObject(paramDefaultValue);
+            actionArgumentModel.setValue(paramDefaultValue);
         });
     }
     
@@ -96,7 +96,7 @@ class ActionArgumentCache implements PendingParameterManager {
     public void setParameterValue(ObjectActionParameter actionParameter, ManagedObject newParamValue) {
         val actionParameterMemento = new ActionParameterMemento(actionParameter);
         val actionArgumentModel = computeIfAbsent(actionParameterMemento);
-        actionArgumentModel.setObject(newParamValue);
+        actionArgumentModel.setValue(newParamValue);
     }
     
     @Override
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentModel.java
index 49b9f23..0d6ba8a 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentModel.java
@@ -18,20 +18,21 @@
  */
 package org.apache.isis.viewer.wicket.model.models;
 
-import org.apache.wicket.model.IModel;
-
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModel;
 
-public interface ActionArgumentModel extends IModel<ManagedObject> {
+public interface ActionArgumentModel {
 
     ObjectActionParameter getActionParameter();
     
     String getCssClass();
     
-    // transient storage
-    void setActionArgsHint(PendingParameterModel pendingArgs);
+    /** param value */
+    ManagedObject getValue();
+    
+    /** param value */
+    void setValue(ManagedObject paramValue);
 
     // -- SHORTCUTS
     
@@ -39,11 +40,11 @@ public interface ActionArgumentModel extends IModel<ManagedObject> {
     default int getNumber() {
         return getActionParameter().getNumber();
     }
+
+    // -- DEPRECATIONS
     
-    /** param value */
-    default ManagedObject getValue() {
-        return getObject();
-    }
-    
+    // transient storage
+    void setActionArgsHint(PendingParameterModel pendingArgs);
+
 
 }
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
index a192f90..40dc8e7 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
@@ -460,7 +460,7 @@ implements FormExecutorContext {
     @Value(staticConstructor = "of")
     public static class ActionArgumentModelAndConsents {
         final PendingParameterModel pendingArgs;
-        final ActionArgumentModel actionArgumentModel;
+        final ActionArgumentModel paramModel;
         final Consent visibilityConsent;
         final Consent usabilityConsent;
     }
@@ -468,8 +468,7 @@ implements FormExecutorContext {
     public Stream<ActionArgumentModelAndConsents> streamActionArgumentModels() {
 
         val targetAdapter = this.getTargetAdapter();
-        val realTargetAdapter = this.getAction()
-                .realTargetAdapter(targetAdapter);
+        val realTargetAdapter = this.getAction().realTargetAdapter(targetAdapter);
         val pendingArgs = getArgumentsAsParamModel();
         val pendingArgValues = pendingArgs.getParamValues();
 
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
index 04d5406..3e190d8 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
@@ -274,9 +274,15 @@ implements ActionArgumentModel {
         return actionParameter.getAction().newPendingParameterModelHead(actionOwner);
     }
 
+    @Override
+    public ManagedObject getValue() {
+        return getObject();
+    }
 
-
-
+    @Override
+    public void setValue(ManagedObject paramValue) {
+        super.setObject(paramValue);
+    }
 
     
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
index c3b4fdc..9e1f196 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
@@ -36,6 +36,7 @@ import org.apache.isis.viewer.wicket.model.hints.IsisActionCompletedEvent;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.models.ActionArgumentModel;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
+import org.apache.isis.viewer.wicket.model.models.ScalarParameterModel;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract2;
 import org.apache.isis.viewer.wicket.ui.panels.FormExecutorStrategy;
@@ -75,12 +76,12 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
         actionModel.streamActionArgumentModels()
         .forEach(argsAndConsents->{
             
-            val actionArgumentModel = argsAndConsents.getActionArgumentModel(); 
+            val paramModel = (ScalarParameterModel) argsAndConsents.getParamModel(); 
             
             val container = new WebMarkupContainer(repeatingView.newChildId());
             repeatingView.add(container);
             
-            newParamPanel(container, actionArgumentModel)
+            newParamPanel(container, paramModel)
             .ifPresent(paramPanel->{
                 paramPanels.add(paramPanel);
                 //val paramModel = (ScalarParameterModel) paramPanel.getModel();
@@ -96,14 +97,14 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
 
     private Optional<ScalarPanelAbstract2> newParamPanel(
             final WebMarkupContainer container, 
-            final ActionArgumentModel actionArgumentModel) {
+            final ScalarParameterModel paramModel) {
         
         final Component component = getComponentFactoryRegistry()
-                .addOrReplaceComponent(container, ComponentType.SCALAR_NAME_AND_VALUE, actionArgumentModel);
+                .addOrReplaceComponent(container, ComponentType.SCALAR_NAME_AND_VALUE, paramModel);
 
         if(component instanceof MarkupContainer) {
             val markupContainer = (MarkupContainer) component;
-            val css = actionArgumentModel.getCssClass();
+            val css = paramModel.getCssClass();
             if (!_Strings.isNullOrEmpty(css)) {
                 CssClassAppender.appendCssClassTo(markupContainer, CssClassAppender.asCssStyle(css));    
             }
@@ -162,7 +163,7 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
         .skip(skipCount)
         .forEach(argAndConsents->{
             
-            val paramNumToUpdate = argAndConsents.getActionArgumentModel().getNumber();
+            val paramNumToUpdate = argAndConsents.getParamModel().getNumber();
             val paramPanel = paramPanels.get(paramNumToUpdate);
             val repaint = paramPanel.updateIfNecessary(argAndConsents, Optional.of(target));
             
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
index e047423..085d47a 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
@@ -119,6 +119,7 @@ implements ScalarModelSubscriber2 {
 
     /** this is a hack for the ScalarParameterModel, which does not support usability constraints in the model*/
     private transient Runnable postInit;
+    @Deprecated // properly implement ScalarParameterModel
     public void postInit(@NonNull final ActionArgumentModelAndConsents argsAndConsents) {
         this.postInit = () ->{
             // visibility
@@ -147,7 +148,7 @@ implements ScalarModelSubscriber2 {
             @NonNull final ActionArgumentModelAndConsents argsAndConsents,
             @NonNull final Optional<AjaxRequestTarget> target) {
         
-        val argModel = argsAndConsents.getActionArgumentModel();
+        val argModel = argsAndConsents.getParamModel();
         
         // visibility
         val visibilityConsent = argsAndConsents.getVisibilityConsent();