You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2024/05/29 06:23:00 UTC

(causeway) branch 3.0.0 updated (970e42446f -> cd4d148e98)

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

danhaywood pushed a change to branch 3.0.0
in repository https://gitbox.apache.org/repos/asf/causeway.git


    from 970e42446f CAUSEWAY-2873 : fixes toc for petclinic
     new 066add3f4e CAUSEWAY-2873: fixes to petclinic docs
     new b2bd21dc58 CAUSEWAY-2873: rewording
     new 315e51b199 CAUSEWAY-2873: rewording
     new 8b3b25d27f CAUSEWAY-2873: rewording
     new e1a48fef9b CAUSEWAY-2873: consistency
     new 89a8e3563d CAUSEWAY-2873: consistency
     new 53dd2e5605 CAUSEWAY-2873: improves toc
     new 6f2cccb411 CAUSEWAY-2873: wording fixes
     new e824e40208 CAUSEWAY-2873: wording fixes
     new ec873c1ab3 CAUSEWAY-2873: wording fixes
     new cd4d148e98 CAUSEWAY-2873: wording fixes

The 11 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:
 .../tutorials/modules/petclinic/nav.adoc           | 54 ++++++++-------
 .../petclinic/pages/010-getting-started.adoc       |  2 +-
 .../petclinic/pages/020-the-petclinic-domain.adoc  | 38 ++++++----
 .../petclinic/pages/030-petowner-entity.adoc       | 81 +++++++++++-----------
 .../modules/petclinic/pages/040-pet-entity.adoc    | 20 +++---
 .../modules/petclinic/pages/050-visit-entity.adoc  | 34 +++++----
 .../modules/petclinic/pages/060-unit-testing.adoc  |  7 +-
 .../modules/petclinic/pages/070-modularity.adoc    |  4 +-
 .../modules/petclinic/pages/080-view-models.adoc   |  4 +-
 .../petclinic/pages/090-integration-testing.adoc   |  2 +-
 .../modules/petclinic/partials/domain.adoc         |  4 +-
 11 files changed, 139 insertions(+), 111 deletions(-)


(causeway) 04/11: CAUSEWAY-2873: rewording

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch 3.0.0
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 8b3b25d27f9388cdfc8c3d06ad2526a365f794c1
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed May 29 06:16:10 2024 +0100

    CAUSEWAY-2873: rewording
---
 .../tutorials/modules/petclinic/pages/020-the-petclinic-domain.adoc     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/antora/components/tutorials/modules/petclinic/pages/020-the-petclinic-domain.adoc b/antora/components/tutorials/modules/petclinic/pages/020-the-petclinic-domain.adoc
index 9967cdeaa6..7aa9e49d9f 100644
--- a/antora/components/tutorials/modules/petclinic/pages/020-the-petclinic-domain.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/020-the-petclinic-domain.adoc
@@ -347,7 +347,7 @@ Run the application; the menubar should be updated correctly.
 
 xref:testing:fixtures:about.adoc#fixture-scripts[Fixture scripts] are used for both prototyping and for integration testing, allowing us to quickly create demo data in the H2 in-memory database.
 
-The xref:testing:fixtures:about.adoc#personas-and-builders[persona] pattern lets us define example data in an enum (the "what"), while a companion builder uses that data to set up the corresponding domain entities (the "how").
+The xref:testing:fixtures:about.adoc#personas-and-builders[persona] pattern lets us define example data in an enum (the "what"), while a companion builder uses domain logic to set up the corresponding domain entities (the "how").
 
 In this exercise we'll modify the `PetOwners_persona` (copied from `SimpleObjects_persona` earlier) to create more realistic data.
 


(causeway) 09/11: CAUSEWAY-2873: wording fixes

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch 3.0.0
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit e824e4020811cea5addc0ed524119d4eb36765c6
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed May 29 06:36:06 2024 +0100

    CAUSEWAY-2873: wording fixes
---
 .../tutorials/modules/petclinic/pages/030-petowner-entity.adoc | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc b/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
index d1e207768c..88d079debf 100644
--- a/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
@@ -1018,7 +1018,7 @@ public class EmailAddressValueSemantics
 ----
 <.> Defined as a Spring `@Component` so that the framework can discover and use this value semantics provider
 <.> Typically inherit from `ValueSemanticsAbstract`, a convenience superclass
-<.> The `schemaValueType` in essence defines the widget that will be used to interact with render the value
+<.> The `schemaValueType` in essence defines the widget that will be used to interact with the value
 <.> The `ValueDecomposition` is primarily used by the xref:vro::about.adoc[] to convert to/from JSON.
 <.> The `DefaultsProvider` provides an initial value, if any.
 For some values there is often a reasonable default, eg `0` for a number, or `[0,0]` for a coordinate, or today's date.
