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