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/04 13:45:10 UTC

[isis] branch master updated (9415d58 -> 841ab08)

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 9415d58  ISIS-2340: proposed fix for ISIS-2287
     new 2ce1267  ISIS-2319: minor refactoring
     new 5f9d1f8  ISIS-2319: minor refactoring
     new 841ab08  ISIS-2319: simplify ActionModel (make #getActionMemento() private)

The 3 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:
 ...eprocessor.java => CanonicalParameterUtil.java} |  4 +-
 .../core/metamodel/commons/MethodExtensions.java   | 10 +--
 ...ctionInvocationFacetForDomainEventAbstract.java |  6 +-
 .../isis/core/metamodel/spec/ManagedObject.java    | 58 +--------------
 .../isis/core/metamodel/spec/ManagedObjects.java   | 87 ++++++++++++++++++++++
 ...pendentArgsActionDemo_useDefaultFixedPoint.java | 27 +++++--
 .../wicket/model/models/ActionArgumentModel.java   |  5 +-
 .../viewer/wicket/model/models/ActionModel.java    | 20 +++--
 .../ui/components/actioninfo/ActionInfoPanel.java  |  3 +-
 .../ui/components/actionlink/ActionLinkPanel.java  |  2 +-
 .../actionlink/ActionLinkPanelFactory.java         |  2 +-
 .../actionprompt/ActionPromptHeaderPanel.java      |  4 +-
 .../components/actions/ActionParametersForm.java   | 36 ++++-----
 .../actions/ActionParametersFormPanel.java         |  2 +-
 .../components/actions/ActionParametersPanel.java  |  2 +-
 .../CollectionContentsSortableDataProvider.java    |  3 +-
 .../components/scalars/ScalarPanelAbstract2.java   | 41 ++++------
 .../scalars/ScalarPanelSelect2Abstract.java        |  2 +-
 .../scalars/ScalarPanelTextFieldAbstract.java      | 14 ++--
 .../isisapplib/IsisBlobOrClobPanelAbstract.java    |  8 +-
 .../components/scalars/primitive/BooleanPanel.java | 14 ++--
 .../scalars/reference/ReferencePanel.java          | 16 ++--
 .../valuechoices/ValueChoicesSelect2Panel.java     | 12 +--
 .../StandaloneCollectionPanel.java                 |  2 +-
 .../widgets/linkandlabel/ActionLink.java           |  7 +-
 .../linkandlabel/LinkAndLabelFactoryAbstract.java  |  4 +-
 .../ui/pages/actionprompt/ActionPromptPage.java    |  6 +-
 .../StandaloneCollectionPage.java                  |  2 +-
 .../viewer/wicket/ui/pages/value/ValuePage.java    |  2 +-
 .../wicket/ui/pages/voidreturn/VoidReturnPage.java |  2 +-
 .../wicket/ui/panels/FormExecutorDefault.java      |  2 +-
 31 files changed, 218 insertions(+), 187 deletions(-)
 rename core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/{MethodInvocationPreprocessor.java => CanonicalParameterUtil.java} (97%)
 create mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java


[isis] 03/03: ISIS-2319: simplify ActionModel (make #getActionMemento() private)

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 841ab08956cd044939eb38d6d914f3cd01a0be30
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon May 4 15:44:56 2020 +0200

    ISIS-2319: simplify ActionModel (make #getActionMemento() private)
---
 ...pendentArgsActionDemo_useDefaultFixedPoint.java | 27 ++++++++++++++++++----
 .../viewer/wicket/model/models/ActionModel.java    |  4 ++--
 .../ui/components/actioninfo/ActionInfoPanel.java  |  3 +--
 .../ui/components/actionlink/ActionLinkPanel.java  |  2 +-
 .../actionlink/ActionLinkPanelFactory.java         |  2 +-
 .../actionprompt/ActionPromptHeaderPanel.java      |  4 ++--
 .../components/actions/ActionParametersForm.java   | 12 +++++-----
 .../actions/ActionParametersFormPanel.java         |  2 +-
 .../components/actions/ActionParametersPanel.java  |  2 +-
 .../components/scalars/ScalarPanelAbstract2.java   |  4 ++--
 .../StandaloneCollectionPanel.java                 |  2 +-
 .../widgets/linkandlabel/ActionLink.java           |  7 +++---
 .../linkandlabel/LinkAndLabelFactoryAbstract.java  |  4 ++--
 .../ui/pages/actionprompt/ActionPromptPage.java    |  6 ++---
 .../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, 52 insertions(+), 37 deletions(-)

diff --git a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDefaultFixedPoint.java b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDefaultFixedPoint.java
index 405f07c..e535e9e 100644
--- a/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDefaultFixedPoint.java
+++ b/examples/demo/src/main/java/demoapp/dom/actions/depargs/DependentArgsActionDemo_useDefaultFixedPoint.java
@@ -26,6 +26,7 @@ import org.apache.isis.applib.annotation.Optionality;
 import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.services.message.MessageService;
+import org.apache.isis.core.commons.internal.debug._Probe;
 import org.apache.isis.incubator.model.applib.annotation.Model;
 
 import lombok.RequiredArgsConstructor;
@@ -77,23 +78,39 @@ public class DependentArgsActionDemo_useDefaultFixedPoint {
 
     @Model
     public int default0Act(Parameters params) {
+        _Probe.sysOut("p0: %d %d %d %d", params.a, params.b, params.c, params.d);
         return 1;
     }
-
+    
+    // -- PARAM 1
+    
     @Model
     public int default1Act(Parameters params) {
+        _Probe.sysOut("p1: %d %d %d %d", params.a, params.b, params.c, params.d);
         return params.a() + 1;
     }
     
-    @Model
-    public int default2Act(Parameters params) {
-        return params.b() + 1;
-    }
+    // -- PARAM 2
+    
+//    @Model
+//    public int default2Act(Parameters params) {
+//        _Probe.sysOut("p2: %d %d %d %d", params.a, params.b, params.c, params.d);
+//        return params.b() + 1;
+//    }
+    
+    // -- PARAM 3
     
     @Model
     public int default3Act(Parameters params) {
+        _Probe.sysOut("p3: %d %d %d %d", params.a, params.b, params.c, params.d);
         return params.c() + 1;
     }
 
+    
+    
+    
+    
+
+
 }
 
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 e9e5003..2d18f61 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
@@ -313,7 +313,7 @@ public class ActionModel extends BookmarkableModel<ManagedObject> implements For
         }
     }
 
