This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch 2.0.0 in repository https://gitbox.apache.org/repos/asf/causeway.git
commit 52378bbd6ee1b46eb9cabd864c976925fb0144ac Author: Dan Haywood <[email protected]> AuthorDate: Thu May 30 06:47:51 2024 +0100 CAUSEWAY-2873: introduces configurable tag version for the petclinic tutorial --- antora/components/tutorials/antora.yml | 6 +++ .../tutorials/modules/petclinic/pages/.gitignore | 1 + .../petclinic/pages/010-getting-started.adoc | 13 +++-- .../petclinic/pages/020-the-petclinic-domain.adoc | 26 +++++----- .../petclinic/pages/030-petowner-entity.adoc | 60 +++++++++++----------- .../modules/petclinic/pages/040-pet-entity.adoc | 32 ++++++------ .../modules/petclinic/pages/050-visit-entity.adoc | 16 +++--- .../modules/petclinic/pages/060-unit-testing.adoc | 4 +- .../modules/petclinic/pages/070-modularity.adoc | 4 +- .../modules/petclinic/pages/080-view-models.adoc | 8 +-- .../petclinic/pages/090-integration-testing.adoc | 4 +- .../further-business-logic-worked-examples.txt | 28 +++++----- 12 files changed, 104 insertions(+), 98 deletions(-) diff --git a/antora/components/tutorials/antora.yml b/antora/components/tutorials/antora.yml index 31b8a0c3c0..798de463ec 100644 --- a/antora/components/tutorials/antora.yml +++ b/antora/components/tutorials/antora.yml @@ -23,3 +23,9 @@ nav: - modules/ROOT/nav.adoc - modules/petclinic/nav.adoc +asciidoc: + attributes: + tag-version: 'v2' + jdk-version: '11' + #tag-version: 'v3' + #jdk-version: '21' diff --git a/antora/components/tutorials/modules/petclinic/pages/.gitignore b/antora/components/tutorials/modules/petclinic/pages/.gitignore new file mode 100644 index 0000000000..0b76f26d92 --- /dev/null +++ b/antora/components/tutorials/modules/petclinic/pages/.gitignore @@ -0,0 +1 @@ +.asciidoctor/ \ No newline at end of file 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 81729ac643..677e4ffba2 100644 --- a/antora/components/tutorials/modules/petclinic/pages/010-getting-started.adoc +++ b/antora/components/tutorials/modules/petclinic/pages/010-getting-started.adoc @@ -8,7 +8,7 @@ You'll need: -* Java 11 +* Java {jdk-version} + Apache Causeway works up to at least Java 21, but stick with Java 11 for now. @@ -24,7 +24,6 @@ This has multiple tags for the various checkpoints so you can pick up the tutori * a Java IDE with support for Maven. + The Apache Causeway website has detailed documentation for setting up to use xref:setupguide:intellij:about.adoc[IntelliJ] or xref:setupguide:eclipse:about.adoc[Eclipse]. -+ For this tutorial, also make sure that your IDE is configured to support Lombok. @@ -42,7 +41,7 @@ We start the tutorial simply with a copy of xref:docs:starters:simpleapp.adoc[Si * Clone the repo: + -[source,bash] +[source,bash,subs="attributes+"] ---- git clone https://github.com/apache/causeway-app-petclinic ---- @@ -53,9 +52,9 @@ This will make it easier to inspect differences between different tags. * Checkout the first tag, and build: + -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/01-01-starter-app +git checkout tags/{tag-version}/01-01-starter-app mvn clean install ---- + @@ -63,7 +62,7 @@ mvn clean install ==== The code at this tag was created by copying the `v2-jpa` tag of xref:docs:starters:simpleapp.adoc[SimpleApp]: -[source,bash] +[source,bash,subs="attributes+"] ---- curl https://codeload.github.com/apache/causeway-app-simpleapp/zip/v2-jpa | jar xv ---- @@ -71,7 +70,7 @@ curl https://codeload.github.com/apache/causeway-app-simpleapp/zip/v2-jpa | jar * run the app: + -[source,bash] +[source,bash,subs="attributes+"] ---- mvn -pl webapp spring-boot:run ---- 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 7aa9e49d9f..1301bc73b0 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 @@ -51,9 +51,9 @@ We'll also leave the `simple` module untouched, to use as a reference. === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/02-01-copies-SimpleObject-to-PetOwner +git checkout tags/{tag-version}/02-01-copies-SimpleObject-to-PetOwner mvn clean install mvn -pl webapp spring-boot:run ---- @@ -106,14 +106,14 @@ In addition, the new Maven module was defined in the top-level `pom.xml`, and in Confirm that the code still builds: -[source,bash] +[source,bash,subs="attributes+"] ---- mvn install ---- However, if you run the app confirm that it is still showing just the original `simpleapp` module: -[source,bash] +[source,bash,subs="attributes+"] ---- mvn -pl webapp spring-boot:run ---- @@ -126,7 +126,7 @@ We'll fix this in the next exercise. We have our new `petowner` module, but we're not actually using it; if we run the application we still see the original `simpleapp` module. -[source,bash] +[source,bash,subs="attributes+"] ---- mvn -pl webapp spring-boot:run ---- @@ -136,9 +136,9 @@ In this exercise we'll update the app to include `petowners` as well. === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/02-02-configure-the-app-to-include-petowner +git checkout tags/{tag-version}/02-02-configure-the-app-to-include-petowner mvn clean install mvn -pl webapp spring-boot:run ---- @@ -208,9 +208,9 @@ In this exercise we'll add a security role to grant access to our new `petowner` === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/02-03-add-security-role-for-petowner +git checkout tags/{tag-version}/02-03-add-security-role-for-petowner mvn clean install mvn -pl webapp spring-boot:run ---- @@ -305,9 +305,9 @@ Let's now update the menu bar so that the actions to create ``PetOwner``s live u === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/02-04-update-menubar-for-petowners +git checkout tags/{tag-version}/02-04-update-menubar-for-petowners mvn clean install mvn -pl webapp spring-boot:run ---- @@ -357,9 +357,9 @@ This will allow us to quickly create a whole set of `PetOwner` objects from the === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/02-05-setup-demo-petowners +git checkout tags/{tag-version}/02-05-setup-demo-petowners mvn clean install mvn -pl webapp spring-boot:run ---- 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 f2d9e93527..c5cc45181d 100644 --- a/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc +++ b/antora/components/tutorials/modules/petclinic/pages/030-petowner-entity.adoc @@ -14,9 +14,9 @@ We'll also update the fixture script. === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/03-01-adds-PetOwner-knownAs-property +git checkout tags/{tag-version}/03-01-adds-PetOwner-knownAs-property mvn clean install mvn -pl webapp spring-boot:run ---- @@ -116,9 +116,9 @@ To do that, we need to define the title imperatively, using the xref:refguide:ap === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/03-02-define-PetOwner-title-imperatively +git checkout tags/{tag-version}/03-02-define-PetOwner-title-imperatively mvn clean install mvn -pl webapp spring-boot:run ---- @@ -154,9 +154,9 @@ We'll make these changes in this exercise. === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/03-03-remaining-PetOwner-properties +git checkout tags/{tag-version}/03-03-remaining-PetOwner-properties mvn clean install mvn -pl webapp spring-boot:run ---- @@ -235,9 +235,9 @@ Let's update the app to see some other properties we added in the previous exerc === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/03-04-list-new-properties-of-PetOwner +git checkout tags/{tag-version}/03-04-list-new-properties-of-PetOwner mvn clean install mvn -pl webapp spring-boot:run ---- @@ -277,9 +277,9 @@ We can also leverage link:https://docs.spring.io/spring-boot/docs/current/refere === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/03-05-initial-fixture-script +git checkout tags/{tag-version}/03-05-initial-fixture-script mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -350,9 +350,9 @@ In this exercise, we'll refactor the home page view model to show a list of ``Pe === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/03-06-update-home-page-to-show-pet-owners +git checkout tags/{tag-version}/03-06-update-home-page-to-show-pet-owners mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -414,9 +414,9 @@ In this exercise we'll simplify that workflow by allowing the additional details === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/03-07-modifies-PetOwners-create-action +git checkout tags/{tag-version}/03-07-modifies-PetOwners-create-action mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -472,9 +472,9 @@ In this exercise we'll change the prompt style for both a service (menu) action, === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/03-08-prompt-styles +git checkout tags/{tag-version}/03-08-prompt-styles mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -578,9 +578,9 @@ In this exercise we'll see how easy it is to create such a derived property. === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/03-09-derived-days-since-last-visit-property +git checkout tags/{tag-version}/03-09-derived-days-since-last-visit-property mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -664,9 +664,9 @@ In this exercise we'll use the same approach, introducing a meta-annotation to c === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/03-10-use-meta-annotations-to-reduce-duplication +git checkout tags/{tag-version}/03-10-use-meta-annotations-to-reduce-duplication mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -743,9 +743,9 @@ We can fix this by adding rules to their respective meta-annotations. === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/03-11-validation-rules-using-metaannotations +git checkout tags/{tag-version}/03-11-validation-rules-using-metaannotations mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -814,9 +814,9 @@ In this exercise we'll move this constraint onto the `@Name` meta-annotation ins === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/03-12-moves-validation-onto-metaannotation +git checkout tags/{tag-version}/03-12-moves-validation-onto-metaannotation mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -875,9 +875,9 @@ For email address, we'll use a single string, so it's a scalar value type. === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/03-13-scalar-custom-value-type-for-email-address +git checkout tags/{tag-version}/03-13-scalar-custom-value-type-for-email-address mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -1082,9 +1082,9 @@ This has the benefit of being dynamic; we can move fields around in the layout w === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/03-14-use-layout-xml-for-ui-semantics +git checkout tags/{tag-version}/03-14-use-layout-xml-for-ui-semantics mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -1270,9 +1270,9 @@ In this exercise, we'll replace the icon for `PetOwner`. === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/03-15-change-pet-owner-icon-png +git checkout tags/{tag-version}/03-15-change-pet-owner-icon-png mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- 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 fbc2fcea6e..79a15feed1 100644 --- a/antora/components/tutorials/modules/petclinic/pages/040-pet-entity.adoc +++ b/antora/components/tutorials/modules/petclinic/pages/040-pet-entity.adoc @@ -19,9 +19,9 @@ In this exercise we'll just create the outline of the `Pet` entity, and ensure i === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/04-01-pet-entity-key-properties +git checkout tags/{tag-version}/04-01-pet-entity-key-properties mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -157,9 +157,9 @@ At the moment we're "flying blind" because we don't have any demo `Pet` instance === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/04-02-pet-ui-and-layout-semantics +git checkout tags/{tag-version}/04-02-pet-ui-and-layout-semantics mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -299,9 +299,9 @@ In this next exercise we'll add the ``PetOwner``'s collection of ``Pet``s. === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/04-03-PetOwner-pets-collection +git checkout tags/{tag-version}/04-03-PetOwner-pets-collection mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -371,9 +371,9 @@ So in this exercise we'll add two actions on `PetOwner`: one to add a `Pet` and === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/04-04-add-remove-pets +git checkout tags/{tag-version}/04-04-add-remove-pets mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -424,9 +424,9 @@ In this exercise we'll extend the fixture data so that each of our pet owners ha === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/04-05-extend-fixture-data-to-add-in-pets +git checkout tags/{tag-version}/04-05-extend-fixture-data-to-add-in-pets mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -485,9 +485,9 @@ In this exercise we'll introduce a simple business rule: every owner's pet must === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/04-06-unique-pet-names-validation +git checkout tags/{tag-version}/04-06-unique-pet-names-validation mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -552,9 +552,9 @@ So, we need to add a `species`, and some `notes`. === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/04-07-pet-remaining-properties +git checkout tags/{tag-version}/04-07-pet-remaining-properties mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -676,9 +676,9 @@ This is what we'll quickly tackle in this exercise. === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/04-08-dynamic-icons +git checkout tags/{tag-version}/04-08-dynamic-icons mvn clean install 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 54f86354bb..06300e0cc3 100644 --- a/antora/components/tutorials/modules/petclinic/pages/050-visit-entity.adoc +++ b/antora/components/tutorials/modules/petclinic/pages/050-visit-entity.adoc @@ -20,9 +20,9 @@ In this exercise we'll just create an empty visits module. === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/05-01-visit-module +git checkout tags/{tag-version}/05-01-visit-module mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -122,9 +122,9 @@ In this exercise we'll fix this, so that: === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/05-02-visit-module-dependencies +git checkout tags/{tag-version}/05-02-visit-module-dependencies mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -204,9 +204,9 @@ We'll start just with the key properties. === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/05-03-visit-entity-key-properties +git checkout tags/{tag-version}/05-03-visit-entity-key-properties mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -392,9 +392,9 @@ We'll also create a mixin _collection_ to be able to view the visits from a ``Pe === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/05-04-book-visit-action +git checkout tags/{tag-version}/05-04-book-visit-action mvn clean install 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 16974aebd8..ff83b6846a 100644 --- a/antora/components/tutorials/modules/petclinic/pages/060-unit-testing.adoc +++ b/antora/components/tutorials/modules/petclinic/pages/060-unit-testing.adoc @@ -16,9 +16,9 @@ In this section we'll write a unit test to verify this logic, using Mockito to " === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/06-01-unit-test-bookVisit-default-time +git checkout tags/{tag-version}/06-01-unit-test-bookVisit-default-time mvn clean install 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 6959ca089c..3e58e536c4 100644 --- a/antora/components/tutorials/modules/petclinic/pages/070-modularity.adoc +++ b/antora/components/tutorials/modules/petclinic/pages/070-modularity.adoc @@ -35,9 +35,9 @@ In this exercise we'll use domain events to cascade delete or to veto the action === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/07-01-delete-action-events +git checkout tags/{tag-version}/07-01-delete-action-events mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- 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 df22c489d2..c66a251ca6 100644 --- a/antora/components/tutorials/modules/petclinic/pages/080-view-models.adoc +++ b/antora/components/tutorials/modules/petclinic/pages/080-view-models.adoc @@ -18,9 +18,9 @@ In this exercise we'll extend the home page by displaying additional data in new === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/08-01-home-page-additional-collections +git checkout tags/{tag-version}/08-01-home-page-additional-collections mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- @@ -142,9 +142,9 @@ In this exercise we'll extend the home page by providing a convenience action to === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/08-02-home-page-bookVisit-convenience-action +git checkout tags/{tag-version}/08-02-home-page-bookVisit-convenience-action mvn clean install mvn -pl webapp spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev" ---- 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 c9c00c910f..bc923a72f6 100644 --- a/antora/components/tutorials/modules/petclinic/pages/090-integration-testing.adoc +++ b/antora/components/tutorials/modules/petclinic/pages/090-integration-testing.adoc @@ -17,9 +17,9 @@ In this exercise we'll test the `bookVisit` mixin action (on `Pet` entity). === Solution -[source,bash] +[source,bash,subs="attributes+"] ---- -git checkout tags/09-01-bookVisit-integ-test +git checkout tags/{tag-version}/09-01-bookVisit-integ-test mvn clean install ---- diff --git a/antora/components/tutorials/modules/petclinic/pages/further-business-logic-worked-examples.txt b/antora/components/tutorials/modules/petclinic/pages/further-business-logic-worked-examples.txt index 0a7d8394a3..016e26d378 100644 --- a/antora/components/tutorials/modules/petclinic/pages/further-business-logic-worked-examples.txt +++ b/antora/components/tutorials/modules/petclinic/pages/further-business-logic-worked-examples.txt @@ -32,9 +32,9 @@ // //=== Solution // -//[source,bash] +//[source,bash,subs="attributes+"] //---- -//git checkout tags/330-enter-an-outcome +//git checkout tags/{tag-version}/330-enter-an-outcome //mvn clean package jetty:run //---- // @@ -153,9 +153,9 @@ // //=== Solution // -//[source,bash] +//[source,bash,subs="attributes+"] //---- -//git checkout tags/340-pay-for-a-visit +//git checkout tags/{tag-version}/340-pay-for-a-visit //mvn clean package jetty:run //---- // @@ -255,9 +255,9 @@ // //=== Solution // -//[source,bash] +//[source,bash,subs="attributes+"] //---- -//git checkout tags/350-prevent-payment-for-a-visit-twice +//git checkout tags/{tag-version}/350-prevent-payment-for-a-visit-twice //mvn clean package jetty:run //---- // @@ -321,9 +321,9 @@ // //=== Solution // -//[source,bash] +//[source,bash,subs="attributes+"] //---- -//git checkout tags/360-find-visits-not-yet-paid-and-overdue +//git checkout tags/{tag-version}/360-find-visits-not-yet-paid-and-overdue //mvn clean package jetty:run //---- // @@ -439,9 +439,9 @@ // //=== Solution // -//[source,bash] +//[source,bash,subs="attributes+"] //---- -//git checkout tags/370-digression-hiding-columns-in-tables +//git checkout tags/{tag-version}/370-digression-hiding-columns-in-tables //mvn clean package jetty:run //---- // @@ -509,9 +509,9 @@ // //=== Solution // -//[source,bash] +//[source,bash,subs="attributes+"] //---- -//git checkout tags/380-another-digression-icons-and-css +//git checkout tags/{tag-version}/380-another-digression-icons-and-css //mvn clean package jetty:run //---- // @@ -561,9 +561,9 @@ // //=== Solution // -//[source,bash] +//[source,bash,subs="attributes+"] //---- -//git checkout tags/390-delete-an-owner-provided-no-unpaid-visits +//git checkout tags/{tag-version}/390-delete-an-owner-provided-no-unpaid-visits //mvn clean package jetty:run //---- //
