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 16:56:02 UTC

[isis] branch master updated (e3f04ea -> 366f6f4)

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 e3f04ea  Merge branch 'master' of https://github.com/apache/isis
     new b87b224  ISIS-2340: renaming for consistency
     new 366f6f4  ISIS-2340: move more ActionModel logic to common

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:
 .../isis/core/metamodel/spec/ManagedObjects.java   |  14 +++
 .../common/model/action/form/FormUiModel.java      |  85 +++++++++++++++-
 .../viewer/wicket/model/models/ActionModel.java    | 107 ++++-----------------
 .../wicket/model/models/PageParameterUtil.java     |   4 +-
 .../ui/components/actioninfo/ActionInfoPanel.java  |   4 +-
 .../ui/components/actionlink/ActionLinkPanel.java  |   2 +-
 .../actionlink/ActionLinkPanelFactory.java         |   2 +-
 .../actionprompt/ActionPromptHeaderPanel.java      |   6 +-
 .../actions/ActionFormExecutorStrategy.java        |   4 +-
 .../components/actions/ActionParametersForm.java   |   2 +-
 .../actions/ActionParametersFormPanel.java         |   2 +-
 .../components/actions/ActionParametersPanel.java  |   2 +-
 .../StandaloneCollectionPanel.java                 |   2 +-
 .../widgets/linkandlabel/ActionLink.java           |  19 +---
 .../linkandlabel/LinkAndLabelFactoryAbstract.java  |  10 +-
 .../ui/pages/actionprompt/ActionPromptPage.java    |   4 +-
 .../StandaloneCollectionPage.java                  |   2 +-
 .../viewer/wicket/ui/pages/value/ValuePage.java    |   2 +-
 .../wicket/ui/pages/voidreturn/VoidReturnPage.java |   2 +-
 .../wicket/ui/panels/FormExecutorDefault.java      |   2 +-
 20 files changed, 150 insertions(+), 127 deletions(-)


[isis] 01/02: ISIS-2340: renaming for consistency

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 b87b224347b4099574b41e66a85ac7bf06e1a88a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu May 7 17:56:56 2020 +0200

    ISIS-2340: renaming for consistency