@@ -1067,7 +1067,7 @@ public PetOwner create(
 ----
 <.> Change the parameter' type from `String` to `EmailAddress`
 
-Run the application and try to enter an invalid
+Run the application and try to enter an invalid email address; the logic in the value type should prevent this.
 
 
 [#exercise-3-14-use-layout-xml-file-for-ui-semantics]
@@ -1075,9 +1075,8 @@ Run the application and try to enter an invalid
 
 At the moment the associated `.layout.xml` file for `PetOwner` is used to define rows, columns and fieldsets, while the xref:refguide:applib:index/annotation/PropertyLayout.adoc[@PropertyLayout] annotation is grouped to associate properties with those fieldsets.
 
-If we prefer, we can move specify this association within the `PetOwner.layout.xml` file instead.
+If we prefer, we can specify this association within the `PetOwner.layout.xml` file instead.
 And we can also do the same thing associating actions with properties or collections.
-
 This has the benefit of being dynamic; we can move fields around in the layout without having to recompile/restart the application.
 
 
@@ -1143,7 +1142,8 @@ private long version;
 <.> The `@PropertyLayout` was removed...
 <.> ... but `@Property` has been added instead.
 +
-This is because at least one of @Property` or `@PropertyLayout` must be present to identify the field as a property (at least using the configuration of the framework is concerned).
+This is because at least one of @Property` or `@PropertyLayout` must be present to identify the field as a property (at least so far as this application has been configured.
+In fact, it is possible to configure the framework to be either less strict or more strict with respect to whether annotations are specified, see xref:refguide:config:sections/causeway.core.meta-model.introspector.adoc#causeway.core.meta-model.introspector.policy[]]).
 
 ** add to `PetOwner.layout.xml`:
 +


(causeway) 02/11: CAUSEWAY-2873: rewording

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch 3.0.0
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit b2bd21dc580c336a6aca54e6ff79fe566b72016f
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed May 29 06:14:30 2024 +0100

    CAUSEWAY-2873: rewording
---
 .../modules/petclinic/pages/010-getting-started.adoc        |  2 +-
 .../modules/petclinic/pages/020-the-petclinic-domain.adoc   | 13 ++++++++++++-
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/antora/components/tutorials/modules/petclinic/pages/010-getting-started.adoc b/antora/components/tutorials/modules/petclinic/pages/010-getting-started.adoc
index a4a1e6e8a8..81729ac643 100644
--- a/antora/components/tutorials/modules/petclinic/pages/010-getting-started.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/010-getting-started.adoc
@@ -132,7 +132,7 @@ Map these to the "Simple Objects" menu.
 
 * locate the `SimpleObject` entity, and notice the methods annotated with `@Property` and `@Action`.
 +
-Map these onto the fields of the "simple object" entity, and the action buttons (eg to "change name").
+Map these onto the fields of the "simple object" entity, and the action buttons (eg to "update name").
 
 
 It's common for each entity (or more precisely, aggregate root) to have a corresponding domain service, acting as its repository.
diff --git a/antora/components/tutorials/modules/petclinic/pages/020-the-petclinic-domain.adoc b/antora/components/tutorials/modules/petclinic/pages/020-the-petclinic-domain.adoc
index b456681fff..9967cdeaa6 100644
--- a/antora/components/tutorials/modules/petclinic/pages/020-the-petclinic-domain.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/020-the-petclinic-domain.adoc
@@ -21,13 +21,24 @@ Some of the use cases we might want to support include:
 
 * create a `PetOwner`
 * add and remove ``Pet``s for said `PetOwner`
+* delete a `PetOwner` and its ``Pet``s and ``Visit``s, so long as there are no unpaid ``Visit``s.
 * book a `Pet` in for a `Visit`
+* delete a `PetOwner` and its ``Pet``s, unless there are  ``Visit``s.
+
+This tutorial has worked solutions for all of these
+
+Some ideas for future extensions to the domain:
+
 * enter an `outcome` and `cost` of a `Visit`
 * allow a `PetOwner` to pay for a `Visit`
 * find ``Visit``s not yet paid and overdue
 * delete a `PetOwner` and its ``Pet``s and ``Visit``s, so long as there are no unpaid ``Visit``s.
+* add a previous/next buttons when paging through upcoming ``Visit``s
+* make "lastVisit" non-editable and maintained automatically from ``Visit``s
+
+
+Once you have finished the formal tutorial, have a go at implementing some of these ideas.
 
-This tutorial has worked solutions for all of these.
 
 [#exercise-2-1-create-a-new-petowner-module]
 == Ex 2.1: Create a new `petowner` module


(causeway) 08/11: CAUSEWAY-2873: wording fixes

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch 3.0.0
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 6f2cccb4115d03ae015af964a69cc3d1924387fc
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed May 29 06:31:43 2024 +0100

    CAUSEWAY-2873: wording fixes
---
 .../modules/petclinic/pages/030-petowner-entity.adoc    | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc b/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
index f5d60f7231..d1e207768c 100644
--- a/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
@@ -453,6 +453,8 @@ public PetOwner create(
 ----
 val petOwner = PetOwners.create(persona.name, null, null, null);
 ----
++
+(Or, even better - pass in `knownAs` as the 2^nd^ parameter, and remove the explicit setting of this value later in the fixture script)
 
 When you run the app, confirm that only the `name` parameter is optional:
 
@@ -465,7 +467,7 @@ image::03-07/new-parameters-are-optional.png[width=80%]
 The framework provides many ways to customise the UI, either through the layout files or using the `@XxxLayout` annotations.
 Default UI conventions can also be specified using the `application.yml` configuration file.
 
-In this exercise we'll change the prompt style for both a service (menu) action, ie menu::PetOwners[create], and an object action, ie `PetOwner#updateName`.
+In this exercise we'll change the prompt style for both a service (menu) action, ie menu:PetOwners[create], and an object action, ie `PetOwner#updateName`.
 
 
 === Solution
@@ -499,7 +501,7 @@ Confirm that the dialog is now shown as a modal prompt.
 If forced to use a dialog, then they default to a sidebar prompt rather than a modal prompt.
 +
 Remove the `@ActionLayout(promptStyle)` for `PetOwner#updateName`:
-
++
 [source,java]
 .PetOwner.java
 ----
@@ -653,13 +655,12 @@ daysSinceLastVisit
 [#exercise-3-10-use-meta-annotations-to-reduce-duplication]
 == Ex 3.10: Use meta-annotations to reduce duplication
 
-There is some duplication between menu:PetOwners[create] action and the `PetOwner` class; both define a "name" parameter along with other optional parameters, "telephoneNumber, "emailAddress" and "knownAs".
-
-With "name" you might have noticed that the `@Name` meta-annotation that came with the starter, and which centralizes the domain knowledge about what a "name" is.
+There is some duplication between menu:PetOwners[create] action and the `PetOwner` class: both define `name` as a  parameter or property respectively, and they also share a number of other parameters/properties, `telephoneNumber`, `emailAddress` and `knownAs`.
 
-In this exercise we'll use the same approach with the "telephoneNumber".
-(We won't do "emailAddress" or "knownAs" though - we'll explore an even more powerful way to reduce duplication in the following exercise).
+With `name` you might have noticed that the `@Name` meta-annotation that came with the starter, and which centralizes the domain knowledge about what a `name` is.
 
+In this exercise we'll use the same approach, introducing a meta-annotation to centralize semantics for  `telephoneNumber`.
+(We won't do `emailAddress` or `knownAs` though - we'll explore an even more powerful way to reduce duplication in a following exercise).
 
 === Solution
 
@@ -752,7 +753,7 @@ mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles
 === Task
 
 
-* Update the `@Property` annotation of the `@PhoneNumber` meta-annotation:
+* Update the `@Property` and `@Parameter` annotations of the `@PhoneNumber` meta-annotation:
 +
 [source,java]
 .PhoneNumber.java


(causeway) 05/11: CAUSEWAY-2873: consistency

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch 3.0.0
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit e1a48fef9be190268125af9845c170e1f97fb606
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed May 29 06:17:06 2024 +0100

    CAUSEWAY-2873: consistency
---
 .../tutorials/modules/petclinic/pages/030-petowner-entity.adoc      | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc b/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
index 813384f38b..d46300cb21 100644
--- a/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
@@ -221,7 +221,7 @@ Before the "Details" fieldset, add:
 ----
 
 TIP: if you make changes to this file then your IDE may be able detect the changes automatically.
-For example, with IntelliJ you can use "Reload Changed Classes" menu item.
+For example, with IntelliJ you can use menu:Run[Debugging Actions > Reload Changed Classes].
 
 You can learn more about layout files xref:userguide::ui-layout-and-hints.adoc[here].
 
@@ -258,7 +258,7 @@ lastVisit
 Confirm that menu:Pet Owners[List All] now shows the additional properties as columns.
 
 TIP: if you make changes to this file then your IDE may be able detect the changes automatically.
-For example, with IntelliJ you can use "Reload Changed Classes" menu item.
+For example, with IntelliJ you can use menu:Run[Debugging Actions > Reload Changed Classes].
 
 You can learn more about layout files xref:userguide::ui-layout-and-hints.adoc[here].
 
@@ -404,7 +404,7 @@ emailAddress
 TIP: the action "Download .columnOrder.txt files (ZIP)" (available only when prototyping) provides an easy way to obtain this file; you can then update as required.
 
 TIP: You can config your IDE so that any changes made to this file are picked up automatically without having to restart the app.
-If using IntelliJ for example, use "Reload Changed Classes" action.
+If using IntelliJ for example, use menu:Run[Debugging Actions > Reload Changed Classes].
 
 
 [#exercise-3-7-modify-the-menu-action-to-create-petowners]


(causeway) 10/11: CAUSEWAY-2873: wording fixes

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch 3.0.0
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit ec873c1ab369f12800457142b7095df66539c2a8
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed May 29 06:39:45 2024 +0100

    CAUSEWAY-2873: wording fixes
---
 .../tutorials/modules/petclinic/pages/030-petowner-entity.adoc      | 6 ++++--
 .../tutorials/modules/petclinic/pages/040-pet-entity.adoc           | 4 ++--
 .../tutorials/modules/petclinic/pages/060-unit-testing.adoc         | 5 ++++-
 3 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc b/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
index 88d079debf..f2d9e93527 100644
--- a/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
@@ -1249,9 +1249,11 @@ Whether you choose to use layout file only or a mixture of layout file and annot
 Notice that the `.layout.xml` files has elements with the "unreferencedProperties", "unreferencedCollections" or "unreferencedActions" (and is considered invalid if these are missing).
 As you might expect, these tags indicate where to render properties, collections or actions whose placement has not been specified explicitly.
 
-IMPORTANT::
+[IMPORTANT]
+====
 This is an important principle of the _naked objects pattern_ ; the domain object should always be rendered in some way or another.
 The presence of UI semantics (`@XxxLayout` annotations or the `.layout.xml` files) merely influence how that rendering is performed.
+====
 
 
 [#exercise-3-15-update-icon-for-pet-owner]
@@ -1261,7 +1263,7 @@ As we've learnt in previous exercises, every domain object has a title which all
 Every domain object also has an icon, which helps distinguish one domain object _type_ from another.
 
 The icon acts as the hyperlink from one domain object to another, for example from the home page to the `PetOwner` entity.
-But choosing a good icon also improves the feedback cycle with your domain experts; similar to personas, it helps to create a connection between the domain experts concept of the "thing" and its representation in the app's user interface.
+But choosing a good icon also improves the feedback cycle with your domain expert's; similar to personas, it helps to create a connection between the domain experts concept of the "thing" and its representation in the app's user interface.
 
 In this exercise, we'll replace the icon for `PetOwner`.
 
diff --git a/antora/components/tutorials/modules/petclinic/pages/040-pet-entity.adoc b/antora/components/tutorials/modules/petclinic/pages/040-pet-entity.adoc
index faa3f3b1db..fbc2fcea6e 100644
--- a/antora/components/tutorials/modules/petclinic/pages/040-pet-entity.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/040-pet-entity.adoc
@@ -507,7 +507,7 @@ public String validate0AddPet(final String name) {                      // <.>
 ----
 <.> Indicates that this method is part of the Causeway metamodel
 <.> Naming convention indicates that this is the validation of the 0^th^ parameter of `addPet`
-<.> A non-null value indicates is used as the reason the action cannot be invoked
+<.> If a non-null value is returned, the framework uses its as the reason the action cannot be invoked
 <.> If null is returned then the validation has succeeded.
 
 Run the application and confirm that the validation is working as you expect.
@@ -687,7 +687,7 @@ mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles
 === Tasks
 
 
-* download additional icons for each of the `PetSpecies` (dog, cat, hamster, budgie)
+* download additional icons for each of the `PetSpecies` (dog, cat, hamster, budgerigar)
 
 * save these icons as `Pet-dog.png`, `Pet-cat.png` and so on, ie the pet species as suffix.
 
diff --git a/antora/components/tutorials/modules/petclinic/pages/060-unit-testing.adoc b/antora/components/tutorials/modules/petclinic/pages/060-unit-testing.adoc
index f9b5d80f83..16974aebd8 100644
--- a/antora/components/tutorials/modules/petclinic/pages/060-unit-testing.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/060-unit-testing.adoc
@@ -87,8 +87,11 @@ Automatically provisioned by Mockito.
 <.> sets up expectations for this scenario on the mock `VirtualClock`
 <.> use link:http://joel-costigliola.github.io/assertj/[AssertJ] to assert the expected value
 
-IMPORTANT: Unit tests should have a suffix "_Test", to distinguish them from integration tests.
+[IMPORTANT]
+====
+Unit tests should have a suffix "_Test", to distinguish them from integration tests.
 The top-level pom configures Maven surefire to run the unit tests first and then integration tests as a separate execution.
+====
 
 === Optional Exercises
 


(causeway) 07/11: CAUSEWAY-2873: improves toc

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch 3.0.0
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 53dd2e5605917ac9c41d72a748d81ad6e85ea63c
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed May 29 06:25:49 2024 +0100

    CAUSEWAY-2873: improves toc
---
 .../tutorials/modules/petclinic/nav.adoc           | 54 +++++++++++-----------
 .../petclinic/pages/030-petowner-entity.adoc       | 10 ++--
 2 files changed, 31 insertions(+), 33 deletions(-)

diff --git a/antora/components/tutorials/modules/petclinic/nav.adoc b/antora/components/tutorials/modules/petclinic/nav.adoc
index 6233167fa9..0e02fb2c5b 100644
--- a/antora/components/tutorials/modules/petclinic/nav.adoc
+++ b/antora/components/tutorials/modules/petclinic/nav.adoc
@@ -7,21 +7,21 @@
 ** xref:010-getting-started.adoc#exercise-1-4-naked-objects-pattern[1.4: Naked Objects pattern]
 ** xref:010-getting-started.adoc#exercise-1-5-ui-hints[1.5: UI Hints]
 
-* xref:020-the-petclinic-domain.adoc[The PetClinic Domain and petowner module]
-** xref:020-the-petclinic-domain.adoc#exercise-2-1-create-a-new-petowner-module[image:hand.png[] *2.1*: Create new petowner module]
-** xref:020-the-petclinic-domain.adoc#exercise-2-2-configure-the-app-to-include-the-petowner-module[image:hand.png[] *2.2*: Include the petowner module]
-** xref:020-the-petclinic-domain.adoc#exercise-2-3-add-security-role-for-petowner-module[image:hand.png[] *2.3*: Add security role for the petowner module]
-** xref:020-the-petclinic-domain.adoc#exercise-2-4-update-menubar-for-PetOwners[image:hand.png[] *2.4*: Update menubar for PetOwners]
-** xref:020-the-petclinic-domain.adoc#exercise-2-5-setup-demo-PetOwners[image:hand.png[] *2.5*: Setup demo PetOwners]
+* xref:020-the-petclinic-domain.adoc[The PetClinic Domain and `petowner` module]
+** xref:020-the-petclinic-domain.adoc#exercise-2-1-create-a-new-petowner-module[image:hand.png[] *2.1*: Create new `petowner` module]
+** xref:020-the-petclinic-domain.adoc#exercise-2-2-configure-the-app-to-include-the-petowner-module[image:hand.png[] *2.2*: Include the `petowner` module]
+** xref:020-the-petclinic-domain.adoc#exercise-2-3-add-security-role-for-petowner-module[image:hand.png[] *2.3*: Add security role for the `petowner` module]
+** xref:020-the-petclinic-domain.adoc#exercise-2-4-update-menubar-for-PetOwners[image:hand.png[] *2.4*: Update menubar for `PetOwners`]
+** xref:020-the-petclinic-domain.adoc#exercise-2-5-setup-demo-PetOwners[image:hand.png[] *2.5*: Setup demo ``PetOwner``s]
 
 * xref:030-petowner-entity.adoc[PetOwner entity]
-** xref:030-petowner-entity.adoc#exercise-3-1-add-petowners-knownAs-property[image:hand.png[] *3.1*: Add PetOwner's knownAs property]
-** xref:030-petowner-entity.adoc#exercise-3-2-define-PetOwners-title-imperatively[image:hand.png[] *3.2*: Define PetOwner's title imperatively]
+** xref:030-petowner-entity.adoc#exercise-3-1-add-petowners-knownAs-property[image:hand.png[] *3.1*: Add ``PetOwner``'s `knownAs` property]
+** xref:030-petowner-entity.adoc#exercise-3-2-define-PetOwners-title-imperatively[image:hand.png[] *3.2*: Define ``PetOwner``'s title imperatively]
 ** xref:030-petowner-entity.adoc#exercise-3-3-remaining-PetOwner-properties[image:hand.png[] *3.3*: Add remaining `PetOwner` properties]
-** xref:030-petowner-entity.adoc#exercise-3-4-list-new-properties-of-PetOwner[image:hand.png[] *3.4*: List new properties of PetOwner]
+** xref:030-petowner-entity.adoc#exercise-3-4-list-new-properties-of-PetOwner[image:hand.png[] *3.4*: List new properties of `PetOwner`]
 ** xref:030-petowner-entity.adoc#exercise-3-5-initial-fixture-script[image:hand.png[] *3.5*: Initial Fixture Script]
-** xref:030-petowner-entity.adoc#exercise-3-6-update-home-page-to-show-PetOwners[image:hand.png[] *3.6*:  Update Home Page to show PetOwners]
-** xref:030-petowner-entity.adoc#exercise-3-7-modify-the-menu-action-to-create-petowners[image:hand.png[] *3.7*: Modify the menu action to create PetOwners]
+** xref:030-petowner-entity.adoc#exercise-3-6-update-home-page-to-show-PetOwners[image:hand.png[] *3.6*:  Update Home Page to show ``PetOwner``s]
+** xref:030-petowner-entity.adoc#exercise-3-7-modify-the-menu-action-that-creates-petowners[image:hand.png[] *3.7*: Modify the menu action that creates ``PetOwner``s]
 ** xref:030-petowner-entity.adoc#exercise-3-8-prompt-styles[image:hand.png[] *3.8*: Prompt styles]
 ** xref:030-petowner-entity.adoc#exercise-3-9-derived-days-since-last-visit-property[image:hand.png[] *3.9*: Derived 'days since last visit' property]
 ** xref:030-petowner-entity.adoc#exercise-3-10-use-meta-annotations-to-reduce-duplication[image:hand.png[] *3.10*: Use meta-annotations to reduce duplication]
@@ -29,31 +29,31 @@
 ** xref:030-petowner-entity.adoc#exercise-3-12-more-validation[image:hand.png[] *3.12*: More validation]
 ** xref:030-petowner-entity.adoc#exercise-3-13-scalar-custom-value-types[image:hand.png[] *3.13*: Scalar custom value types]
 ** xref:030-petowner-entity.adoc#exercise-3-14-use-layout-xml-file-for-ui-semantics[image:hand.png[] *3.14*: Use layout xml file for UI semantics]
-** xref:030-petowner-entity.adoc#exercise-3-15-update-icon-for-pet-owner[image:hand.png[] *3.15*: Update icon for Pet Owner]
+** xref:030-petowner-entity.adoc#exercise-3-15-update-icon-for-pet-owner[image:hand.png[] *3.15*: Update icon for `PetOwner`]
 
 
 * xref:040-pet-entity.adoc[Pet entity]
-** xref:040-pet-entity.adoc#exercise-4-1-pet-entitys-key-properties[image:hand.png[] *4.1*: Pet entity's key properties]
-** xref:040-pet-entity.adoc#exercise-4-2-add-pet-ui-and-layout-semantics[image:hand.png[] *4.2*: Add Pet's UI and layout semantics]
-** xref:040-pet-entity.adoc#exercise-4-3-add-petowners-collection-of-pets[image:hand.png[] *4.3*: Add PetOwner's collection of Pets]
-** xref:040-pet-entity.adoc#exercise-4-4-add-actions-to-add-or-remove-pets[image:hand.png[] *4.4*: Add actions to add or remove Pets]
-** xref:040-pet-entity.adoc#exercise-4-5-extend-the-fixture-data-to-add-in-Pets[image:hand.png[] *4.5*: Extend the fixture data to add in Pets]
-** xref:040-pet-entity.adoc#exercise-4-6-add-action-validation[image:hand.png[] *4.6*: Unique pet names (action validation)]
-** xref:040-pet-entity.adoc#exercise-4-7-add-pets-remaining-properties[image:hand.png[] *4.7*: Add Pet's remaining properties]
-** xref:040-pet-entity.adoc#exercise-4-8-dynamic-icons-for-pet[image:hand.png[] *4.8*: Add dynamic icons for Pet]
+** xref:040-pet-entity.adoc#exercise-4-1-pet-entitys-key-properties[image:hand.png[] *4.1*: `Pet` entity's key properties]
+** xref:040-pet-entity.adoc#exercise-4-2-add-pet-ui-and-layout-semantics[image:hand.png[] *4.2*: Add ``Pet``'s UI and layout semantics]
+** xref:040-pet-entity.adoc#exercise-4-3-add-petowners-collection-of-pets[image:hand.png[] *4.3*: Add ``PetOwner``'s collection of ``Pet``s]
+** xref:040-pet-entity.adoc#exercise-4-4-add-actions-to-add-or-remove-pets[image:hand.png[] *4.4*: Add actions to add or remove ``Pet``s]
+** xref:040-pet-entity.adoc#exercise-4-5-extend-the-fixture-data-to-add-in-Pets[image:hand.png[] *4.5*: Extend the fixture data to add in ``Pet``s]
+** xref:040-pet-entity.adoc#exercise-4-6-add-action-validation[image:hand.png[] *4.6*: Unique `Pet` names (action validation)]
+** xref:040-pet-entity.adoc#exercise-4-7-add-pets-remaining-properties[image:hand.png[] *4.7*: Add ``Pet``'s remaining properties]
+** xref:040-pet-entity.adoc#exercise-4-8-dynamic-icons-for-pet[image:hand.png[] *4.8*: Add dynamic icons for `Pet`]
 
-* xref:050-visit-entity.adoc[Visit module and entity]
-** xref:050-visit-entity.adoc#exercise-5-1-the-visits-module[image:hand.png[] *5.1*: The visits module]
-** xref:050-visit-entity.adoc#exercise-5-2-visit-module-dependencies[image:hand.png[] *5.2*: Visit Module Dependencies]
-** xref:050-visit-entity.adoc#exercise-5-3-visit-entitys-key-properties[image:hand.png[] *5.3*: Visit entity's key properties]
-** xref:050-visit-entity.adoc#exercise-5-4-book-visit-action[image:hand.png[] *5.4*: "Book Visit" action]
+* xref:050-visit-entity.adoc[The `visit` module and entity]
+** xref:050-visit-entity.adoc#exercise-5-1-the-visits-module[image:hand.png[] *5.1*: The `visit` module]
+** xref:050-visit-entity.adoc#exercise-5-2-visit-module-dependencies[image:hand.png[] *5.2*: The `visit` module dependencies]
+** xref:050-visit-entity.adoc#exercise-5-3-visit-entitys-key-properties[image:hand.png[] *5.3*: `Visit` entity's key properties]
+** xref:050-visit-entity.adoc#exercise-5-4-book-visit-action[image:hand.png[] *5.4*: The "Book Visit" action]
 
 
 * xref:060-unit-testing.adoc[Unit Testing]
 ** xref:060-unit-testing.adoc#exercise-6-1-unit-test-the-default-time-when-booking-visits[image:hand.png[] *6.1*: Unit test the default time when booking visits]
 
 * xref:070-modularity.adoc[Modularity (domain events)]
-** xref:070-modularity.adoc#exercise-7-1-refactor-petowners-delete-action[image:hand.png[] *7.1*: refactor PetOwner's delete action]
+** xref:070-modularity.adoc#exercise-7-1-refactor-petowners-delete-action[image:hand.png[] *7.1*: refactor ``PetOwner``'s delete action]
 
 
 * xref:080-view-models.adoc[View Models]
@@ -62,7 +62,7 @@
 
 
 * xref:090-integration-testing.adoc[Integration Testing]
-** xref:090-integration-testing.adoc#exercise-9-1-testing-bookvisit-using-an-integtest[image:hand.png[] *9.1*: Testing bookVisit using an integtest]
+** xref:090-integration-testing.adoc#exercise-9-1-testing-bookvisit-using-an-integtest[image:hand.png[] *9.1*: Testing `bookVisit()` using an integtest]
 
 
 // LATER: other sections could include
diff --git a/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc b/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
index dfff36e7d2..f5d60f7231 100644
--- a/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
@@ -307,7 +307,7 @@ causeway:
 
 We also need to make one small modification to the fixture script itself.
 The initial fixtures are run with a built-in user called "\__system", that has no roles and therefore no permissions.
-We either need to change the fixture script to run as a different user that _will_ have permissions (there's a service called xref:refguide:applib:index/services/sudo/SudoService.adoc[] that would let us do that), or, simpler, just temporarily switch off permission checks.
+We either need to change the fixture script to run as a different user that does have the permissions (there's a service called xref:refguide:applib:index/services/sudo/SudoService.adoc[] that would let us do that), or, simpler, just temporarily switch off permission checks.
 We'll go with the second option:
 
 * locate the `PetOwner_persona.Builder` class, and make this change:
@@ -366,7 +366,7 @@ Locate the `HomePageViewModel` class:
 * change the `title()` implementation
 * rename the collection from `getObjects()` to `getPetOwners()`
 
-The positioning of the collection is also specified in the corresponding layout file, and so also needs updating.
+The positioning of the collection is also specified in the corresponding layout file, and so that file also needs updating.
 
 * locate the `HomePageViewModel.layout.xml` file, and update accordingly
 +
@@ -403,12 +403,10 @@ emailAddress
 
 TIP: the action "Download .columnOrder.txt files (ZIP)" (available only when prototyping) provides an easy way to obtain this file; you can then update as required.
 
-TIP: You can config your IDE so that any changes made to this file are picked up automatically without having to restart the app.
-If using IntelliJ for example, use menu:Run[Debugging Actions > Reload Changed Classes].
 
 
-[#exercise-3-7-modify-the-menu-action-to-create-petowners]
-== Ex 3.7: Modify the menu action to create PetOwners
+[#exercise-3-7-modify-the-menu-action-that-creates-petowners]
+== Ex 3.7: Modify the menu action that creates PetOwners
 
 If we want to create a new `PetOwner` and specify additional details, at the moment it's a two stage process: create the `PetOwner` (using menu:PetOwners[create]), then set the additional details afterwards.
 


(causeway) 11/11: CAUSEWAY-2873: wording fixes

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch 3.0.0
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit cd4d148e9862d3ddd4b4a6d74394fa032c4ae75d
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed May 29 06:48:31 2024 +0100

    CAUSEWAY-2873: wording fixes
---
 .../tutorials/modules/petclinic/nav.adoc           |  6 +++---
 .../modules/petclinic/pages/050-visit-entity.adoc  | 24 ++++++++++++++--------
 .../modules/petclinic/pages/070-modularity.adoc    |  2 +-
 .../petclinic/pages/090-integration-testing.adoc   |  2 +-
 4 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/antora/components/tutorials/modules/petclinic/nav.adoc b/antora/components/tutorials/modules/petclinic/nav.adoc
index 0e02fb2c5b..f8db272501 100644
--- a/antora/components/tutorials/modules/petclinic/nav.adoc
+++ b/antora/components/tutorials/modules/petclinic/nav.adoc
@@ -14,7 +14,7 @@
 ** xref:020-the-petclinic-domain.adoc#exercise-2-4-update-menubar-for-PetOwners[image:hand.png[] *2.4*: Update menubar for `PetOwners`]
 ** xref:020-the-petclinic-domain.adoc#exercise-2-5-setup-demo-PetOwners[image:hand.png[] *2.5*: Setup demo ``PetOwner``s]
 
-* xref:030-petowner-entity.adoc[PetOwner entity]
+* xref:030-petowner-entity.adoc[The `PetOwner` entity]
 ** xref:030-petowner-entity.adoc#exercise-3-1-add-petowners-knownAs-property[image:hand.png[] *3.1*: Add ``PetOwner``'s `knownAs` property]
 ** xref:030-petowner-entity.adoc#exercise-3-2-define-PetOwners-title-imperatively[image:hand.png[] *3.2*: Define ``PetOwner``'s title imperatively]
 ** xref:030-petowner-entity.adoc#exercise-3-3-remaining-PetOwner-properties[image:hand.png[] *3.3*: Add remaining `PetOwner` properties]
@@ -32,7 +32,7 @@
 ** xref:030-petowner-entity.adoc#exercise-3-15-update-icon-for-pet-owner[image:hand.png[] *3.15*: Update icon for `PetOwner`]
 
 
-* xref:040-pet-entity.adoc[Pet entity]
+* xref:040-pet-entity.adoc[The `Pet` entity]
 ** xref:040-pet-entity.adoc#exercise-4-1-pet-entitys-key-properties[image:hand.png[] *4.1*: `Pet` entity's key properties]
 ** xref:040-pet-entity.adoc#exercise-4-2-add-pet-ui-and-layout-semantics[image:hand.png[] *4.2*: Add ``Pet``'s UI and layout semantics]
 ** xref:040-pet-entity.adoc#exercise-4-3-add-petowners-collection-of-pets[image:hand.png[] *4.3*: Add ``PetOwner``'s collection of ``Pet``s]
@@ -42,7 +42,7 @@
 ** xref:040-pet-entity.adoc#exercise-4-7-add-pets-remaining-properties[image:hand.png[] *4.7*: Add ``Pet``'s remaining properties]
 ** xref:040-pet-entity.adoc#exercise-4-8-dynamic-icons-for-pet[image:hand.png[] *4.8*: Add dynamic icons for `Pet`]
 
-* xref:050-visit-entity.adoc[The `visit` module and entity]
+* xref:050-visit-entity.adoc[The `visit` module and `Visit` entity]
 ** xref:050-visit-entity.adoc#exercise-5-1-the-visits-module[image:hand.png[] *5.1*: The `visit` module]
 ** xref:050-visit-entity.adoc#exercise-5-2-visit-module-dependencies[image:hand.png[] *5.2*: The `visit` module dependencies]
 ** xref:050-visit-entity.adoc#exercise-5-3-visit-entitys-key-properties[image:hand.png[] *5.3*: `Visit` entity's key properties]
diff --git a/antora/components/tutorials/modules/petclinic/pages/050-visit-entity.adoc b/antora/components/tutorials/modules/petclinic/pages/050-visit-entity.adoc
index bd0cdc406f..54f86354bb 100644
--- a/antora/components/tutorials/modules/petclinic/pages/050-visit-entity.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/050-visit-entity.adoc
@@ -1,4 +1,4 @@
-= Visit module and entity
+= The visit module and Visit entity
 
 :Notice: 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 ag [...]
 
@@ -8,8 +8,9 @@ In this section we'll add in the `Visit` entity:
 
 include::partial$domain.adoc[]
 
-Also, note that the `Visit` entity is in its own module.
-We'll look at the important topic of modularity in later exercises.
+Also, note that the `Visit` entity is in its own module, the `visit` module.
+So in this section of exercises we'll start to learn how Apache Causeway helps you keep your applications modular.
+
 
 
 [#exercise-5-1-the-visits-module]
@@ -75,7 +76,7 @@ causeway.persistence.schema.auto-create-schemas=\
 ----
 
 * add permissions to the new "visit" namespace.
-We could do this by adding a new security role, but for simplicity we'll just add to the existing role (`PetOwnerModuleSuperuserRole), renaming it as we do:
+We could do this by adding a new security role, but for simplicity we'll just add to the existing role (`PetOwnerModuleSuperuserRole`), renaming it as we do:
 +
 [source,java]
 .CustomRolesAndUsers.java
@@ -128,9 +129,11 @@ mvn clean install
 mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
-=== tasks
+=== Tasks
+
+First, let's consider the `visit` -> `petowner` dependency:
 
-* in the new visit module's `pom.xml`, add a Maven dependency on `petowner` module:
+* in the new `visit` module's `pom.xml`, add a Maven dependency on `petowner` module:
 +
 [source,xml]
 .visit/pom.xml
@@ -157,7 +160,10 @@ TIP: In your IDE you may need to reload/refresh dependencies to rebuild the clas
 public class VisitModule ... { ... }
 ----
 
+And next, let's consider the `application` -> `visit` dependency:
+
 * in the webapp module, add a Maven dependency on the visit module:
++
 [source,xml]
 .visit/pom.xml
 ----
@@ -169,7 +175,7 @@ public class VisitModule ... { ... }
 +
 The dependency on `<artifactId>simpleapp-jpa-module-petowner</artifactId>` can also be removed, due to transitivity.
 
-* and in the webapp's `ApplicationModule` Causeway module, add a corresponding import on `VisitModule`.
+* And, in the webapp's `ApplicationModule` Causeway module, add a corresponding import on `VisitModule`.
 +
 [source,java]
 .ApplicationModule.java
@@ -184,7 +190,7 @@ public class ApplicationModule {
 }
 ----
 +
-The import on `PetOwnerModule.class` can be removed, due to transitivity.
+The import of `PetOwnerModule.class` can similarly be removed, due to transitivity.
 
 Run the application and check that it starts ok.
 
@@ -376,7 +382,7 @@ We can see this in the domain model:
 include::partial$domain.adoc[]
 
 Causeway's solution to this is to allow the visit module to define behaviour, but have the behaviour seem to belong to the `Pet` entity, at least so far as the user interface is concerned.
-This is done using a xref:userguide::mixins.adoc[].
+This is done using a xref:userguide::mixins.adoc[mixin].
 
 Because `Visit` is its own root entity, we're also going to need a repository to be able to look them up for a given `Pet`.
 
diff --git a/antora/components/tutorials/modules/petclinic/pages/070-modularity.adoc b/antora/components/tutorials/modules/petclinic/pages/070-modularity.adoc
index f7b9507868..6959ca089c 100644
--- a/antora/components/tutorials/modules/petclinic/pages/070-modularity.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/070-modularity.adoc
@@ -67,7 +67,7 @@ mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles
 +
 NOTE: in fact, domain events are always emitted; but by default a generic `ActionDomainEvent` is used rather than a specific subclass.
 
-* create a subscriber in the `pets` package to delete all ``Pet``s when the `PetOwner_delete` action is invoked:
+* create a subscriber in the `visit` module to to veto an attempt to invoke the `PetOwner_delete` action if there are any visits
 +
 [source,java]
 .PetOwner_delete_subscriber.java
diff --git a/antora/components/tutorials/modules/petclinic/pages/090-integration-testing.adoc b/antora/components/tutorials/modules/petclinic/pages/090-integration-testing.adoc
index b79e5e6e01..c9c00c910f 100644
--- a/antora/components/tutorials/modules/petclinic/pages/090-integration-testing.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/090-integration-testing.adoc
@@ -20,7 +20,7 @@ In this exercise we'll test the `bookVisit` mixin action (on `Pet` entity).
 [source,bash]
 ----
 git checkout tags/09-01-bookVisit-integ-test
-mvn clean package jetty:run
+mvn clean install
 ----
 
 === Tasks


(causeway) 03/11: CAUSEWAY-2873: rewording

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch 3.0.0
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 315e51b199e7e4b9cdce608c54d80b1be5e7e9cd
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed May 29 06:15:32 2024 +0100

    CAUSEWAY-2873: rewording
---
 .../components/tutorials/modules/petclinic/pages/050-visit-entity.adoc  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/antora/components/tutorials/modules/petclinic/pages/050-visit-entity.adoc b/antora/components/tutorials/modules/petclinic/pages/050-visit-entity.adoc
index 30630a419b..bd0cdc406f 100644
--- a/antora/components/tutorials/modules/petclinic/pages/050-visit-entity.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/050-visit-entity.adoc
@@ -115,7 +115,7 @@ And similarly, the top-level application doesn't yet know about visit module.
 
 In this exercise we'll fix this, so that:
 
-application -> visit module -> petowner module
+`application` module -> `visit` module -> `petowner` module
 
 
 


(causeway) 01/11: CAUSEWAY-2873: fixes to petclinic docs

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch 3.0.0
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 066add3f4eb2bfe2ebe3297e188c23d44219dad4
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed May 29 06:09:56 2024 +0100

    CAUSEWAY-2873: fixes to petclinic docs
    
    running mvnd -pl webapp ...
    toc for section 2
    minor wording changes
---
 .../tutorials/modules/petclinic/nav.adoc           |  8 ++++--
 .../petclinic/pages/020-the-petclinic-domain.adoc  | 23 +++++++++-------
 .../petclinic/pages/030-petowner-entity.adoc       | 32 +++++++++++-----------
 .../modules/petclinic/pages/040-pet-entity.adoc    | 16 +++++------
 .../modules/petclinic/pages/050-visit-entity.adoc  |  8 +++---
 .../modules/petclinic/pages/060-unit-testing.adoc  |  2 +-
 .../modules/petclinic/pages/070-modularity.adoc    |  2 +-
 .../modules/petclinic/pages/080-view-models.adoc   |  4 +--
 .../modules/petclinic/partials/domain.adoc         |  4 +--
 9 files changed, 53 insertions(+), 46 deletions(-)

diff --git a/antora/components/tutorials/modules/petclinic/nav.adoc b/antora/components/tutorials/modules/petclinic/nav.adoc
index a3424f4901..6233167fa9 100644
--- a/antora/components/tutorials/modules/petclinic/nav.adoc
+++ b/antora/components/tutorials/modules/petclinic/nav.adoc
@@ -7,8 +7,12 @@
 ** xref:010-getting-started.adoc#exercise-1-4-naked-objects-pattern[1.4: Naked Objects pattern]
 ** xref:010-getting-started.adoc#exercise-1-5-ui-hints[1.5: UI Hints]
 
-* xref:020-the-petclinic-domain.adoc[The PetClinic Domain]
-** xref:020-the-petclinic-domain.adoc#exercise-2-1-refactor-simpleobject-to-petowner[image:hand.png[] *2.1*: Refactor SimpleObject to PetOwner]
+* xref:020-the-petclinic-domain.adoc[The PetClinic Domain and petowner module]
+** xref:020-the-petclinic-domain.adoc#exercise-2-1-create-a-new-petowner-module[image:hand.png[] *2.1*: Create new petowner module]
+** xref:020-the-petclinic-domain.adoc#exercise-2-2-configure-the-app-to-include-the-petowner-module[image:hand.png[] *2.2*: Include the petowner module]
+** xref:020-the-petclinic-domain.adoc#exercise-2-3-add-security-role-for-petowner-module[image:hand.png[] *2.3*: Add security role for the petowner module]
+** xref:020-the-petclinic-domain.adoc#exercise-2-4-update-menubar-for-PetOwners[image:hand.png[] *2.4*: Update menubar for PetOwners]
+** xref:020-the-petclinic-domain.adoc#exercise-2-5-setup-demo-PetOwners[image:hand.png[] *2.5*: Setup demo PetOwners]
 
 * xref:030-petowner-entity.adoc[PetOwner entity]
 ** xref:030-petowner-entity.adoc#exercise-3-1-add-petowners-knownAs-property[image:hand.png[] *3.1*: Add PetOwner's knownAs property]
diff --git a/antora/components/tutorials/modules/petclinic/pages/020-the-petclinic-domain.adoc b/antora/components/tutorials/modules/petclinic/pages/020-the-petclinic-domain.adoc
index b301f60899..b456681fff 100644
--- a/antora/components/tutorials/modules/petclinic/pages/020-the-petclinic-domain.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/020-the-petclinic-domain.adoc
@@ -1,6 +1,7 @@
+= The PetClinic domain, and the `petowner` module
+
 :Notice: 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 ag [...]
 
-= An Example Domain
 
 By now you should understand the basics of what Apache Causeway does, but there's only so much we can learn from a single domain class.
 Let's therefore evolve the app into a slightly more interesting domain and explore other features of the framework.
@@ -28,11 +29,13 @@ Some of the use cases we might want to support include:
 
 This tutorial has worked solutions for all of these.
 
-[#exercise-2-1-refactor-simpleobject-to-petowner]
-== Ex 2.1: Create a new `pets` module with `PetOwner`
+[#exercise-2-1-create-a-new-petowner-module]
+== Ex 2.1: Create a new `petowner` module
+
+In this exercise we'll create a new `petowner` module, copying the `simple` module to get us started.
+The `SimpleObject` entity will be copied to `PetOwner`, and the `SimpleObjects` domain service will be copied to `PetOwners`, but we won't change the structure.
 
-Using the `simple` module as a guide, we'll create a new `petowners` module and create a `PetOwner` and `PetOwners` domain service as reference.
-(We leave the `simple` module untouched, to use as a reference).
+We'll also leave the `simple` module untouched, to use as a reference.
 
 
 === Solution
@@ -41,7 +44,7 @@ Using the `simple` module as a guide, we'll create a new `petowners` module and
 ----
 git checkout tags/02-01-copies-SimpleObject-to-PetOwner
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run
 ----
 
 === Tasks
@@ -126,7 +129,7 @@ In this exercise we'll update the app to include `petowners` as well.
 ----
 git checkout tags/02-02-configure-the-app-to-include-petowner
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run
 ----
 
 === Tasks
@@ -198,7 +201,7 @@ In this exercise we'll add a security role to grant access to our new `petowner`
 ----
 git checkout tags/02-03-add-security-role-for-petowner
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run
 ----
 
 === Tasks
@@ -295,7 +298,7 @@ Let's now update the menu bar so that the actions to create ``PetOwner``s live u
 ----
 git checkout tags/02-04-update-menubar-for-petowners
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run
 ----
 
 === Tasks
@@ -347,7 +350,7 @@ This will allow us to quickly create a whole set of `PetOwner` objects from the
 ----
 git checkout tags/02-05-setup-demo-petowners
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run
 ----
 
 === Tasks
diff --git a/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc b/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
index 93bbc8a530..813384f38b 100644
--- a/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
@@ -9,7 +9,7 @@ In this set of exercises we'll just focus on the `PetOwner` entity.
 == Ex 3.1: Add PetOwner's knownAs property
 
 In this exercise, we'll add a new property, `knownAs`, to capture the ``PetOwner``'s preferred name.
-We'll also update the fixture script that sets up data to something more realistic.
+We'll also update the fixture script.
 
 
 === Solution
@@ -18,7 +18,7 @@ We'll also update the fixture script that sets up data to something more realist
 ----
 git checkout tags/03-01-adds-PetOwner-knownAs-property
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run
 ----
 
 Use the menu:Prototyping[Fixture Scripts] menu to setup some example data.
@@ -120,7 +120,7 @@ To do that, we need to define the title imperatively, using the xref:refguide:ap
 ----
 git checkout tags/03-02-define-PetOwner-title-imperatively
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run
 ----
 
 === Tasks
@@ -158,7 +158,7 @@ We'll make these changes in this exercise.
 ----
 git checkout tags/03-03-remaining-PetOwner-properties
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run
 ----
 
 === Tasks
@@ -239,7 +239,7 @@ Let's update the app to see some other properties we added in the previous exerc
 ----
 git checkout tags/03-04-list-new-properties-of-PetOwner
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run
 ----
 
 === Tasks
@@ -281,7 +281,7 @@ We can also leverage link:https://docs.spring.io/spring-boot/docs/current/refere
 ----
 git checkout tags/03-05-initial-fixture-script
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 
@@ -354,7 +354,7 @@ In this exercise, we'll refactor the home page view model to show a list of ``Pe
 ----
 git checkout tags/03-06-update-home-page-to-show-pet-owners
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 
@@ -420,7 +420,7 @@ In this exercise we'll simplify that workflow by allowing the additional details
 ----
 git checkout tags/03-07-modifies-PetOwners-create-action
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 === Tasks
@@ -476,7 +476,7 @@ In this exercise we'll change the prompt style for both a service (menu) action,
 ----
 git checkout tags/03-08-prompt-styles
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 
@@ -582,7 +582,7 @@ In this exercise we'll see how easy it is to create such a derived property.
 ----
 git checkout tags/03-09-derived-days-since-last-visit-property
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 
@@ -669,7 +669,7 @@ In this exercise we'll use the same approach with the "telephoneNumber".
 ----
 git checkout tags/03-10-use-meta-annotations-to-reduce-duplication
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 === Task
@@ -748,7 +748,7 @@ We can fix this by adding rules to their respective meta-annotations.
 ----
 git checkout tags/03-11-validation-rules-using-metaannotations
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 === Task
@@ -819,7 +819,7 @@ In this exercise we'll move this constraint onto the `@Name` meta-annotation ins
 ----
 git checkout tags/03-12-moves-validation-onto-metaannotation
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 === Task
@@ -880,7 +880,7 @@ For email address, we'll use a single string, so it's a scalar value type.
 ----
 git checkout tags/03-13-scalar-custom-value-type-for-email-address
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 === Task
@@ -1088,7 +1088,7 @@ This has the benefit of being dynamic; we can move fields around in the layout w
 ----
 git checkout tags/03-14-use-layout-xml-for-ui-semantics
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 === Task
@@ -1273,7 +1273,7 @@ In this exercise, we'll replace the icon for `PetOwner`.
 ----
 git checkout tags/03-15-change-pet-owner-icon-png
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 === Task
diff --git a/antora/components/tutorials/modules/petclinic/pages/040-pet-entity.adoc b/antora/components/tutorials/modules/petclinic/pages/040-pet-entity.adoc
index efe36851e5..faa3f3b1db 100644
--- a/antora/components/tutorials/modules/petclinic/pages/040-pet-entity.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/040-pet-entity.adoc
@@ -23,7 +23,7 @@ In this exercise we'll just create the outline of the `Pet` entity, and ensure i
 ----
 git checkout tags/04-01-pet-entity-key-properties
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 === Tasks
@@ -161,7 +161,7 @@ At the moment we're "flying blind" because we don't have any demo `Pet` instance
 ----
 git checkout tags/04-02-pet-ui-and-layout-semantics
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 === Tasks
@@ -303,7 +303,7 @@ In this next exercise we'll add the ``PetOwner``'s collection of ``Pet``s.
 ----
 git checkout tags/04-03-PetOwner-pets-collection
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 === Tasks
@@ -375,7 +375,7 @@ So in this exercise we'll add two actions on `PetOwner`: one to add a `Pet` and
 ----
 git checkout tags/04-04-add-remove-pets
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 === Tasks
@@ -428,7 +428,7 @@ In this exercise we'll extend the fixture data so that each of our pet owners ha
 ----
 git checkout tags/04-05-extend-fixture-data-to-add-in-pets
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 === Tasks
@@ -489,7 +489,7 @@ In this exercise we'll introduce a simple business rule: every owner's pet must
 ----
 git checkout tags/04-06-unique-pet-names-validation
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 === Tasks
@@ -556,7 +556,7 @@ So, we need to add a `species`, and some `notes`.
 ----
 git checkout tags/04-07-pet-remaining-properties
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 
@@ -680,7 +680,7 @@ This is what we'll quickly tackle in this exercise.
 ----
 git checkout tags/04-08-dynamic-icons
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 
diff --git a/antora/components/tutorials/modules/petclinic/pages/050-visit-entity.adoc b/antora/components/tutorials/modules/petclinic/pages/050-visit-entity.adoc
index 380039fa4a..30630a419b 100644
--- a/antora/components/tutorials/modules/petclinic/pages/050-visit-entity.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/050-visit-entity.adoc
@@ -23,7 +23,7 @@ In this exercise we'll just create an empty visits module.
 ----
 git checkout tags/05-01-visit-module
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 === Tasks
@@ -125,7 +125,7 @@ application -> visit module -> petowner module
 ----
 git checkout tags/05-02-visit-module-dependencies
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 === tasks
@@ -202,7 +202,7 @@ We'll start just with the key properties.
 ----
 git checkout tags/05-03-visit-entity-key-properties
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 
@@ -390,7 +390,7 @@ We'll also create a mixin _collection_ to be able to view the visits from a ``Pe
 ----
 git checkout tags/05-04-book-visit-action
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 
diff --git a/antora/components/tutorials/modules/petclinic/pages/060-unit-testing.adoc b/antora/components/tutorials/modules/petclinic/pages/060-unit-testing.adoc
index c1a6041706..f9b5d80f83 100644
--- a/antora/components/tutorials/modules/petclinic/pages/060-unit-testing.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/060-unit-testing.adoc
@@ -20,7 +20,7 @@ In this section we'll write a unit test to verify this logic, using Mockito to "
 ----
 git checkout tags/06-01-unit-test-bookVisit-default-time
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 
diff --git a/antora/components/tutorials/modules/petclinic/pages/070-modularity.adoc b/antora/components/tutorials/modules/petclinic/pages/070-modularity.adoc
index fa827459db..f7b9507868 100644
--- a/antora/components/tutorials/modules/petclinic/pages/070-modularity.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/070-modularity.adoc
@@ -39,7 +39,7 @@ In this exercise we'll use domain events to cascade delete or to veto the action
 ----
 git checkout tags/07-01-delete-action-events
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 === Tasks
diff --git a/antora/components/tutorials/modules/petclinic/pages/080-view-models.adoc b/antora/components/tutorials/modules/petclinic/pages/080-view-models.adoc
index 4df2b2bb50..df22c489d2 100644
--- a/antora/components/tutorials/modules/petclinic/pages/080-view-models.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/080-view-models.adoc
@@ -22,7 +22,7 @@ In this exercise we'll extend the home page by displaying additional data in new
 ----
 git checkout tags/08-01-home-page-additional-collections
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 
@@ -146,7 +146,7 @@ In this exercise we'll extend the home page by providing a convenience action to
 ----
 git checkout tags/08-02-home-page-bookVisit-convenience-action
 mvn clean install
-mvn -pl spring-boot:run
+mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
 ----
 
 
diff --git a/antora/components/tutorials/modules/petclinic/partials/domain.adoc b/antora/components/tutorials/modules/petclinic/partials/domain.adoc
index 44bb4da217..8ca59a9579 100644
--- a/antora/components/tutorials/modules/petclinic/partials/domain.adoc
+++ b/antora/components/tutorials/modules/petclinic/partials/domain.adoc
@@ -3,7 +3,7 @@
 ----
 include::partial$skinparam.adoc[]
 
-package pets {
+package petowner {
 
     enum PetSpecies <<desc>> {
         Dog
@@ -42,7 +42,7 @@ package pets {
 }
 
 
-package visits {
+package visit {
 
     class Visit <<mi>> {
         +id


(causeway) 06/11: CAUSEWAY-2873: consistency

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch 3.0.0
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 89a8e3563d3f042a08bf0afeed85033827015663
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed May 29 06:18:44 2024 +0100

    CAUSEWAY-2873: consistency
---
 .../tutorials/modules/petclinic/pages/030-petowner-entity.adoc          | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc b/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
index d46300cb21..dfff36e7d2 100644
--- a/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
+++ b/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc
@@ -251,8 +251,8 @@ mvn -pl webapp spring-boot:run
 ----
 name
 telephoneNumber
-emailAddress
 lastVisit
+emailAddress
 ----
 
 Confirm that menu:Pet Owners[List All] now shows the additional properties as columns.