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 2022/07/08 09:23:57 UTC

[isis] branch master updated: ISIS-3049: Demo: some fixes for ActionAssociateWith..

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 676bd43d55 ISIS-3049: Demo: some fixes for ActionAssociateWith..
676bd43d55 is described below

commit 676bd43d55dcd4843edd5d48156cb70aa762e91a
Author: andi-huber <ah...@apache.org>
AuthorDate: Fri Jul 8 11:23:49 2022 +0200

    ISIS-3049: Demo: some fixes for ActionAssociateWith..
---
 .../ActionAssociateWithVm-description.adoc         | 33 +++++++++++++++++++---
 .../associateWith/ActionAssociateWithVm.java       | 18 ++++++------
 .../ActionAssociateWithVm_makeFavorite.java        | 19 ++++++-------
 .../ActionAssociateWithVm_noLongerFavorite.java    |  9 +++---
 .../ActionAssociateWithVm_noLongerFavorites.java   |  8 +++---
 .../ActionAssociateWithVm_updateOtherProperty.java |  6 ++--
 ...=> ActionAssociateWithChildVm-description.adoc} |  0
 ...t.xml => ActionAssociateWithChildVm.layout.xml} |  0
 8 files changed, 57 insertions(+), 36 deletions(-)

diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm-description.adoc
index a86fcdc457..1697c967f7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm-description.adoc
@@ -11,6 +11,31 @@ This can of course be overridden using `@ActionLayout` or the layout file
 However, it is also used at a deeper level, because the action may have a collection parameter which is the same type as the collection elements.
 In the Wicket viewer, the collection is rendered with checkboxes; those selected objects are used as defaults for the action collection parameter.
 
+////
+!!!requires kroki integration, which we don't have yet for the demo
+[plantuml,ActionChoicesFrom,svg]
+----
+@startuml(id=ActionChoicesFrom)
+caption Demo Classes
+
+class "ActionAssociateWithVm" as PARENT
+class "ActionAssociateWithChildVm" as CHILD
+
+PARENT : addChild(..) // factory, associate with 'children'
+PARENT : removeChild(..) // single choice from 'children', associate with 'children'
+PARENT : removeChildren(..) // multiple choices from 'children', associate with 'children'
+PARENT : makeFavorite(..) // single choice from 'children', associate with 'favorites'
+PARENT : noLongerFavorite(..) // single choice from 'favorites', associate with 'favorites'
+PARENT : noLongerFavorites(..) // multiple choices from 'favorites', associate with 'favorites'
+PARENT : String text
+
+CHILD : String value
+
+PARENT --> CHILD : "children\n(0..n)"
+PARENT --> CHILD : "favorites\n(0..n)"
+@enduml
+----
+////
 
 == Associated with Properties
 
@@ -98,11 +123,11 @@ include::ActionAssociateWithVm.java[tags=class-collections-favorites]
 There are three mixin actions associated with this collection:
 
 * the `makeFavorite` action.
-This takes a element from the "children" collectio and also adds to the "favorites" collection:
+This takes a element from the "children" collection and also adds to the "favorites" collection:
 +
 [source,java]
 ----
-include::child/ActionAssociateWithVm_makeFavorite.java[tags=class]
+include::ActionAssociateWithVm_makeFavorite.java[tags=class]
 ----
 <.> associates with the "favorites" collection
 <.> positioned first in the UI
@@ -113,7 +138,7 @@ This just removes a selected element from the "children" collection:
 +
 [source,java]
 ----
-include::child/ActionAssociateWithVm_noLongerFavorite.java[tags=class]
+include::ActionAssociateWithVm_noLongerFavorite.java[tags=class]
 ----
 <.> associates with the "children" collection
 <.> positioned second in the UI
@@ -125,7 +150,7 @@ This is similar to the previous action, but for multiple favorite elements:
 +
 [source,java]
 ----
-include::child/ActionAssociateWithVm_noLongerFavorites.java[tags=class]
+include::ActionAssociateWithVm_noLongerFavorites.java[tags=class]
 ----
 <.> associates with the "favorites" collection
 <.> positioned third in the UI
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm.java
index 83945a954b..fd85f58c66 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm.java
@@ -41,14 +41,13 @@ import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.SemanticsOf;
 
