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 <ahu...@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->{