-    private ObjectAction getAction() {
+    public ObjectAction getAction() {
         return getActionMemento().getAction(getSpecificationLoader());
     }
 
@@ -389,7 +389,7 @@ public class ActionModel extends BookmarkableModel<ManagedObject> implements For
         return entityModel.load();
     }
 
-    public ActionMemento getActionMemento() {
+    private ActionMemento getActionMemento() {
         return actionMemento;
     }
 
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 b1e440a..7f052fa 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
@@ -21,7 +21,6 @@ package org.apache.isis.viewer.wicket.ui.components.actioninfo;
 
 import org.apache.wicket.markup.html.basic.Label;
 
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 
@@ -41,7 +40,7 @@ public class ActionInfoPanel extends PanelAbstract<ActionModel> {
         super(id, actionModel);
 
         val targetAdapter = getModel().getTargetAdapter();
-        final ObjectAction objectAction = getModel().getActionMemento().getAction(getModel().getSpecificationLoader());
+        val objectAction = getModel().getAction();
 
         // 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 59a93c4..12a5ca6 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().getActionMemento().getAction(getSpecificationLoader()).getId();
+        return getModel().getAction().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 c7a906f..6119e1c 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.getActionMemento().getAction(actionModel.getSpecificationLoader()).getSemantics();
+        final SemanticsOf semantics = actionModel.getAction().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 501c460..0d918eb 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.getActionMemento().getAction(getSpecificationLoader());
+                final ObjectAction action = model.getAction();
                 return action.getName();
             }
         });
 
-        final ObjectAction action = model.getActionMemento().getAction(getSpecificationLoader());
+        final ObjectAction action = model.getAction();
         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 693d9e4..8e375cd 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
@@ -77,7 +77,7 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
             
             val actionArgumentModel = argsAndConsents.getActionArgumentModel(); 
             val visibilityConsent = argsAndConsents.getVisibilityConsent();
-            val usabilityConsent = argsAndConsents.getVisibilityConsent();
+            val usabilityConsent = argsAndConsents.getUsabilityConsent();
             
             val container = new WebMarkupContainer(repeatingView.newChildId());
             repeatingView.add(container);
