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/04/06 10:32:10 UTC

[isis] branch master updated: ISIS-2340: refactor: prepare ActionLinkFactory to be shared among viewers

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 033b88f  ISIS-2340: refactor: prepare ActionLinkFactory to be shared among viewers
033b88f is described below

commit 033b88f51dba03ecafc9a40aa09de8493d69de1d
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Apr 6 12:31:59 2020 +0200

    ISIS-2340: refactor: prepare ActionLinkFactory to be shared among
    viewers
---
 .../isis/viewer/common/model/link/ActionLinkFactory.java    | 10 +++++++++-
 .../isis/viewer/common/model/link/LinkAndLabelUiModel.java  |  6 ++++++
 .../actionmenu/entityactions/EntityActionLinkFactory.java   | 10 ++++------
 .../actionmenu/entityactions/LinkAndLabelUtil.java          |  9 ++++++---
 .../components/actionmenu/serviceactions/CssMenuItem.java   |  2 +-
 .../actionmenu/serviceactions/ServiceActionLinkFactory.java |  6 ++----
 .../widgets/linkandlabel/ActionLinkFactoryForWicket.java    | 13 ++++++-------
 7 files changed, 34 insertions(+), 22 deletions(-)

diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/link/ActionLinkFactory.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/link/ActionLinkFactory.java
index 8cf1382..0b835b6 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/link/ActionLinkFactory.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/link/ActionLinkFactory.java
@@ -1,6 +1,14 @@
 package org.apache.isis.viewer.common.model.link;
 
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+
+/**
+ * 
+ * @since Apr 6, 2020
+ *
+ * @param <T> - link component type, native to the viewer 
+ */
 public interface ActionLinkFactory<T> {
 
-    //LinkAndLabelUiModel<T> newLink(final ObjectAction objectAction);
+    LinkAndLabelUiModel<T> newLink(ObjectAction objectAction);
 }
\ No newline at end of file
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/link/LinkAndLabelUiModel.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/link/LinkAndLabelUiModel.java
index f75975b..1960bb3 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/link/LinkAndLabelUiModel.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/link/LinkAndLabelUiModel.java
@@ -23,6 +23,12 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 
 import lombok.Getter;
 
