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:54 UTC

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

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