@@ -98,14 +98,14 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
 
     private Optional<ScalarPanelAbstract2> newParamPanel(
             final WebMarkupContainer container, 
-            final ActionArgumentModel model) {
+            final ActionArgumentModel actionArgumentModel) {
         
         final Component component = getComponentFactoryRegistry()
-                .addOrReplaceComponent(container, ComponentType.SCALAR_NAME_AND_VALUE, model);
+                .addOrReplaceComponent(container, ComponentType.SCALAR_NAME_AND_VALUE, actionArgumentModel);
 
         if(component instanceof MarkupContainer) {
             val markupContainer = (MarkupContainer) component;
-            val css = model.getCssClass();
+            val css = actionArgumentModel.getCssClass();
             CssClassAppender.appendCssClassTo(markupContainer, CssClassAppender.asCssStyle(css));
         }
         
@@ -139,7 +139,7 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
      */
     private void applyAreYouSure(AjaxButton button) {
         val actionModel = getActionModel();
-        val action = actionModel.getActionMemento().getAction(getSpecificationLoader());
+        val action = actionModel.getAction();
         
         if (action.getSemantics().isAreYouSure()) {
             val confirmUiModel = ConfirmUiModel.ofAreYouSure(getTranslationService(), Placement.RIGHT);
@@ -156,7 +156,7 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
         
         final int paramNumberUpdated = paramModel.getParameterMemento().getNumber();
         
-        val action = actionModel.getActionMemento().getAction(getSpecificationLoader());
+        val action = actionModel.getAction();
 
         final int numParams = action.getParameterCount();
 
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 b9b49b3..b06d4eb 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.getActionMemento().getAction(getSpecificationLoader());
+        final ObjectAction action = model.getAction();
         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 51fca20..c0bf71a 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
                     .getParentEntityModel());
 
-            final String actionName = getActionModel().getActionMemento().getAction(actionModel.getSpecificationLoader()).getName();
+            final String actionName = getActionModel().getAction().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/scalars/ScalarPanelAbstract2.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
index e1e9eba..3473d3c 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
@@ -133,10 +133,10 @@ implements ScalarModelSubscriber2 {
     public Repaint updateIfNecessary(
             final ActionModel actionModel,
             final int paramNumUpdated,
-            final int paramNumToPossiblyUpdate,//FIXME I guess we need to re-rerender all not just the next
+            final int paramNumToPossiblyUpdate,
             final AjaxRequestTarget target) {
 
-        final ObjectAction action = actionModel.getActionMemento().getAction(getSpecificationLoader());
+        final ObjectAction action = actionModel.getAction();
         final PendingParameterModel pendingArguments = actionModel.getArgumentsAsParamModel();
         final Can<ManagedObject> pendingArgumentsReadonly = pendingArguments.getParamValues();
         
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 60d962e..ec25d2d 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.getActionMemento().getAction(entityCollectionModel.getSpecificationLoader());
+        ObjectAction action = actionModel.getAction();
         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 5c9b8cc..777845b 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
@@ -34,11 +34,11 @@ import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.value.LocalResourcePath;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettingsAccessor;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
 import org.apache.isis.viewer.wicket.ui.panels.PanelUtil;
-import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
 
 import lombok.Getter;
 import lombok.val;
@@ -111,7 +111,7 @@ public abstract class ActionLink extends AjaxLink<ManagedObject> implements IAja
     public ObjectAction getObjectAction() {
         return objectAction != null
                 ? objectAction
-                        : (objectAction = getActionModel().getActionMemento().getAction(commonContext.getSpecificationLoader()));
+                        : (objectAction = getActionModel().getAction());
     }
 
 
@@ -261,8 +261,7 @@ public abstract class ActionLink extends AjaxLink<ManagedObject> implements IAja
     }
 
     private static boolean isIdempotentOrCachable(ActionModel actionModel) {
-        final ObjectAction objectAction = actionModel.getActionMemento()
-                .getAction(actionModel.getSpecificationLoader());
+        val objectAction = actionModel.getAction();
         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 7df11070..543864f 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.getActionMemento().getAction(getSpecificationLoader());
+                        final ObjectAction action = actionModel.getAction();
                         return action.getName();
                     }
                 });
@@ -195,7 +195,7 @@ implements Serializable {
                     final ActionPromptWithExtraContent promptWithExtraContent =
                             (ActionPromptWithExtraContent) prompt;
 
-                    final ObjectAction action = actionModel.getActionMemento().getAction(getSpecificationLoader());
+                    final ObjectAction action = actionModel.getAction();
                     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 f7ab184..029fcf6 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
@@ -22,10 +22,10 @@ package org.apache.isis.viewer.wicket.ui.pages.actionprompt;
 import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 
+import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.pages.PageAbstract;
-import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
 
 import lombok.val;
 
@@ -40,7 +40,7 @@ public class ActionPromptPage extends PageAbstract {
     public ActionPromptPage(final ActionModel model) {
         super(
                 new PageParameters(), 
-                model.getActionMemento().getAction(model.getSpecificationLoader()).getName(), 
+                model.getAction().getName(), 
                 ComponentType.ACTION_PROMPT);
         
         addChildComponents(themeDiv, model);
@@ -63,7 +63,7 @@ public class ActionPromptPage extends PageAbstract {
     }
 
     public ActionPromptPage(final PageParameters pageParameters, final ActionModel model) {
-        super(pageParameters, model.getActionMemento().getAction(model.getSpecificationLoader()).getName(), ComponentType.ACTION_PROMPT);
+        super(pageParameters, model.getAction().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 f57659d..7e49f86 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.getActionMemento().getAction(actionModel.getSpecificationLoader()).getName();
+            return actionModel.getAction().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 7c34d66..e2efc18 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.getActionMemento().getAction(valueModel.getSpecificationLoader()).getName();
+            return actionModel.getAction().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 3e57cf8..f086cc2 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.getActionMemento().getAction(model.getSpecificationLoader()).getName();
+            return actionModel.getAction().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 e5008a1..a419889 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.getActionMemento().getAction(getSpecificationLoader()).getFacet(RedirectFacet.class);
+                redirectFacet = actionModel.getAction().getFacet(RedirectFacet.class);
             }
 
             if (shouldRedirect(targetAdapter, resultAdapter, redirectFacet) 


[isis] 02/03: ISIS-2319: minor refactoring

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 5f9d1f87169143e38fc57a632464446bd57f3f6f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon May 4 15:19:05 2020 +0200

    ISIS-2319: minor refactoring
---
 .../wicket/model/models/ActionArgumentModel.java   |  5 +--
 .../viewer/wicket/model/models/ActionModel.java    | 16 ++++++----
 .../components/actions/ActionParametersForm.java   | 28 ++++++----------
 .../components/scalars/ScalarPanelAbstract2.java   | 37 +++++++---------------
 .../scalars/ScalarPanelSelect2Abstract.java        |  2 +-
 .../scalars/ScalarPanelTextFieldAbstract.java      | 14 ++++----
 .../isisapplib/IsisBlobOrClobPanelAbstract.java    |  8 ++---
 .../components/scalars/primitive/BooleanPanel.java | 14 ++++----
 .../scalars/reference/ReferencePanel.java          | 16 +++++-----
 .../valuechoices/ValueChoicesSelect2Panel.java     | 12 +++----
 10 files changed, 65 insertions(+), 87 deletions(-)

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 2b5dd55..6f46c38 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
@@ -20,7 +20,6 @@ package org.apache.isis.viewer.wicket.model.models;
 
 import org.apache.wicket.model.IModel;
 
-import org.apache.isis.core.commons.collections.Can;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -29,9 +28,8 @@ import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
 public interface ActionArgumentModel extends IModel<ManagedObject> {
 
     ActionParameterMemento getParameterMemento();
+    String getCssClass();
 
-    void setActionArgsHint(Can<ManagedObject> arguments);
-    
     // -- SHORTCUTS
     
     default ObjectActionParameter getActionParameter(SpecificationLoader specificationLoader) {
@@ -42,5 +40,4 @@ public interface ActionArgumentModel extends IModel<ManagedObject> {
         return getParameterMemento().getNumber();
     }
 
-
 }
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 7cea4c1..e9e5003 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
@@ -660,12 +660,13 @@ public class ActionModel extends BookmarkableModel<ManagedObject> implements For
     }
     
     @Value(staticConstructor = "of")
-    public static class ActionArgumentModelAndVisibilityConsent {
+    public static class ActionArgumentModelAndConsents {
         final ActionArgumentModel actionArgumentModel;
         final Consent visibilityConsent;
+        final Consent usabilityConsent;
     }
 
-    public Stream<ActionArgumentModelAndVisibilityConsent> streamActionArgumentModels() {
+    public Stream<ActionArgumentModelAndConsents> streamActionArgumentModels() {
 
         val specificationLoader = getSpecificationLoader();
         val targetAdapter = this.getTargetAdapter();
@@ -676,13 +677,16 @@ public class ActionModel extends BookmarkableModel<ManagedObject> implements For
         return argCache().streamActionArgumentModels()
         .map(actionArgumentModel->{
         
-            actionArgumentModel.setActionArgsHint(actionArgsHint);
-            
             // visibility
             val visibilityConsent = actionArgumentModel.getActionParameter(specificationLoader)
-                    .isVisible(realTargetAdapter, Can.empty(), InteractionInitiatedBy.USER);
+                    .isVisible(realTargetAdapter, actionArgsHint, InteractionInitiatedBy.USER);
+            
+            // usability
+            val usabilityConsent = actionArgumentModel.getActionParameter(specificationLoader)
+                    .isUsable(realTargetAdapter, actionArgsHint, InteractionInitiatedBy.USER);
             
-            return ActionArgumentModelAndVisibilityConsent.of(actionArgumentModel, visibilityConsent);
+            return ActionArgumentModelAndConsents.of(
+                    actionArgumentModel, visibilityConsent, usabilityConsent);
             
         });
         
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 4aa2738..693d9e4 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
@@ -29,8 +29,6 @@ import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.repeater.RepeatingView;
 
 import org.apache.isis.core.commons.internal.exceptions._Exceptions;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
 import org.apache.isis.viewer.common.model.decorator.confirm.ConfirmUiModel;
 import org.apache.isis.viewer.common.model.decorator.confirm.ConfirmUiModel.Placement;
 import org.apache.isis.viewer.wicket.model.hints.IsisActionCompletedEvent;
@@ -75,10 +73,11 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
         paramPanels.clear();
         
         actionModel.streamActionArgumentModels()
-        .forEach(tuple->{
+        .forEach(argsAndConsents->{
             
-            val actionArgumentModel = tuple.getActionArgumentModel(); 
-            val visibilityConsent = tuple.getVisibilityConsent();
+            val actionArgumentModel = argsAndConsents.getActionArgumentModel(); 
+            val visibilityConsent = argsAndConsents.getVisibilityConsent();
+            val usabilityConsent = argsAndConsents.getVisibilityConsent();
             
             val container = new WebMarkupContainer(repeatingView.newChildId());
             repeatingView.add(container);
@@ -87,6 +86,7 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
             .ifPresent(paramPanel->{
                 paramPanels.add(paramPanel);
                 paramPanel.setVisible(visibilityConsent.isAllowed());
+                //paramPanel.onInitializeReadonly(usabilityConsent.getReason());
             });
             
         });
@@ -104,23 +104,15 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
                 .addOrReplaceComponent(container, ComponentType.SCALAR_NAME_AND_VALUE, model);
 
         if(component instanceof MarkupContainer) {
-            final MarkupContainer markupContainer = (MarkupContainer) component;
-
-            // TODO: copy-n-paste of ScalarModel.Kind#getCssClass(ScalarModel), so could perhaps unify
-            final ObjectActionParameter actionParameter = model.getActionParameter(getSpecificationLoader());
-
-            final ObjectAction action = actionParameter.getAction();
-            final String objectSpecId = action.getOnType().getSpecId().asString().replace(".", "-");
-            final String parmId = actionParameter.getId();
-
-            final String css = "isis-" + objectSpecId + "-" + action.getId() + "-" + parmId;
-
+            val markupContainer = (MarkupContainer) component;
+            val css = model.getCssClass();
             CssClassAppender.appendCssClassTo(markupContainer, CssClassAppender.asCssStyle(css));
         }
-        final ScalarPanelAbstract2 paramPanel =
+        
+        val paramPanel =
                 component instanceof ScalarPanelAbstract2
                 ? (ScalarPanelAbstract2) component
-                        : null;
+                : null;
                 
         if (paramPanel != null) {
             paramPanel.setOutputMarkupId(true);
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 3027f79..e1e9eba 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
@@ -164,7 +164,7 @@ implements ScalarModelSubscriber2 {
         if(usabilityAfter) {
             onEnabled(target);
         } else {
-            onDisabled(usabilityConsent.getReason(), target);
+            onNotEditable(usabilityConsent.getReason(), target);
         }
 
         // even if now invisible or unusable, we recalculate args and ensure compatible
@@ -312,15 +312,15 @@ implements ScalarModelSubscriber2 {
         final boolean mustBeEditable = scalarModel.mustBeEditable();
         if (disableReasonIfAny != null) {
             if(mustBeEditable) {
-                onInitializeWhenViewMode();
+                onInitializeNotEditable();
             } else {
-                onInitializeWhenDisabled(disableReasonIfAny);
+                onInitializeReadonly(disableReasonIfAny);
             }
         } else {
             if (scalarModel.isViewMode()) {
-                onInitializeWhenViewMode();
+                onInitializeNotEditable();
             } else {        
-                onInitializeWhenEnabled();
+                onInitializeEditable();
             }
         }
 
@@ -453,43 +453,28 @@ implements ScalarModelSubscriber2 {
 
     /**
      * The widget starts off in read-only, but should be possible to activate into edit mode.
-     *
-     * <p>
-     *     TODO: perhaps rename to 'notEditable'
-     * </p>
      */
-    protected void onInitializeWhenViewMode() {
+    protected void onInitializeNotEditable() {
     }
 
     /**
      * The widget starts off read-only, and CANNOT be activated into edit mode.
-     *
-     * <p>
-     *     TODO: perhaps rename to 'readOnly'
-     * </p>
      */
-    protected void onInitializeWhenDisabled(final String disableReason) {
+    protected void onInitializeReadonly(final String disableReason) {
     }
 
     /**
      * The widget starts off immediately editable.
-     *
-     * <p>
-     *     TODO: perhaps rename to 'editable'.
-     * </p>
      */
-    protected void onInitializeWhenEnabled() {
+    protected void onInitializeEditable() {
     }
 
     /**
      * The widget is no longer editable.
-     *
-     * <p>
-     *     TODO: perhaps rename to 'onNotEditable', because the semantics here aren't the same as 'onInitializeWhenDisabled'
-     *       (the latter is never editable).
-     * </p>
+     * @apiNote
+     *     the semantics here aren't the same as 'onInitializeWhenDisabled' (the latter is never editable).
      */
-    protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
+    protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
     }
 
     /**
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelSelect2Abstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelSelect2Abstract.java
index ca63480..ca03d4b 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelSelect2Abstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelSelect2Abstract.java
@@ -159,7 +159,7 @@ public abstract class ScalarPanelSelect2Abstract extends ScalarPanelAbstract2 {
     }
 
     @Override
-    protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
+    protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
         setEnabled(false);
     }
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
index 26081cd..1dc37a3 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
@@ -321,8 +321,8 @@ implements TextFieldValueModel.ScalarModelProvider {
 
 
     @Override
-    protected void onInitializeWhenViewMode() {
-        super.onInitializeWhenViewMode();
+    protected void onInitializeNotEditable() {
+        super.onInitializeNotEditable();
 
         textField.setEnabled(false);
         addReplaceDisabledTagWithReadonlyTagBehaviourIfRequired(textField);
@@ -331,8 +331,8 @@ implements TextFieldValueModel.ScalarModelProvider {
     }
 
     @Override
-    protected void onInitializeWhenDisabled(final String disableReason) {
-        super.onInitializeWhenDisabled(disableReason);
+    protected void onInitializeReadonly(final String disableReason) {
+        super.onInitializeReadonly(disableReason);
 
         textField.setEnabled(false);
         addReplaceDisabledTagWithReadonlyTagBehaviourIfRequired(textField);
@@ -343,15 +343,15 @@ implements TextFieldValueModel.ScalarModelProvider {
     }
 
     @Override
-    protected void onInitializeWhenEnabled() {
-        super.onInitializeWhenEnabled();
+    protected void onInitializeEditable() {
+        super.onInitializeEditable();
         textField.setEnabled(true);
         inlinePromptLink.setEnabled(true);
         clearTooltip();
     }
 
     @Override
-    protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
+    protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
         textField.setEnabled(false);
         inlinePromptLink.setEnabled(false);
         setTooltip(disableReason);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
index bd9b2c6..18aafdf 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
@@ -190,17 +190,17 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
     // //////////////////////////////////////
 
     @Override
-    protected void onInitializeWhenViewMode() {
+    protected void onInitializeNotEditable() {
         updateRegularFormComponents(InputFieldVisibility.VISIBLE, InputFieldEditability.NOT_EDITABLE, null, null);
     }
 
     @Override
-    protected void onInitializeWhenDisabled(final String disableReason) {
+    protected void onInitializeReadonly(final String disableReason) {
         updateRegularFormComponents(InputFieldVisibility.VISIBLE, InputFieldEditability.NOT_EDITABLE, null, null);
     }
 
     @Override
-    protected void onInitializeWhenEnabled() {
+    protected void onInitializeEditable() {
         updateRegularFormComponents(InputFieldVisibility.VISIBLE, InputFieldEditability.EDITABLE, null, null);
     }
 
@@ -236,7 +236,7 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
     }
 
     @Override
-    protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
+    protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
         updateRegularFormComponents(InputFieldVisibility.VISIBLE, InputFieldEditability.NOT_EDITABLE, disableReason, target);
     }
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
index cb0b520..57cff91 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
@@ -207,20 +207,20 @@ public class BooleanPanel extends ScalarPanelAbstract2 {
     }
 
     @Override
-    protected void onInitializeWhenEnabled() {
-        super.onInitializeWhenEnabled();
+    protected void onInitializeEditable() {
+        super.onInitializeEditable();
         checkBox.setEnabled(true);
     }
 
     @Override
-    protected void onInitializeWhenViewMode() {
-        super.onInitializeWhenViewMode();
+    protected void onInitializeNotEditable() {
+        super.onInitializeNotEditable();
         checkBox.setEnabled(false);
     }
 
     @Override
-    protected void onInitializeWhenDisabled(final String disableReason) {
-        super.onInitializeWhenDisabled(disableReason);
+    protected void onInitializeReadonly(final String disableReason) {
+        super.onInitializeReadonly(disableReason);
         checkBox.setEnabled(false);
         final AttributeModifier title = new AttributeModifier("title",
                 Model.of(disableReason != null ? disableReason : ""));
@@ -228,7 +228,7 @@ public class BooleanPanel extends ScalarPanelAbstract2 {
     }
 
     @Override
-    protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
+    protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
         checkBox.setEnabled(false);
         final AttributeModifier title = new AttributeModifier("title",
                 Model.of(disableReason != null ? disableReason : ""));
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
index d0dda79..63f4de7 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
@@ -194,22 +194,22 @@ public class ReferencePanel extends ScalarPanelSelect2Abstract {
     // //////////////////////////////////////
 
     @Override
-    protected void onInitializeWhenEnabled() {
-        super.onInitializeWhenEnabled();
+    protected void onInitializeEditable() {
+        super.onInitializeEditable();
         entityLink.setEnabled(true);
         syncWithInput();
     }
 
     @Override
-    protected void onInitializeWhenViewMode() {
-        super.onInitializeWhenViewMode();
+    protected void onInitializeNotEditable() {
+        super.onInitializeNotEditable();
         entityLink.setEnabled(false);
         syncWithInput();
     }
 
     @Override
-    protected void onInitializeWhenDisabled(final String disableReason) {
-        super.onInitializeWhenDisabled(disableReason);
+    protected void onInitializeReadonly(final String disableReason) {
+        super.onInitializeReadonly(disableReason);
         syncWithInput();
         val entityLinkModel = (EntityModel) entityLink.getModel();
         entityLinkModel.toViewMode();
@@ -218,8 +218,8 @@ public class ReferencePanel extends ScalarPanelSelect2Abstract {
     }
 
     @Override
-    protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
-        super.onDisabled(disableReason, target);
+    protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
+        super.onNotEditable(disableReason, target);
 
         entityLink.setEnabled(false);
         entityLink.add(new AttributeModifier("title", Model.of(disableReason)));
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
index ebcc158..0bf0e3e 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
@@ -102,13 +102,13 @@ public class ValueChoicesSelect2Panel extends ScalarPanelSelect2Abstract {
 
 
     @Override
-    protected void onInitializeWhenViewMode() {
+    protected void onInitializeNotEditable() {
         // View: Read only
         select2.setEnabled(false);
     }
 
     @Override
-    protected void onInitializeWhenEnabled() {
+    protected void onInitializeEditable() {
         // Edit: read/write
         select2.setEnabled(true);
 
@@ -116,8 +116,8 @@ public class ValueChoicesSelect2Panel extends ScalarPanelSelect2Abstract {
     }
 
     @Override
-    protected void onInitializeWhenDisabled(final String disableReason) {
-        super.onInitializeWhenDisabled(disableReason);
+    protected void onInitializeReadonly(final String disableReason) {
+        super.onInitializeReadonly(disableReason);
         setTitleAttribute(disableReason);
         select2.setEnabled(false);
     }
@@ -137,8 +137,8 @@ public class ValueChoicesSelect2Panel extends ScalarPanelSelect2Abstract {
     }
 
     @Override
-    protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
-        super.onDisabled(disableReason, target);
+    protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
+        super.onNotEditable(disableReason, target);
 
         setTitleAttribute(disableReason);
         select2.setEnabled(false);


[isis] 01/03: ISIS-2319: minor refactoring

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 2ce126727a9fede4657349ff2a86160cc5b034c1
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon May 4 11:33:54 2020 +0200

    ISIS-2319: minor refactoring
---
 ...eprocessor.java => CanonicalParameterUtil.java} |  4 +-
 .../core/metamodel/commons/MethodExtensions.java   | 10 +--
 ...ctionInvocationFacetForDomainEventAbstract.java |  6 +-
 .../isis/core/metamodel/spec/ManagedObject.java    | 58 +--------------
 .../isis/core/metamodel/spec/ManagedObjects.java   | 87 ++++++++++++++++++++++
 .../CollectionContentsSortableDataProvider.java    |  3 +-
 6 files changed, 103 insertions(+), 65 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/MethodInvocationPreprocessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/CanonicalParameterUtil.java
similarity index 97%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/MethodInvocationPreprocessor.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/CanonicalParameterUtil.java
index 77ef20f..60679f3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/MethodInvocationPreprocessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/CanonicalParameterUtil.java
@@ -48,9 +48,9 @@ import lombok.val;
  * By now we do this for collection parameter types List, Set, SortedSet, Collection and Arrays.
  * </p>
  */
-public class MethodInvocationPreprocessor {
+public class CanonicalParameterUtil {
 
-    public static <T> T invoke(Constructor<T> constructor, Object[] executionParameters)
+    public static <T> T construct(Constructor<T> constructor, Object[] executionParameters)
             throws IllegalAccessException, InvocationTargetException, InstantiationException {
 
         val adaptedExecutionParameters = preprocess(constructor, executionParameters);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/MethodExtensions.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/MethodExtensions.java
index c057cc3..3dbc4d3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/MethodExtensions.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/MethodExtensions.java
@@ -35,15 +35,15 @@ public class MethodExtensions {
 
     // //////////////////////////////////////
     
-    public static <T> T invoke(final Constructor<T> con) {
+    public static <T> T construct(final Constructor<T> con) {
         final Object[] parameters = MethodExtensions.getNullOrDefaultArgs(con);
-        return MethodExtensions.invoke(con, parameters);
+        return MethodExtensions.construct(con, parameters);
     }
 
-    public static <T> T invoke(final Constructor<T> con, final Object[] arguments) {
+    public static <T> T construct(final Constructor<T> con, final Object[] arguments) {
         try {
             Object[] defaultAnyPrimitive = defaultAnyPrimitive(con.getParameterTypes(), arguments);
-            return MethodInvocationPreprocessor.invoke(con, defaultAnyPrimitive);
+            return CanonicalParameterUtil.construct(con, defaultAnyPrimitive);
         } catch (Exception e) {
              ThrowableExtensions.handleInvocationException(e, con.getName());
              return null;
@@ -58,7 +58,7 @@ public class MethodExtensions {
     public static Object invoke(final Method method, final Object object, final Object[] arguments) {
         try {
             Object[] defaultAnyPrimitive = defaultAnyPrimitive(method.getParameterTypes(), arguments);
-            return MethodInvocationPreprocessor.invoke(method, object, defaultAnyPrimitive);
+            return CanonicalParameterUtil.invoke(method, object, defaultAnyPrimitive);
         } catch (Exception e) {
             return ThrowableExtensions.handleInvocationException(e, method.getName());
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
index e7d9c50..3b44d6d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/invocation/ActionInvocationFacetForDomainEventAbstract.java
@@ -52,7 +52,7 @@ import org.apache.isis.core.commons.internal.base._Casts;
 import org.apache.isis.core.commons.internal.base._Strings;
 import org.apache.isis.core.commons.internal.collections._Arrays;
 import org.apache.isis.core.commons.internal.collections._Lists;
-import org.apache.isis.core.metamodel.commons.MethodInvocationPreprocessor;
+import org.apache.isis.core.metamodel.commons.CanonicalParameterUtil;
 import org.apache.isis.core.metamodel.commons.ThrowableExtensions;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -268,11 +268,11 @@ implements ImperativeFacet {
             final QueryResultsCache queryResultsCache = getQueryResultsCache();
             final Object[] targetPojoPlusExecutionParameters = _Arrays.combine(executionParameters, targetPojo);
             return queryResultsCache.execute(
-                    ()->MethodInvocationPreprocessor.invoke(method, targetPojo, executionParameters),
+                    ()->CanonicalParameterUtil.invoke(method, targetPojo, executionParameters),
                     targetPojo.getClass(), method.getName(), targetPojoPlusExecutionParameters);
 
         } else {
-            return MethodInvocationPreprocessor.invoke(method, targetPojo, executionParameters);
+            return CanonicalParameterUtil.invoke(method, targetPojo, executionParameters);
         }
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
index 6d5ef00..31603f6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
@@ -23,10 +23,8 @@ import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
 import java.util.function.Function;
@@ -41,7 +39,6 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.repository.EntityState;
 import org.apache.isis.core.commons.collections.Can;
 import org.apache.isis.core.commons.internal.base._Lazy;
-import org.apache.isis.core.commons.internal.base._NullSafe;
 import org.apache.isis.core.commons.internal.base._Tuples.Indexed;
 import org.apache.isis.core.commons.internal.collections._Arrays;
 import org.apache.isis.core.commons.internal.collections._Lists;
@@ -59,7 +56,6 @@ import org.apache.isis.core.metamodel.interactions.ObjectVisibilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.objectmanager.create.ObjectCreator;
 import org.apache.isis.core.metamodel.objectmanager.load.ObjectLoader;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoaderDefault;
 
@@ -250,6 +246,7 @@ public interface ManagedObject {
         return TitleUtil.titleString(this, contextAdapterIfAny);
     }
     
+    @Deprecated // move to ManagedObjects
     @NoArgsConstructor(access = AccessLevel.PRIVATE)
     static final class TitleUtil {
 
@@ -527,58 +524,10 @@ public interface ManagedObject {
         return adapter!=null && adapter!=ManagedObject.unspecified();
     }
 
-    // -- COMPARE UTILITIES
-    
-    @NoArgsConstructor(access = AccessLevel.PRIVATE)
-    static final class CompareUtil {
-
-        public static int compare(@Nullable ManagedObject p, @Nullable ManagedObject q) {
-            return NATURAL_NULL_FIRST.compare(p, q);
-        }
-        
-        public static Comparator<ManagedObject> orderingBy(ObjectAssociation sortProperty, boolean ascending) {
-            
-            final Comparator<ManagedObject> comparator = ascending 
-                    ? NATURAL_NULL_FIRST 
-                            : NATURAL_NULL_FIRST.reversed();
-            
-            return (p, q) -> {
-                    val pSort = sortProperty.get(p, InteractionInitiatedBy.FRAMEWORK);
-                    val qSort = sortProperty.get(q, InteractionInitiatedBy.FRAMEWORK);
-                    return comparator.compare(pSort, qSort);
-            };
-            
-        }
-        
-        // -- PREDEFINED COMPARATOR
-        
-        private static final Comparator<ManagedObject> NATURAL_NULL_FIRST = new Comparator<ManagedObject>(){
-            @SuppressWarnings({ "unchecked", "rawtypes" })
-            @Override
-            public int compare(@Nullable ManagedObject p, @Nullable ManagedObject q) {
-                val pPojo = ManagedObject.unwrapSingle(p);
-                val qPojo = ManagedObject.unwrapSingle(q);
-                if(pPojo instanceof Comparable && qPojo instanceof Comparable) {
-                    return _NullSafe.compareNullsFirst((Comparable)pPojo, (Comparable)qPojo);
-                }
-                if(Objects.equals(pPojo, qPojo)) {
-                    return 0;
-                }
-                
-                final int hashCompare = Integer.compare(Objects.hashCode(pPojo), Objects.hashCode(qPojo));
-                if(hashCompare!=0) {
-                    return hashCompare;
-                }
-                //TODO what to return on hash-collision?
-                return -1;
-            }
-            
-        };
-        
-    }
     
     // -- VISIBILITY UTILITIES
 
+    @Deprecated // move to ManagedObjects
     @NoArgsConstructor(access = AccessLevel.PRIVATE)
     static final class VisibilityUtil {
 
@@ -674,6 +623,7 @@ public interface ManagedObject {
 
     // -- INVOCATION UTILITY
 
+    @Deprecated // move to ManagedObjects
     @NoArgsConstructor(access = AccessLevel.PRIVATE)
     static final class InvokeUtil {
     
@@ -684,7 +634,7 @@ public interface ManagedObject {
                 final Can<ManagedObject> pendingArguments,
                 final List<Object> additionalArguments) {
             
-            val ppmTuple = MethodExtensions.invoke(ppmConstructor, unwrapMultipleAsArray(pendingArguments));
+            val ppmTuple = MethodExtensions.construct(ppmConstructor, unwrapMultipleAsArray(pendingArguments));
             val paramPojos = _Arrays.combineWithExplicitType(Object.class, ppmTuple, additionalArguments.toArray());
             return MethodExtensions.invoke(method, unwrapSingle(adapter), paramPojos);
         }
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
new file mode 100644
index 0000000..b0bd1e5
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObjects.java
@@ -0,0 +1,87 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.core.metamodel.spec;
+
+import java.util.Comparator;
+import java.util.Objects;
+
+import javax.annotation.Nullable;
+
+import org.apache.isis.core.commons.internal.base._NullSafe;
+import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
+
+import lombok.val;
+import lombok.experimental.UtilityClass;
+
+/**
+ * A collection of utilities for {@link ManagedObject}. 
+ * @since 2.0
+ *
+ */
+@UtilityClass
+public final class ManagedObjects {
+
+    // -- COMPARE UTILITIES
+
+    public static int compare(@Nullable ManagedObject p, @Nullable ManagedObject q) {
+        return NATURAL_NULL_FIRST.compare(p, q);
+    }
+
+    public static Comparator<ManagedObject> orderingBy(ObjectAssociation sortProperty, boolean ascending) {
+
+        final Comparator<ManagedObject> comparator = ascending 
+                ? NATURAL_NULL_FIRST 
+                        : NATURAL_NULL_FIRST.reversed();
+
+        return (p, q) -> {
+            val pSort = sortProperty.get(p, InteractionInitiatedBy.FRAMEWORK);
+            val qSort = sortProperty.get(q, InteractionInitiatedBy.FRAMEWORK);
+            return comparator.compare(pSort, qSort);
+        };
+
+    }
+
+    // -- PREDEFINED COMPARATOR
+
+    private static final Comparator<ManagedObject> NATURAL_NULL_FIRST = new Comparator<ManagedObject>(){
+        @SuppressWarnings({ "unchecked", "rawtypes" })
+        @Override
+        public int compare(@Nullable ManagedObject p, @Nullable ManagedObject q) {
+            val pPojo = ManagedObject.unwrapSingle(p);
+            val qPojo = ManagedObject.unwrapSingle(q);
+            if(pPojo instanceof Comparable && qPojo instanceof Comparable) {
+                return _NullSafe.compareNullsFirst((Comparable)pPojo, (Comparable)qPojo);
+            }
+            if(Objects.equals(pPojo, qPojo)) {
+                return 0;
+            }
+
+            final int hashCompare = Integer.compare(Objects.hashCode(pPojo), Objects.hashCode(qPojo));
+            if(hashCompare!=0) {
+                return hashCompare;
+            }
+            //XXX what to return on hash-collision?
+            return -1;
+        }
+
+    };
+
+
+}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsSortableDataProvider.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsSortableDataProvider.java
index 7e39671..df85dd3 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsSortableDataProvider.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsSortableDataProvider.java
@@ -37,6 +37,7 @@ import org.apache.isis.core.metamodel.interactions.InteractionUtils;
 import org.apache.isis.core.metamodel.interactions.ObjectVisibilityContext;
 import org.apache.isis.core.metamodel.interactions.VisibilityContext;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
 import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
@@ -111,7 +112,7 @@ public class CollectionContentsSortableDataProvider extends SortableDataProvider
         
         final ObjectAssociation sortProperty = lookupAssociationFor(sort);
         if(sortProperty != null) {
-            Collections.sort(copy, ManagedObject.CompareUtil.orderingBy(sortProperty, sort.isAscending()));
+            Collections.sort(copy, ManagedObjects.orderingBy(sortProperty, sort.isAscending()));
         }
         
         return copy;