+/**
+ * 
+ * @since Apr 6, 2020
+ *
+ * @param <T> - link component type, native to the viewer
+ */
 public class LinkAndLabelUiModel<T> extends LinkAndLabelUiModelAbstract {
 
     private static final long serialVersionUID = 1L;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java
index 92e2a7c..1c74fc9 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java
@@ -38,14 +38,14 @@ public final class EntityActionLinkFactory extends ActionLinkFactoryForWicket {
     public EntityActionLinkFactory(
             final String linkId,
             final EntityModel entityModel,
-            final ScalarModel scalarModelForAssociationIfAny) {
-        super(linkId, entityModel, scalarModelForAssociationIfAny);
+            final ScalarModel scalarModelForAssociationIfAny,
+            final ToggledMementosProvider toggledMementosProviderIfAny) {
+        super(linkId, entityModel, scalarModelForAssociationIfAny, toggledMementosProviderIfAny);
     }
 
     @Override
     public LinkAndLabel newLink(
-            final ObjectAction objectAction,
-            final ToggledMementosProvider toggledMementosProviderIfAny) {
+            final ObjectAction objectAction) {
 
         val objectAdapter = this.targetEntityModel.load();
 
@@ -64,6 +64,4 @@ public final class EntityActionLinkFactory extends ActionLinkFactoryForWicket {
     }
 
 
-
-
 }
\ No newline at end of file
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/LinkAndLabelUtil.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/LinkAndLabelUtil.java
index 2c0ed85..4ad8d4a 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/LinkAndLabelUtil.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/LinkAndLabelUtil.java
@@ -74,12 +74,15 @@ public final class LinkAndLabelUtil {
             final ScalarModel scalarModelIfAny,
             final ToggledMementosProvider toggledMementosProviderIfAny) {
 
-        val linkFactory = new EntityActionLinkFactory(AdditionalLinksPanel.ID_ADDITIONAL_LINK, parentEntityModel, scalarModelIfAny);
+        val linkFactory = new EntityActionLinkFactory(
+                AdditionalLinksPanel.ID_ADDITIONAL_LINK, 
+                parentEntityModel, 
+                scalarModelIfAny,
+                toggledMementosProviderIfAny);
 
         return _NullSafe.stream(objectActions)
                 .map((ObjectAction objectAction) ->
-                    linkFactory.newLink(
-                        objectAction, toggledMementosProviderIfAny))
+                    linkFactory.newLink(objectAction))
                 .filter(_NullSafe::isPresent)
                 .collect(Collectors.toList());
     }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
index 8fbe1d8..07611ef 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
@@ -87,7 +87,7 @@ implements Serializable {
         }
 
         // build the link
-        val linkAndLabel = actionLinkFactory.newLink(objectAction, null);
+        val linkAndLabel = actionLinkFactory.newLink(objectAction);
         if (linkAndLabel == null) {
             // can only get a null if invisible, so this should not happen given the visibility guard above
             return;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionLinkFactory.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionLinkFactory.java
index f7d4348..a8b3ada 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionLinkFactory.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionLinkFactory.java
@@ -24,7 +24,6 @@ import org.apache.wicket.markup.html.link.AbstractLink;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
-import org.apache.isis.viewer.wicket.model.models.ToggledMementosProvider;
 import org.apache.isis.viewer.wicket.ui.components.widgets.linkandlabel.ActionLinkFactoryForWicket;
 
 import lombok.val;
@@ -36,13 +35,12 @@ class ServiceActionLinkFactory extends ActionLinkFactoryForWicket {
     ServiceActionLinkFactory(
             final String linkId,
             final EntityModel serviceEntityModel) {
-        super(linkId, serviceEntityModel, null);
+        super(linkId, serviceEntityModel, null, null);
     }
 
     @Override
     public LinkAndLabel newLink(
-            final ObjectAction objectAction,
-            final ToggledMementosProvider toggledMementosProviderIfAny) {
+            final ObjectAction objectAction) {
 
         val objectAdapter = this.targetEntityModel.load();
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryForWicket.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryForWicket.java
index a65ca40..10a02d6 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryForWicket.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryForWicket.java
@@ -68,28 +68,27 @@ import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
 import lombok.val;
 
 public abstract class ActionLinkFactoryForWicket 
-implements ActionLinkFactory<LinkAndLabel>, Serializable {
+implements ActionLinkFactory<AbstractLink>, Serializable {
 
     private static final long serialVersionUID = 1L;
 
     protected final String linkId;
     protected final EntityModel targetEntityModel;
-    private final ScalarModel scalarModelForAssociationIfAny;
+    protected final ScalarModel scalarModelForAssociationIfAny;
+    protected final ToggledMementosProvider toggledMementosProviderIfAny;
 
     protected ActionLinkFactoryForWicket(
             final String linkId,
             final EntityModel targetEntityModel,
-            final ScalarModel scalarModelForAssociationIfAny) {
+            final ScalarModel scalarModelForAssociationIfAny,
+            final ToggledMementosProvider toggledMementosProviderIfAny) {
         
         this.linkId = linkId;
         this.targetEntityModel = targetEntityModel;
         this.scalarModelForAssociationIfAny = scalarModelForAssociationIfAny;
+        this.toggledMementosProviderIfAny = toggledMementosProviderIfAny;
     }
     
-    public abstract LinkAndLabel newLink(
-            ObjectAction objectAction,
-            ToggledMementosProvider toggledMementosProviderIfAny);
-
     protected ActionLink newLinkComponent(
             final ObjectAction action,
             final ToggledMementosProvider toggledMementosProviderIfAny) {