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