---
 .../common/model/action/form/FormUiModel.java      |  4 +++
 .../viewer/wicket/model/models/ActionModel.java    | 31 +++++++++++-----------
 .../wicket/model/models/PageParameterUtil.java     |  4 +--
 .../ui/components/actioninfo/ActionInfoPanel.java  |  2 +-
 .../ui/components/actionlink/ActionLinkPanel.java  |  2 +-
 .../actionlink/ActionLinkPanelFactory.java         |  2 +-
 .../actionprompt/ActionPromptHeaderPanel.java      |  4 +--
 .../components/actions/ActionParametersForm.java   |  2 +-
 .../actions/ActionParametersFormPanel.java         |  2 +-
 .../components/actions/ActionParametersPanel.java  |  2 +-
 .../StandaloneCollectionPanel.java                 |  2 +-
 .../widgets/linkandlabel/ActionLink.java           |  4 +--
 .../linkandlabel/LinkAndLabelFactoryAbstract.java  |  4 +--
 .../ui/pages/actionprompt/ActionPromptPage.java    |  4 +--
 .../StandaloneCollectionPage.java                  |  2 +-
 .../viewer/wicket/ui/pages/value/ValuePage.java    |  2 +-
 .../wicket/ui/pages/voidreturn/VoidReturnPage.java |  2 +-
 .../wicket/ui/panels/FormExecutorDefault.java      |  2 +-
 18 files changed, 41 insertions(+), 36 deletions(-)

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 3abf6f0..fa03cd2 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
@@ -20,8 +20,12 @@ package org.apache.isis.viewer.common.model.action.form;
 
 import java.util.stream.Stream;
 
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+
 public interface FormUiModel {
 
+    ObjectAction getMetaModel();
+    
     Stream<FormPendingParamUiModel> streamPendingParamUiModels();
 
 }
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 57df7fd..9041cfb 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
@@ -97,7 +97,7 @@ implements FormUiModel, FormExecutorContext {
     @Override
     public PageParameters getPageParametersWithoutUiHints() {
         val adapter = getTargetAdapter();
-        val objectAction = getAction();
+        val objectAction = getMetaModel();
         return PageParameterUtil.createPageParameters(adapter, objectAction, argCache().snapshot());
     }
 
@@ -111,7 +111,7 @@ implements FormUiModel, FormExecutorContext {
     @Override
     public String getTitle() {
         val target = getTargetAdapter();
-        val objectAction = getAction();
+        val objectAction = getMetaModel();
 
         val buf = new StringBuilder();
         for(val argumentAdapter: argCache().snapshot()) {
@@ -158,7 +158,7 @@ implements FormUiModel, FormExecutorContext {
         return new ActionArgumentCache(
                 entityModel, 
                 actionMemento, 
-                getAction());
+                getMetaModel());
     }
 
     private ActionModel(EntityModel entityModel, ActionMemento actionMemento) {
@@ -178,7 +178,8 @@ implements FormUiModel, FormExecutorContext {
     }
 
     private transient ObjectAction objectAction;
-    public ObjectAction getAction() {
+    @Override
+    public ObjectAction getMetaModel() {
         if(objectAction==null) {
             objectAction = actionMemento.getAction(getSpecificationLoader()); 
         }
@@ -186,7 +187,7 @@ implements FormUiModel, FormExecutorContext {
     }
 
     public boolean hasParameters() {
-        return getAction().getParameterCount() > 0;
+        return getMetaModel().getParameterCount() > 0;
     }
 
     public ManagedObject getTargetAdapter() {
@@ -216,7 +217,7 @@ implements FormUiModel, FormExecutorContext {
 
         val targetAdapter = getTargetAdapter();
         final Can<ManagedObject> arguments = argCache().snapshot();
-        final ObjectAction action = getAction();
+        final ObjectAction action = getMetaModel();
 
         // if this action is a mixin, then it will fill in the details automatically.
         val mixedInAdapter = (ManagedObject)null;
@@ -244,7 +245,7 @@ implements FormUiModel, FormExecutorContext {
     public String getReasonDisabledIfAny() {
 
         val targetAdapter = getTargetAdapter();
-        final ObjectAction objectAction = getAction();
+        final ObjectAction objectAction = getMetaModel();
 
         final Consent usability =
                 objectAction.isUsable(
@@ -259,7 +260,7 @@ implements FormUiModel, FormExecutorContext {
     public boolean isVisible() {
 
         val targetAdapter = getTargetAdapter();
-        val objectAction = getAction();
+        val objectAction = getMetaModel();
 
         final Consent visibility =
                 objectAction.isVisible(
@@ -273,7 +274,7 @@ implements FormUiModel, FormExecutorContext {
     public String getReasonInvalidIfAny() {
         val targetAdapter = getTargetAdapter();
         final Can<ManagedObject> proposedArguments = argCache().snapshot();
-        final ObjectAction objectAction = getAction();
+        final ObjectAction objectAction = getMetaModel();
         final Consent validity = objectAction
                 .isProposedArgumentSetValid(targetAdapter, proposedArguments, InteractionInitiatedBy.USER);
         return validity.isAllowed() ? null : validity.getReason();
@@ -285,7 +286,7 @@ implements FormUiModel, FormExecutorContext {
     }
 
     public PendingParameterModel getArgumentsAsParamModel() {
-        return getAction().newPendingParameterModelHead(getTargetAdapter())
+        return getMetaModel().newPendingParameterModelHead(getTargetAdapter())
                 .model(argCache().snapshot());
     }
 
@@ -295,7 +296,7 @@ implements FormUiModel, FormExecutorContext {
      */
     public void clearArguments() {
 
-        val defaultsFixedPoint = getAction()
+        val defaultsFixedPoint = getMetaModel()
                 .newPendingParameterModelHead(getTargetAdapter())
                 .defaults()
                 .getParamValues();
@@ -308,7 +309,7 @@ implements FormUiModel, FormExecutorContext {
      * of {@link BookmarkPolicy#AS_ROOT root}, and has safe {@link ObjectAction#getSemantics() semantics}.
      */
     public boolean isBookmarkable() {
-        final ObjectAction action = getAction();
+        final ObjectAction action = getMetaModel();
         final BookmarkPolicyFacet bookmarkPolicy = action.getFacet(BookmarkPolicyFacet.class);
         final boolean safeSemantics = action.getSemantics().isSafeInNature();
         return bookmarkPolicy.value() == BookmarkPolicy.AS_ROOT && safeSemantics;
@@ -392,7 +393,7 @@ implements FormUiModel, FormExecutorContext {
 
     @Override
     public PromptStyle getPromptStyle() {
-        final ObjectAction objectAction = getAction();
+        final ObjectAction objectAction = getMetaModel();
         final ObjectSpecification objectActionOwner = objectAction.getOnType();
         if(objectActionOwner.isManagedBean()) {
             // tried to move this test into PromptStyleFacetFallback,
@@ -428,7 +429,7 @@ implements FormUiModel, FormExecutorContext {
     }
 
     public <T extends Facet> T getFacet(final Class<T> facetType) {
-        final FacetHolder facetHolder = getAction();
+        final FacetHolder facetHolder = getMetaModel();
         return facetHolder.getFacet(facetType);
     }
 
@@ -461,7 +462,7 @@ implements FormUiModel, FormExecutorContext {
     public Stream<FormPendingParamUiModel> streamPendingParamUiModels() {
 
         val targetAdapter = this.getTargetAdapter();
-        val realTargetAdapter = this.getAction().realTargetAdapter(targetAdapter);
+        val realTargetAdapter = this.getMetaModel().realTargetAdapter(targetAdapter);
         val pendingArgs = getArgumentsAsParamModel();
 
         return argCache()
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/PageParameterUtil.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/PageParameterUtil.java
index ca9861f..9950788 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/PageParameterUtil.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/PageParameterUtil.java
@@ -216,7 +216,7 @@ class PageParameterUtil {
 
         final List<String> argsAsEncodedOidStrings = PageParameterNames.ACTION_ARGS.getListFrom(pageParameters);
 
-        val action = actionModel.getAction();
+        val action = actionModel.getMetaModel();
         val parameters = action.getParameters();
 
         for (int paramNum = 0; paramNum < argsAsEncodedOidStrings.size(); paramNum++) {
@@ -237,7 +237,7 @@ class PageParameterUtil {
             return false;
         }
         
-        val action = actionModel.getAction();
+        val action = actionModel.getMetaModel();
         val actionParamIfAny = action.getParameters().get(paramNumAndOidString.getParamNum());
         if(!actionParamIfAny.isPresent()) {
             return false;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actioninfo/ActionInfoPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actioninfo/ActionInfoPanel.java
index 7f052fa..3d34f26 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actioninfo/ActionInfoPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actioninfo/ActionInfoPanel.java
@@ -40,7 +40,7 @@ public class ActionInfoPanel extends PanelAbstract<ActionModel> {
         super(id, actionModel);
 
         val targetAdapter = getModel().getTargetAdapter();
-        val objectAction = getModel().getAction();
+        val objectAction = getModel().getMetaModel();
 
         // TODO: render instead as links (providing isn't a service; provide a
         // component for this?)
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionlink/ActionLinkPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionlink/ActionLinkPanel.java
index 12a5ca6..8e4a38a 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionlink/ActionLinkPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionlink/ActionLinkPanel.java
@@ -79,7 +79,7 @@ public class ActionLinkPanel extends PanelAbstract<ActionModel> {
     }
 
     private String determineTitle() {
-        return getModel().getAction().getId();
+        return getModel().getMetaModel().getId();
     }
 
     private AbstractLink newLink(final String linkId, final Class<? extends Page> pageClass, final PageParameters pageParameters) {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionlink/ActionLinkPanelFactory.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionlink/ActionLinkPanelFactory.java
index 6119e1c..6725560 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionlink/ActionLinkPanelFactory.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionlink/ActionLinkPanelFactory.java
@@ -45,7 +45,7 @@ public class ActionLinkPanelFactory extends ComponentFactoryAbstract {
             return ApplicationAdvice.DOES_NOT_APPLY;
         }
         final ActionModel actionModel = (ActionModel) model;
-        final SemanticsOf semantics = actionModel.getAction().getSemantics();
+        final SemanticsOf semantics = actionModel.getMetaModel().getSemantics();
         return ApplicationAdvice.appliesIf(semantics.isSafeInNature());
     }
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptHeaderPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptHeaderPanel.java
index d4561be..26061b4 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptHeaderPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptHeaderPanel.java
@@ -48,12 +48,12 @@ public class ActionPromptHeaderPanel extends PanelAbstract<ActionModel> {
             private static final long serialVersionUID = 1L;
             @Override
             public String getObject() {
-                final ObjectAction action = model.getAction();
+                final ObjectAction action = model.getMetaModel();
                 return action.getName();
             }
         });
 
-        final ObjectAction action = model.getAction();
+        final ObjectAction action = model.getMetaModel();
         NamedFacet namedFacet = action.getFacet(NamedFacet.class);
         if (namedFacet != null) {
             label.setEscapeModelStrings(namedFacet.escaped());
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 5e8b377..d3a54af 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
@@ -140,7 +140,7 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
      */
     private void applyAreYouSure(AjaxButton button) {
         val actionModel = getActionModel();
-        val action = actionModel.getAction();
+        val action = actionModel.getMetaModel();
         
         if (action.getSemantics().isAreYouSure()) {
             val confirmUiModel = ConfirmUiModel.ofAreYouSure(getTranslationService(), Placement.RIGHT);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
index b06d4eb..2df3121 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersFormPanel.java
@@ -51,7 +51,7 @@ public class ActionParametersFormPanel extends PromptFormPanelAbstract<ActionMod
         final ActionParametersForm inputForm =
                 new ActionParametersForm("inputForm", this, this.getWicketViewerSettings(), model);
 
-        final ObjectAction action = model.getAction();
+        final ObjectAction action = model.getMetaModel();
         CssClassAppender.appendCssClassTo(inputForm, "isis-" + CssClassAppender.asCssStyle(action.getOnType().getSpecId().asString().replace(".","-") + "-" + action.getId()));
         add(inputForm);
     }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersPanel.java
index 61328e7..3f47d0b 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersPanel.java
@@ -97,7 +97,7 @@ public class ActionParametersPanel extends PanelAbstract<ActionModel> {
             getComponentFactoryRegistry().addOrReplaceComponent(header, ComponentType.ENTITY_ICON_AND_TITLE, actionModel
                     .getParentUiModel());
 
-            final String actionName = getActionModel().getAction().getName();
+            final String actionName = getActionModel().getMetaModel().getName();
             header.add(new Label(ID_ACTION_NAME, Model.of(actionName)));
 
         } 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
index ec25d2d..7bdda54 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
@@ -63,7 +63,7 @@ implements CollectionCountProvider, CollectionSelectorProvider {
         addOrReplace(outerDiv);
 
         ActionModel actionModel = entityCollectionModel.getActionModelHint();
-        ObjectAction action = actionModel.getAction();
+        ObjectAction action = actionModel.getMetaModel();
         outerDiv.addOrReplace(new Label(StandaloneCollectionPanel.ID_ACTION_NAME, Model.of(action.getName())));
 
         CssClassAppender.appendCssClassTo(outerDiv,
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLink.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLink.java
index 777845b..48bbcd2 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLink.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLink.java
@@ -111,7 +111,7 @@ public abstract class ActionLink extends AjaxLink<ManagedObject> implements IAja
     public ObjectAction getObjectAction() {
         return objectAction != null
                 ? objectAction
-                        : (objectAction = getActionModel().getAction());
+                        : (objectAction = getActionModel().getMetaModel());
     }
 
 
@@ -261,7 +261,7 @@ public abstract class ActionLink extends AjaxLink<ManagedObject> implements IAja
     }
 
     private static boolean isIdempotentOrCachable(ActionModel actionModel) {
-        val objectAction = actionModel.getAction();
+        val objectAction = actionModel.getMetaModel();
         return ObjectAction.Util.isIdempotentOrCachable(objectAction);
     }
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/LinkAndLabelFactoryAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/LinkAndLabelFactoryAbstract.java
index e6379c8..e8e0e9f 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/LinkAndLabelFactoryAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/LinkAndLabelFactoryAbstract.java
@@ -182,7 +182,7 @@ implements Serializable {
                     private static final long serialVersionUID = 1L;
                     @Override
                     public String getObject() {
-                        final ObjectAction action = actionModel.getAction();
+                        final ObjectAction action = actionModel.getMetaModel();
                         return action.getName();
                     }
                 });
@@ -195,7 +195,7 @@ implements Serializable {
                     final ActionPromptWithExtraContent promptWithExtraContent =
                             (ActionPromptWithExtraContent) prompt;
 
-                    final ObjectAction action = actionModel.getAction();
+                    final ObjectAction action = actionModel.getMetaModel();
                     if(action instanceof ObjectActionMixedIn) {
                         final ObjectActionMixedIn actionMixedIn = (ObjectActionMixedIn) action;
                         final ObjectSpecification mixinSpec = actionMixedIn.getMixinType();
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/actionprompt/ActionPromptPage.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/actionprompt/ActionPromptPage.java
index 8fae257..0a39f6b 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/actionprompt/ActionPromptPage.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/actionprompt/ActionPromptPage.java
@@ -38,7 +38,7 @@ public class ActionPromptPage extends PageAbstract {
     public ActionPromptPage(final ActionModel model) {
         super(
                 new PageParameters(), 
-                model.getAction().getName(), 
+                model.getMetaModel().getName(), 
                 ComponentType.ACTION_PROMPT);
         
         addChildComponents(themeDiv, model);
@@ -61,7 +61,7 @@ public class ActionPromptPage extends PageAbstract {
     }
 
     public ActionPromptPage(final PageParameters pageParameters, final ActionModel model) {
-        super(pageParameters, model.getAction().getName(), ComponentType.ACTION_PROMPT);
+        super(pageParameters, model.getMetaModel().getName(), ComponentType.ACTION_PROMPT);
         addChildComponents(themeDiv, model);
 
         // no need to bookmark because the ActionParametersPanel will have done so for us
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/standalonecollection/StandaloneCollectionPage.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/standalonecollection/StandaloneCollectionPage.java
index 7e49f86..0f5fbfd 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/standalonecollection/StandaloneCollectionPage.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/standalonecollection/StandaloneCollectionPage.java
@@ -49,7 +49,7 @@ public class StandaloneCollectionPage extends PageAbstract {
     private static String actionNameFrom(final EntityCollectionModel model) {
         ActionModel actionModel = model.getActionModelHint();
         if(actionModel != null) {
-            return actionModel.getAction().getName();
+            return actionModel.getMetaModel().getName();
         }
         return "Results"; // fallback, probably not required because hint should always exist on the model.
     }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/value/ValuePage.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/value/ValuePage.java
index e2efc18..b301537 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/value/ValuePage.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/value/ValuePage.java
@@ -62,7 +62,7 @@ public class ValuePage extends PageAbstract {
     private static String actionNameFrom(final ValueModel valueModel) {
         ActionModel actionModel = valueModel.getActionModelHint();
         if(actionModel != null) {
-            return actionModel.getAction().getName();
+            return actionModel.getMetaModel().getName();
         }
         return "Results"; // fallback, probably not required because hint should always exist on the model.
     }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/voidreturn/VoidReturnPage.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/voidreturn/VoidReturnPage.java
index f086cc2..abd61c2 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/voidreturn/VoidReturnPage.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/voidreturn/VoidReturnPage.java
@@ -55,7 +55,7 @@ public class VoidReturnPage extends PageAbstract {
     private static String actionNameFrom(final VoidModel model) {
         ActionModel actionModel = model.getActionModelHint();
         if(actionModel != null) {
-            return actionModel.getAction().getName();
+            return actionModel.getMetaModel().getName();
         }
         return "Results"; // fallback, probably not required because hint should always exist on the model.
     }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
index 6f659fd..7265d6d 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
@@ -169,7 +169,7 @@ implements FormExecutor {
             RedirectFacet redirectFacet = null;
             if(model instanceof ActionModel) {
                 final ActionModel actionModel = (ActionModel) model;
-                redirectFacet = actionModel.getAction().getFacet(RedirectFacet.class);
+                redirectFacet = actionModel.getMetaModel().getFacet(RedirectFacet.class);
             }
 
             if (shouldRedirect(targetAdapter, resultAdapter, redirectFacet) 


[isis] 02/02: ISIS-2340: move more ActionModel logic to common

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 366f6f4c95c5259c136a1ce3fe47281fdaf66ecc
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu May 7 18:55:24 2020 +0200

    ISIS-2340: move more ActionModel logic to common
---
 .../isis/core/metamodel/spec/ManagedObjects.java   | 14 ++++
 .../common/model/action/form/FormUiModel.java      | 81 ++++++++++++++++++-
 .../viewer/wicket/model/models/ActionModel.java    | 90 +++-------------------
 .../ui/components/actioninfo/ActionInfoPanel.java  |  2 +-
 .../actionprompt/ActionPromptHeaderPanel.java      |  2 +-
 .../actions/ActionFormExecutorStrategy.java        |  4 +-
 .../widgets/linkandlabel/ActionLink.java           | 15 +---
 .../linkandlabel/LinkAndLabelFactoryAbstract.java  |  6 +-
 8 files changed, 116 insertions(+), 98 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
index 18cc336..cc9aee7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
@@ -106,6 +106,20 @@ public final class ManagedObjects {
         return adapter;
         
     }
+    
+    // -- TITLE UTILITIES
+    
+    public static String abbreviatedTitleOf(ManagedObject adapter, int maxLength, String suffix) {
+        return abbreviated(titleOf(adapter), maxLength, suffix);
+    }
+    
+    private static String titleOf(ManagedObject adapter) {
+        return adapter!=null?adapter.titleString(null):"";
+    }
+
+    private static String abbreviated(final String str, final int maxLength, String suffix) {
+        return str.length() < maxLength ? str : str.substring(0, maxLength - 3) + suffix;
+    }
 
 
 }
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 fa03cd2..b05a2ca 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
@@ -20,12 +20,91 @@ package org.apache.isis.viewer.common.model.action.form;
 
 import java.util.stream.Stream;
 
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.commons.collections.Can;
+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.spec.ManagedObjects;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModelHead;
+import org.apache.isis.viewer.common.model.HasTitle;
+import org.apache.isis.viewer.common.model.feature.ParameterUiModel;
 
-public interface FormUiModel {
+import lombok.val;
+
+public interface FormUiModel extends HasTitle {
 
     ObjectAction getMetaModel();
     
+    /** action's owner
+     * @apiNote for mixins this is not the target to use on mixin actions
+     * instead the logic of resolving the target for action invocation is 
+     * encapsulated within the {@link PendingParameterModelHead}
+     */
+    ManagedObject getOwner();
+    
     Stream<FormPendingParamUiModel> streamPendingParamUiModels();
 
+    // -- USABILITY
+    
+    default Consent getUsabilityConsent() {
+        return getMetaModel().isUsable(
+                getOwner(),
+                InteractionInitiatedBy.USER,
+                Where.OBJECT_FORMS);
+    }
+
+    // -- VISABILITY
+    
+    default Consent getVisibilityConsent() {
+        return getMetaModel().isVisible(
+                getOwner(),
+                InteractionInitiatedBy.USER,
+                Where.OBJECT_FORMS);
+    }
+
+    // -- VALIDITY
+    
+    default Consent getValidityConsent() {
+        
+        val proposedArguments = streamPendingParamUiModels()
+                .map(FormPendingParamUiModel::getParamModel)
+                .map(ParameterUiModel::getValue)
+                .collect(Can.toCan());
+                
+        return getMetaModel().isProposedArgumentSetValid(
+                getOwner(), 
+                proposedArguments, 
+                InteractionInitiatedBy.USER);
+        
+    }
+    
+    // -- HAS TITLE
+    
+    default String getTitle() {
+        val target = getOwner();
+        val objectAction = getMetaModel();
+
+        val buf = new StringBuilder();
+        
+        streamPendingParamUiModels()
+        .filter(argAndConsent->argAndConsent.getVisibilityConsent().isAllowed())
+        .map(FormPendingParamUiModel::getParamModel)
+        .map(ParameterUiModel::getValue)
+        .forEach(paramValue->{
+            if(buf.length() > 0) {
+                buf.append(",");
+            }
+            buf.append(ManagedObjects.abbreviatedTitleOf(paramValue, 8, "..."));
+        });
+        return target.titleString(null) + "." + objectAction.getName() + (buf.length()>0?"(" + buf.toString() + ")":"");
+    }
+    
+    // -- SHORTCUTS
+    
+    default boolean hasParameters() {
+        return getMetaModel().getParameterCount() > 0;
+    }
+    
 }
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 9041cfb..f752d64 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
@@ -45,7 +45,6 @@ import org.apache.isis.applib.value.LocalResourcePath;
 import org.apache.isis.applib.value.NamedWithMimeType;
 import org.apache.isis.core.commons.collections.Can;
 import org.apache.isis.core.commons.internal.base._NullSafe;
-import org.apache.isis.core.metamodel.consent.Consent;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -96,7 +95,7 @@ implements FormUiModel, FormExecutorContext {
 
     @Override
     public PageParameters getPageParametersWithoutUiHints() {
-        val adapter = getTargetAdapter();
+        val adapter = getOwner();
         val objectAction = getMetaModel();
         return PageParameterUtil.createPageParameters(adapter, objectAction, argCache().snapshot());
     }
@@ -107,21 +106,14 @@ implements FormUiModel, FormExecutorContext {
     }
 
     // --
-
+    
+    private transient ObjectAction objectAction;
     @Override
-    public String getTitle() {
-        val target = getTargetAdapter();
-        val objectAction = getMetaModel();
-
-        val buf = new StringBuilder();
-        for(val argumentAdapter: argCache().snapshot()) {
-            if(buf.length() > 0) {
-                buf.append(",");
-            }
-            buf.append(abbreviated(titleOf(argumentAdapter), 8));
+    public ObjectAction getMetaModel() {
+        if(objectAction==null) {
+            objectAction = actionMemento.getAction(getSpecificationLoader()); 
         }
-
-        return target.titleString(null) + "." + objectAction.getName() + (buf.length()>0?"(" + buf.toString() + ")":"");
+        return objectAction;
     }
 
     @Override
@@ -136,14 +128,6 @@ implements FormUiModel, FormExecutorContext {
 
     // -- HELPERS
 
-    private static String titleOf(ManagedObject argumentAdapter) {
-        return argumentAdapter!=null?argumentAdapter.titleString(null):"";
-    }
-
-    private static String abbreviated(final String str, final int maxLength) {
-        return str.length() < maxLength ? str : str.substring(0, maxLength - 3) + "...";
-    }
-
     private final EntityModel entityModel;
     private final ActionMemento actionMemento;
 
@@ -177,20 +161,8 @@ implements FormUiModel, FormExecutorContext {
         this.argCache = actionModel.argCache().copy(); 
     }
 
-    private transient ObjectAction objectAction;
     @Override
-    public ObjectAction getMetaModel() {
-        if(objectAction==null) {
-            objectAction = actionMemento.getAction(getSpecificationLoader()); 
-        }
-        return objectAction;
-    }
-
-    public boolean hasParameters() {
-        return getMetaModel().getParameterCount() > 0;
-    }
-
-    public ManagedObject getTargetAdapter() {
+    public ManagedObject getOwner() {
         return entityModel.load();
     }
 
@@ -215,7 +187,7 @@ implements FormUiModel, FormExecutorContext {
 
     private ManagedObject executeAction() {
 
-        val targetAdapter = getTargetAdapter();
+        val targetAdapter = getOwner();
         final Can<ManagedObject> arguments = argCache().snapshot();
         final ObjectAction action = getMetaModel();
 
@@ -242,51 +214,13 @@ implements FormUiModel, FormExecutorContext {
 
     }
 
-    public String getReasonDisabledIfAny() {
-
-        val targetAdapter = getTargetAdapter();
-        final ObjectAction objectAction = getMetaModel();
-
-        final Consent usability =
-                objectAction.isUsable(
-                        targetAdapter,
-                        InteractionInitiatedBy.USER,
-                        Where.OBJECT_FORMS);
-        final String disabledReasonIfAny = usability.getReason();
-        return disabledReasonIfAny;
-    }
-
-
-    public boolean isVisible() {
-
-        val targetAdapter = getTargetAdapter();
-        val objectAction = getMetaModel();
-
-        final Consent visibility =
-                objectAction.isVisible(
-                        targetAdapter,
-                        InteractionInitiatedBy.USER,
-                        Where.OBJECT_FORMS);
-        return visibility.isAllowed();
-    }
-
-
-    public String getReasonInvalidIfAny() {
-        val targetAdapter = getTargetAdapter();
-        final Can<ManagedObject> proposedArguments = argCache().snapshot();
-        final ObjectAction objectAction = getMetaModel();
-        final Consent validity = objectAction
-                .isProposedArgumentSetValid(targetAdapter, proposedArguments, InteractionInitiatedBy.USER);
-        return validity.isAllowed() ? null : validity.getReason();
-    }
-
     @Override
     public void setObject(final ManagedObject object) {
         throw new UnsupportedOperationException("target adapter for ActionModel cannot be changed");
     }
 
     public PendingParameterModel getArgumentsAsParamModel() {
-        return getMetaModel().newPendingParameterModelHead(getTargetAdapter())
+        return getMetaModel().newPendingParameterModelHead(getOwner())
                 .model(argCache().snapshot());
     }
 
@@ -297,7 +231,7 @@ implements FormUiModel, FormExecutorContext {
     public void clearArguments() {
 
         val defaultsFixedPoint = getMetaModel()
-                .newPendingParameterModelHead(getTargetAdapter())
+                .newPendingParameterModelHead(getOwner())
                 .defaults()
                 .getParamValues();
 
@@ -461,7 +395,7 @@ implements FormUiModel, FormExecutorContext {
     @Override
     public Stream<FormPendingParamUiModel> streamPendingParamUiModels() {
 
-        val targetAdapter = this.getTargetAdapter();
+        val targetAdapter = this.getOwner();
         val realTargetAdapter = this.getMetaModel().realTargetAdapter(targetAdapter);
         val pendingArgs = getArgumentsAsParamModel();
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actioninfo/ActionInfoPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actioninfo/ActionInfoPanel.java
index 3d34f26..c5e928e 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actioninfo/ActionInfoPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actioninfo/ActionInfoPanel.java
@@ -39,7 +39,7 @@ public class ActionInfoPanel extends PanelAbstract<ActionModel> {
     public ActionInfoPanel(final String id, final ActionModel actionModel) {
         super(id, actionModel);
 
-        val targetAdapter = getModel().getTargetAdapter();
+        val targetAdapter = getModel().getOwner();
         val objectAction = getModel().getMetaModel();
 
         // TODO: render instead as links (providing isn't a service; provide a
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptHeaderPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptHeaderPanel.java
index 26061b4..eead4cc 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptHeaderPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptHeaderPanel.java
@@ -39,7 +39,7 @@ public class ActionPromptHeaderPanel extends PanelAbstract<ActionModel> {
     public ActionPromptHeaderPanel(String id, final ActionModel model) {
         super(id, model);
 
-        _Blackhole.consume(model.getTargetAdapter()); // side-effect: loads the model
+        _Blackhole.consume(model.getOwner()); // side-effect: loads the model
 
         getComponentFactoryRegistry().addOrReplaceComponent(this, ComponentType.ENTITY_ICON_AND_TITLE, model.getParentUiModel());
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionFormExecutorStrategy.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionFormExecutorStrategy.java
index 9f805b2..b976200 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionFormExecutorStrategy.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionFormExecutorStrategy.java
@@ -42,12 +42,12 @@ public class ActionFormExecutorStrategy implements FormExecutorStrategy<ActionMo
 
     @Override
     public ManagedObject obtainTargetAdapter() {
-        return model.getTargetAdapter();
+        return model.getOwner();
     }
 
     @Override
     public String getReasonInvalidIfAny() {
-        return model.getReasonInvalidIfAny();
+        return model.getValidityConsent().getReason();
     }
 
     @Override
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLink.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLink.java
index 48bbcd2..646328f 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLink.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLink.java
@@ -128,7 +128,7 @@ public abstract class ActionLink extends AjaxLink<ManagedObject> implements IAja
 
     public String getReasonDisabledIfAny() {
         // no point evaluating if not visible
-        return isVisible() ? getActionModel().getReasonDisabledIfAny() : null;
+        return isVisible() ? getActionModel().getUsabilityConsent().getReason() : null;
     }
 
     @Override
@@ -155,22 +155,13 @@ public abstract class ActionLink extends AjaxLink<ManagedObject> implements IAja
 
     @Override
     public boolean isVisible() {
-        return determineIfVisible();
-    }
-
-    private boolean determineIfVisible() {
-        return getActionModel().isVisible();
+        return getActionModel().getVisibilityConsent().isAllowed();
     }
 
     @Override
     @Programmatic
     public boolean isEnabled() {
-        return determineIfEnabled();
-    }
-
-    private boolean determineIfEnabled() {
-        val reasonDisabledIfAny = getReasonDisabledIfAny();
-        return reasonDisabledIfAny == null;
+        return getActionModel().getUsabilityConsent().isAllowed();
     }
 
     @Override
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/LinkAndLabelFactoryAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/LinkAndLabelFactoryAbstract.java
index e8e0e9f..999510d 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/LinkAndLabelFactoryAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/LinkAndLabelFactoryAbstract.java
@@ -160,7 +160,7 @@ implements Serializable {
 
         if(inlinePromptContext == null || promptStyle.isDialog()) {
             final ActionPromptProvider promptProvider = ActionPromptProvider.getFrom(actionLink.getPage());
-            val spec = actionModel.getTargetAdapter().getSpecification();
+            val spec = actionModel.getOwner().getSpecification();
 
             final ActionPrompt prompt = promptProvider.getActionPrompt(promptStyle, spec.getBeanSort());
 
@@ -203,7 +203,7 @@ implements Serializable {
                         if(mixinSpec.isViewModel()) {
 
                             val commonContext = getCommonContext();
-                            final ManagedObject targetAdapterForMixin = action.realTargetAdapter(actionModel.getTargetAdapter());
+                            final ManagedObject targetAdapterForMixin = action.realTargetAdapter(actionModel.getOwner());
                             final EntityModel entityModelForMixin = 
                                     EntityModel.ofAdapter(commonContext, targetAdapterForMixin);
 
@@ -263,7 +263,7 @@ implements Serializable {
                     // (One way this can occur is if an event subscriber has a defect and throws an exception; in which case
                     // the EventBus' exception handler will automatically veto.  This results in a growl message rather than
                     // an error page, but is probably 'good enough').
-                    val targetAdapter = actionModel.getTargetAdapter();
+                    val targetAdapter = actionModel.getOwner();
 
                     final EntityPage entityPage = new EntityPage(getCommonContext(), targetAdapter);