+import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.domain.actions.Action.associateWith.child.ActionAssociateWithChildVm;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 import lombok.val;
 
-import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
-import demoapp.dom.domain.actions.Action.associateWith.child.ActionAssociateWithChildVm;
-
 @XmlRootElement(name = "root")
 @XmlType
 @XmlAccessorType(XmlAccessType.FIELD)
@@ -70,7 +69,7 @@ public class ActionAssociateWithVm implements HasAsciiDocDescription {
     }
 
     @ObjectSupport public String title() {
-        return "Action#associateWith";
+        return "Action#choicesFrom/ActionLayout#associateWith";
     }
 
 //tag::class-properties[]
@@ -113,9 +112,8 @@ public class ActionAssociateWithVm implements HasAsciiDocDescription {
     )
     @ActionLayout(
         describedAs =
-            "@Action(associateWith = \"text\") " +
-            "@ActionLayout(sequence = \"1\")"
-        , associateWith = "text"                // <.>
+            "@ActionLayout(associateWith = \"text\", sequence = \"1\")"
+        , associateWith = "text"   // <.>
         , sequence = "1"           // <.>
     )
     public ActionAssociateWithVm updateText(final String text) {
@@ -134,7 +132,7 @@ public class ActionAssociateWithVm implements HasAsciiDocDescription {
     )
     @ActionLayout(
         describedAs =
-            "@Action(associateWith = \"children\") " +
+            "@Action(choicesFrom = \"children\") " +
             "@ActionLayout(sequence = \"1\")"
         , sequence = "1"                    // <.>
     )
@@ -153,7 +151,7 @@ public class ActionAssociateWithVm implements HasAsciiDocDescription {
     )
     @ActionLayout(
         describedAs =
-            "@Action(associateWith = \"children\") " +
+            "@Action(choicesFrom = \"children\") " +
             "@ActionLayout(sequence = \"2\")"
         , sequence = "2"                   // <.>
     )
@@ -171,7 +169,7 @@ public class ActionAssociateWithVm implements HasAsciiDocDescription {
     )
     @ActionLayout(
         describedAs =
-            "@Action(associateWith = \"children\") " +
+            "@Action(choicesFrom = \"children\")" +
             "@ActionLayout(sequence = \"3\")"
         , sequence = "3"                        // <.>
     )
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithVm_makeFavorite.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm_makeFavorite.java
similarity index 73%
rename from examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithVm_makeFavorite.java
rename to examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm_makeFavorite.java
index d08c67249d..b87cada793 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithVm_makeFavorite.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm_makeFavorite.java
@@ -16,27 +16,26 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.domain.actions.Action.associateWith.child;
+package demoapp.dom.domain.actions.Action.associateWith;
 
 import java.util.List;
 import java.util.Objects;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 
+import demoapp.dom.domain.actions.Action.associateWith.child.ActionAssociateWithChildVm;
 import lombok.RequiredArgsConstructor;
 
-import demoapp.dom.domain.actions.Action.associateWith.ActionAssociateWithVm;
-
 
 //tag::class[]
-@Action(
-    choicesFrom = "favorites"                                   // <.>
-)
+@Action
 @ActionLayout(
     describedAs =
-            "@Action(choicesFrom = \"favorites\") " +
-            "@ActionLayout(sequence = \"1\")"
+            "@Action " +
+            "@ActionLayout(associateWith = \"favorites\", sequence = \"1\")"
+    , associateWith = "favorites"                               // <.>
     , sequence = "1"                                            // <.>
 )
 @RequiredArgsConstructor
@@ -44,12 +43,12 @@ public class ActionAssociateWithVm_makeFavorite {
 
     private final ActionAssociateWithVm actionAssociateWithVm;
 
-    public ActionAssociateWithVm act(ActionAssociateWithChildVm childVm) {
+    @MemberSupport public ActionAssociateWithVm act(final ActionAssociateWithChildVm childVm) {
         actionAssociateWithVm.getFavorites().add(childVm);
         actionAssociateWithVm.getChildren().removeIf(x -> Objects.equals(x.getValue(), childVm.getValue()));
         return actionAssociateWithVm;
     }
-    public List<ActionAssociateWithChildVm> choices0Act() {     // <.>
+    @MemberSupport public List<ActionAssociateWithChildVm> choices0Act() {     // <.>
         return actionAssociateWithVm.getChildren();
     }
 }
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithVm_noLongerFavorite.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm_noLongerFavorite.java
similarity index 85%
rename from examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithVm_noLongerFavorite.java
rename to examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm_noLongerFavorite.java
index 04831834be..fce3069e83 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithVm_noLongerFavorite.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm_noLongerFavorite.java
@@ -16,18 +16,17 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.domain.actions.Action.associateWith.child;
+package demoapp.dom.domain.actions.Action.associateWith;
 
 import java.util.Objects;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 
+import demoapp.dom.domain.actions.Action.associateWith.child.ActionAssociateWithChildVm;
 import lombok.RequiredArgsConstructor;
 
-import demoapp.dom.domain.actions.Action.associateWith.ActionAssociateWithVm;
-
-
 //tag::class[]
 @Action(
     choicesFrom = "favorites"                                   // <.>
@@ -43,7 +42,7 @@ public class ActionAssociateWithVm_noLongerFavorite {
 
     private final ActionAssociateWithVm actionAssociateWithVm;
 
-    public ActionAssociateWithVm act(ActionAssociateWithChildVm childVm) {
+    @MemberSupport public ActionAssociateWithVm act(final ActionAssociateWithChildVm childVm) {
         actionAssociateWithVm.getFavorites()
                 .removeIf(y -> Objects.equals(childVm.getValue(), y.getValue()));
         actionAssociateWithVm.getChildren().add(childVm);
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithVm_noLongerFavorites.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm_noLongerFavorites.java
similarity index 85%
rename from examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithVm_noLongerFavorites.java
rename to examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm_noLongerFavorites.java
index 753e0e967e..f7ee42774d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithVm_noLongerFavorites.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm_noLongerFavorites.java
@@ -16,18 +16,18 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.domain.actions.Action.associateWith.child;
+package demoapp.dom.domain.actions.Action.associateWith;
 
 import java.util.List;
 import java.util.Objects;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.MemberSupport;
 
+import demoapp.dom.domain.actions.Action.associateWith.child.ActionAssociateWithChildVm;
 import lombok.RequiredArgsConstructor;
 
-import demoapp.dom.domain.actions.Action.associateWith.ActionAssociateWithVm;
-
 
 //tag::class[]
 @Action(
@@ -44,7 +44,7 @@ public class ActionAssociateWithVm_noLongerFavorites {
 
     private final ActionAssociateWithVm actionAssociateWithVm;
 
-    public ActionAssociateWithVm act(List<ActionAssociateWithChildVm> children) {
+    @MemberSupport public ActionAssociateWithVm act(final List<ActionAssociateWithChildVm> children) {
         children.forEach(childVm -> {
             actionAssociateWithVm.getFavorites()
                     .removeIf(y -> Objects.equals(childVm.getValue(), y.getValue()));
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm_updateOtherProperty.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm_updateOtherProperty.java
index 3f1f65270a..0f9489e5c6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm_updateOtherProperty.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/ActionAssociateWithVm_updateOtherProperty.java
@@ -25,11 +25,11 @@ import org.apache.isis.applib.annotation.MemberSupport;
 import lombok.RequiredArgsConstructor;
 
 //tag::class[]
-@Action
+@Action(choicesFrom = "favorites")
 @ActionLayout(
     describedAs =
-            "@Action(associateWith = \"favorites\") " +
-            "@ActionLayout(sequence = \"1\")"
+            "@Action(choicesFrom = \"favorites\") " +
+            "@ActionLayout(associateWith = \"otherProperty\", sequence = \"2\")"
     , associateWith = "otherProperty"                           // <.>
     , sequence = "2"                                            // <.>
 )
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithChildVm-description.adoc
similarity index 100%
rename from examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithVm-description.adoc
rename to examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithChildVm-description.adoc
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithVm.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithChildVm.layout.xml
similarity index 100%
rename from examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithVm.layout.xml
rename to examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/associateWith/child/ActionAssociateWithChildVm.layout.xml