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 15:48:53 UTC
[isis] branch master updated: ISIS-2340: further moving logic to
common UI model
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
The following commit(s) were added to refs/heads/master by this push:
new 5ffee67 ISIS-2340: further moving logic to common UI model
5ffee67 is described below
commit 5ffee67fdac123edc2e018bcd352d32a37e762e5
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu May 7 17:48:39 2020 +0200
ISIS-2340: further moving logic to common UI model
---
.../model/action/form/FormPendingParamUiModel.java | 26 ++++++++++++++++-
.../common/model/action/form/FormUiModel.java | 4 +++
.../wicket/model/models/ActionArgumentCache.java | 6 ++--
.../viewer/wicket/model/models/ActionModel.java | 34 ++++++----------------
.../wicket/model/models/FormExecutorContext.java | 3 +-
.../components/actions/ActionParametersForm.java | 6 ++--
6 files changed, 46 insertions(+), 33 deletions(-)
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/FormPendingParamUiModel.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/FormPendingParamUiModel.java
index 7367633..8c9a4d9 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/FormPendingParamUiModel.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/FormPendingParamUiModel.java
@@ -19,15 +19,39 @@
package org.apache.isis.viewer.common.model.action.form;
import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModel;
import org.apache.isis.viewer.common.model.feature.ParameterUiModel;
import lombok.Value;
+import lombok.val;
@Value(staticConstructor = "of")
public class FormPendingParamUiModel {
- final PendingParameterModel pendingArgs;
+
final ParameterUiModel paramModel;
final Consent visibilityConsent;
final Consent usabilityConsent;
+
+ public static FormPendingParamUiModel of(
+ ManagedObject target,
+ ParameterUiModel paramUiModel,
+ PendingParameterModel pendingArgs) {
+
+ val objectActionParamter = paramUiModel.getMetaModel();
+ val pendingArgValues = pendingArgs.getParamValues();
+
+ paramUiModel.setPendingParameterModel(pendingArgs);
+
+ // visibility
+ val visibilityConsent = objectActionParamter
+ .isVisible(target, pendingArgValues, InteractionInitiatedBy.USER);
+
+ // usability
+ val usabilityConsent = objectActionParamter
+ .isUsable(target, pendingArgValues, InteractionInitiatedBy.USER);
+
+ return of(paramUiModel, visibilityConsent, usabilityConsent);
+ }
}
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/FormUiModel.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/FormUiModel.java
index 5ad138b..3abf6f0 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/FormUiModel.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/FormUiModel.java
@@ -18,6 +18,10 @@
*/
package org.apache.isis.viewer.common.model.action.form;
+import java.util.stream.Stream;
+
public interface FormUiModel {
+ Stream<FormPendingParamUiModel> streamPendingParamUiModels();
+
}
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 fc09325..aa3ce81 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
@@ -79,7 +79,7 @@ class ActionArgumentCache implements PendingParameterManager {
arguments.clear();
- streamActionArgumentModels()
+ streamParamUiModels()
.forEach(actionArgumentModel -> {
int paramIndex = actionArgumentModel.getNumber();
val paramDefaultValue = defaultsFixedPoint.getElseFail(paramIndex);
@@ -87,7 +87,7 @@ class ActionArgumentCache implements PendingParameterManager {
});
}
- public Stream<ParameterUiModel> streamActionArgumentModels() {
+ public Stream<ParameterUiModel> streamParamUiModels() {
return streamParamNumbers()
.mapToObj(paramIndex->
arguments.computeIfAbsent(paramIndex, this::createArgumentModel));
@@ -122,7 +122,7 @@ class ActionArgumentCache implements PendingParameterManager {
private void primeArgumentModels() {
_Assert.assertEquals(
action.getParameterCount(),
- (int)streamActionArgumentModels().count());
+ (int)streamParamUiModels().count());
}
private ParameterUiModel computeIfAbsent(final ActionParameterMemento apm) {
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 42ea916..57df7fd 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
@@ -59,13 +59,14 @@ 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.FormPendingParamUiModel;
+import org.apache.isis.viewer.common.model.action.form.FormUiModel;
import org.apache.isis.viewer.wicket.model.mementos.ActionMemento;
import lombok.val;
public class ActionModel
extends BookmarkableModel<ManagedObject>
-implements FormExecutorContext {
+implements FormUiModel, FormExecutorContext {
private static final long serialVersionUID = 1L;
@@ -456,44 +457,27 @@ implements FormExecutorContext {
argCache().clearParameterValue(actionParameter);
}
-
-
- public Stream<FormPendingParamUiModel> streamActionArgumentModels() {
+ @Override
+ public Stream<FormPendingParamUiModel> streamPendingParamUiModels() {
val targetAdapter = this.getTargetAdapter();
val realTargetAdapter = this.getAction().realTargetAdapter(targetAdapter);
val pendingArgs = getArgumentsAsParamModel();
- val pendingArgValues = pendingArgs.getParamValues();
return argCache()
- .streamActionArgumentModels()
- .map(actionArgumentModel->{
-
- actionArgumentModel.setPendingParameterModel(pendingArgs);
-
- val objectActionParamter = actionArgumentModel.getMetaModel();
-
- // visibility
- val visibilityConsent = objectActionParamter
- .isVisible(realTargetAdapter, pendingArgValues, InteractionInitiatedBy.USER);
-
- // usability
- val usabilityConsent = objectActionParamter
- .isUsable(realTargetAdapter, pendingArgValues, InteractionInitiatedBy.USER);
-
- return FormPendingParamUiModel.of(
- pendingArgs, actionArgumentModel, visibilityConsent, usabilityConsent);
-
+ .streamParamUiModels()
+ .map(paramUiModel->{
+ return FormPendingParamUiModel.of(realTargetAdapter, paramUiModel, pendingArgs);
});
}
- public void reassessActionArgumentModels(int skipCount) {
+ public void reassessPendingParamUiModels(int skipCount) {
val pendingArgs = getArgumentsAsParamModel();
argCache()
- .streamActionArgumentModels()
+ .streamParamUiModels()
.skip(skipCount)
.forEach(actionArgumentModel->{
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/FormExecutorContext.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/FormExecutorContext.java
index faa9409..2f4a8da 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/FormExecutorContext.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/FormExecutorContext.java
@@ -22,7 +22,8 @@ package org.apache.isis.viewer.wicket.model.models;
import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.viewer.common.model.HasParentUiModel;
-public interface FormExecutorContext extends HasParentUiModel<EntityModel> {
+public interface FormExecutorContext
+extends HasParentUiModel<EntityModel> {
PromptStyle getPromptStyle();
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 bf71ee2..5e8b377 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
@@ -73,7 +73,7 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
paramPanels.clear();
- actionModel.streamActionArgumentModels()
+ actionModel.streamPendingParamUiModels()
.forEach(argsAndConsents->{
val paramModel = (ScalarParameterModel) argsAndConsents.getParamModel();
@@ -157,9 +157,9 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
// only updates subsequent parameter panels starting from (paramNumberUpdated + 1)
final int skipCount = paramNumberUpdated + 1;
- actionModel.reassessActionArgumentModels(skipCount);
+ actionModel.reassessPendingParamUiModels(skipCount);
- actionModel.streamActionArgumentModels()
+ actionModel.streamPendingParamUiModels()
.skip(skipCount)
.forEach(argAndConsents->{