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/01/29 17:14:44 UTC

(causeway-app-petclinic) branch graphql created (now 578b013)

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

danhaywood pushed a change to branch graphql
in repository https://gitbox.apache.org/repos/asf/causeway-app-petclinic.git


      at 578b013  minor tidyup

This branch includes the following new commits:

     new ee00802  upgrades to 2.0.0-SNAPSHOT 2024-01-29 or thereabouts
     new 18bca4e  now working
     new 578b013  minor tidyup

The 3 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.



(causeway-app-petclinic) 02/03: now working

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

danhaywood pushed a commit to branch graphql
in repository https://gitbox.apache.org/repos/asf/causeway-app-petclinic.git

commit 18bca4e87932d357275c6d15d92480451038ae86
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jan 29 17:11:34 2024 +0000

    now working
---
 module-pets-tests/pom.xml                          |   3 +
 .../java/petclinic/modules/pets/dom/pet/Pet.java   |   2 +-
 .../petclinic/modules/pets/dom/pet/Pet.layout.xml  |   6 +-
 .../modules/pets/dom/petowner/PetOwner.java        |   2 +-
 .../modules/pets/dom/petowner/PetOwner.layout.xml  |  20 +++---
 .../modules/pets/dom/petowner/PetOwners.java       |   2 +-
 .../petclinic/modules/visits/dom/visit/Visit.java  |   4 +-
 .../modules/visits/dom/visit/Visit.layout.xml      |   6 +-
 pom.xml                                            |  19 +++++-
 webapp-tests/log4j2-test.xml                       |   2 +-
 webapp-tests/pom.xml                               |  16 +++++
 .../src/test/resources/application-test.properties |  23 +++++++
 webapp/pom.xml                                     |  11 ++++
 .../services/health/HealthCheckServiceImpl.java    |   2 +-
 .../services/homepage/HomePageViewModel.java       |   2 +-
 .../services/homepage/HomePageViewModel.layout.xml |  36 ++++++-----
 .../services/homepage/VisitPlusPetOwner.java       |   2 +-
 webapp/src/main/resources/application.yml          |   8 +--
 .../config/application-SQLSERVER.properties        |   4 +-
 .../main/resources/config/application.properties   |  31 +++++++--
 webapp/src/main/resources/menubars.layout.xml      |  72 ++++++++++++---------
 webapp/src/main/resources/shiro.ini                |  30 ++++-----
 webapp/src/main/resources/static/css/page.css      |   9 +++
 .../static/images/apache-causeway/logo-48x48.png   | Bin 2622 -> 0 bytes
 webapp/src/main/resources/static/index.html        |  22 +++----
 25 files changed, 232 insertions(+), 102 deletions(-)

diff --git a/module-pets-tests/pom.xml b/module-pets-tests/pom.xml
index f999327..cc4c73d 100644
--- a/module-pets-tests/pom.xml
+++ b/module-pets-tests/pom.xml
@@ -17,6 +17,8 @@
         Integ tests for 'pets' module
     </description>
 
+    <packaging>jar</packaging>
+
     <build>
         <testResources>
             <testResource>
@@ -40,6 +42,7 @@
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>petclinic-module-pets</artifactId>
+            <scope>test</scope>
         </dependency>
 
         <!-- TESTS -->
diff --git a/module-pets/src/main/java/petclinic/modules/pets/dom/pet/Pet.java b/module-pets/src/main/java/petclinic/modules/pets/dom/pet/Pet.java
index 8814ce6..5dd419c 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/dom/pet/Pet.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/dom/pet/Pet.java
@@ -47,7 +47,7 @@ import petclinic.modules.pets.types.PetName;
     }
 )
 @EntityListeners(CausewayEntityListener.class)
-@Named("pets.Pet")
+@Named("app.pets.Pet")
 @DomainObject(entityChangePublishing = Publishing.ENABLED)
 @DomainObjectLayout()
 @NoArgsConstructor(access = AccessLevel.PUBLIC)
diff --git a/module-pets/src/main/java/petclinic/modules/pets/dom/pet/Pet.layout.xml b/module-pets/src/main/java/petclinic/modules/pets/dom/pet/Pet.layout.xml
index 1822b83..6521a52 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/dom/pet/Pet.layout.xml
+++ b/module-pets/src/main/java/petclinic/modules/pets/dom/pet/Pet.layout.xml
@@ -1,5 +1,9 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<bs3:grid xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/links http://isis.apache.org/applib/layout/links/links.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd" xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3" xmlns:cpt="http://isis.apache.org/applib/layout/component" xmlns:lnk="h [...]
+<bs3:grid
+        xsi:schemaLocation="https://causeway.apache.org/applib/layout/component https://causeway.apache.org/applib/layout/component/component.xsd https://causeway.apache.org/applib/layout/grid/bootstrap3 https://causeway.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
+        xmlns:cpt="https://causeway.apache.org/applib/layout/component"
+        xmlns:bs3="https://causeway.apache.org/applib/layout/grid/bootstrap3"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <bs3:row>
         <bs3:col span="12" unreferencedActions="true">
             <cpt:domainObject bookmarking="AS_ROOT"/>
diff --git a/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwner.java b/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwner.java
index 6053605..4273780 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwner.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwner.java
@@ -65,7 +65,7 @@ import petclinic.modules.pets.types.PhoneNumber;
         )
 })
 @EntityListeners(CausewayEntityListener.class)
-@Named("pets.PetOwner")
+@Named("app.pets.PetOwner")
 @DomainObject(entityChangePublishing = Publishing.ENABLED)
 @DomainObjectLayout()
 @NoArgsConstructor(access = AccessLevel.PUBLIC)
diff --git a/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwner.layout.xml b/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwner.layout.xml
index 4217922..13a8d8e 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwner.layout.xml
+++ b/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwner.layout.xml
@@ -1,9 +1,13 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<bs3:grid xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd" xmlns:c="http://isis.apache.org/applib/layout/component" xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<bs3:grid
+        xsi:schemaLocation="https://causeway.apache.org/applib/layout/component https://causeway.apache.org/applib/layout/component/component.xsd https://causeway.apache.org/applib/layout/grid/bootstrap3 https://causeway.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
+        xmlns:cpt="https://causeway.apache.org/applib/layout/component"
+        xmlns:bs3="https://causeway.apache.org/applib/layout/grid/bootstrap3"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
     <bs3:row>
         <bs3:col span="12" unreferencedActions="true">
-            <c:domainObject bookmarking="AS_ROOT"/>
+            <cpt:domainObject bookmarking="AS_ROOT"/>
         </bs3:col>
     </bs3:row>
     <bs3:row>
@@ -12,34 +16,34 @@
                 <bs3:tab name="General">
                     <bs3:row>
                         <bs3:col span="12">
-                            <c:fieldSet id="name" name="Name"/>
+                            <cpt:fieldSet id="name" name="Name"/>
                         </bs3:col>
                     </bs3:row>
                 </bs3:tab>
                 <bs3:tab name="Metadata">
                     <bs3:row>
                         <bs3:col span="12">
-                            <c:fieldSet name="Metadata" id="metadata"/>
+                            <cpt:fieldSet name="Metadata" id="metadata"/>
                         </bs3:col>
                     </bs3:row>
                 </bs3:tab>
                 <bs3:tab name="Other">
                     <bs3:row>
                         <bs3:col span="12">
-                            <c:fieldSet id="other" unreferencedProperties="true"/>
+                            <cpt:fieldSet id="other" unreferencedProperties="true"/>
                         </bs3:col>
                     </bs3:row>
                 </bs3:tab>
             </bs3:tabGroup>
-            <c:fieldSet id="contactDetails" name="Contact Details"/>
-            <c:fieldSet id="notes" name="Notes"/>
+            <cpt:fieldSet id="contactDetails" name="Contact Details"/>
+            <cpt:fieldSet id="notes" name="Notes"/>
         </bs3:col>
         <bs3:col span="6">
             <bs3:tabGroup  unreferencedCollections="true" collapseIfOne="false">
                 <bs3:tab name="Pets">                   <!--.-->
                     <bs3:row>
                         <bs3:col span="12">
-                            <c:collection id="pets"/>
+                            <cpt:collection id="pets"/>
                         </bs3:col>
                     </bs3:row>
                 </bs3:tab>
diff --git a/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwners.java b/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwners.java
index e435abd..5392206 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwners.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwners.java
@@ -25,7 +25,7 @@ import lombok.RequiredArgsConstructor;
 import petclinic.modules.pets.types.FirstName;
 import petclinic.modules.pets.types.LastName;
 
-@Named("pets.PetOwners")
+@Named("app.pets.PetOwners")
 @DomainService(nature = NatureOfService.VIEW)
 @Priority(PriorityPrecedence.EARLY)
 @RequiredArgsConstructor(onConstructor_ = {@Inject} )
diff --git a/module-visits/src/main/java/petclinic/modules/visits/dom/visit/Visit.java b/module-visits/src/main/java/petclinic/modules/visits/dom/visit/Visit.java
index d5bf491..1c630be 100644
--- a/module-visits/src/main/java/petclinic/modules/visits/dom/visit/Visit.java
+++ b/module-visits/src/main/java/petclinic/modules/visits/dom/visit/Visit.java
@@ -55,7 +55,7 @@ import petclinic.modules.visits.types.Reason;
     }
 )
 @EntityListeners(CausewayEntityListener.class)
-@Named("visits.Visit")
+@Named("app.visits.Visit")
 @DomainObject(entityChangePublishing = Publishing.ENABLED)
 @DomainObjectLayout()
 @NoArgsConstructor(access = AccessLevel.PUBLIC)
@@ -100,7 +100,7 @@ public class Visit implements Comparable<Visit> {
     private LocalDateTime visitAt;
 
     @Reason
-    @Column(name = "reason", length = FirstName.MAX_LEN, nullable = false)
+    @Column(name = "reason", length = Reason.MAX_LEN, nullable = false)
     @Getter @Setter
     @PropertyLayout(fieldSetId = "details", sequence = "1")
     private String reason;
diff --git a/module-visits/src/main/java/petclinic/modules/visits/dom/visit/Visit.layout.xml b/module-visits/src/main/java/petclinic/modules/visits/dom/visit/Visit.layout.xml
index a1a39a3..eeaf165 100644
--- a/module-visits/src/main/java/petclinic/modules/visits/dom/visit/Visit.layout.xml
+++ b/module-visits/src/main/java/petclinic/modules/visits/dom/visit/Visit.layout.xml
@@ -1,5 +1,9 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<bs3:grid xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/links http://isis.apache.org/applib/layout/links/links.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd" xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3" xmlns:cpt="http://isis.apache.org/applib/layout/component" xmlns:lnk="h [...]
+<bs3:grid
+        xsi:schemaLocation="https://causeway.apache.org/applib/layout/component https://causeway.apache.org/applib/layout/component/component.xsd https://causeway.apache.org/applib/layout/grid/bootstrap3 https://causeway.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
+        xmlns:cpt="https://causeway.apache.org/applib/layout/component"
+        xmlns:bs3="https://causeway.apache.org/applib/layout/grid/bootstrap3"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <bs3:row>
         <bs3:col span="12" unreferencedActions="true">
             <cpt:domainObject bookmarking="AS_ROOT"/>
diff --git a/pom.xml b/pom.xml
index 3dcd0e3..55a205f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,8 +21,12 @@
     <properties>
         <causeway.version>2.0.0-SNAPSHOT</causeway.version>
         <java.version>21</java.version>
-        <maven-cucumber-reporting.version>5.3.0</maven-cucumber-reporting.version>
+
         <archunit.version>0.14.1</archunit.version>
+        <datasource-proxy-spring-boot-starter.version>1.8.1</datasource-proxy-spring-boot-starter.version>
+        <maven-cucumber-reporting.version>5.3.0</maven-cucumber-reporting.version>
+        <sql-formatter.version>2.0.4</sql-formatter.version>
+
         <skipBDD>${skipTests}</skipBDD>
     </properties>
 
@@ -60,7 +64,20 @@
                 <type>test-jar</type>
             </dependency>
 
+
+            <dependency>
+                <groupId>com.github.gavlyukovskiy</groupId>
+                <artifactId>datasource-proxy-spring-boot-starter</artifactId>
+                <version>${datasource-proxy-spring-boot-starter.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.github.vertical-blank</groupId>
+                <artifactId>sql-formatter</artifactId>
+                <version>${sql-formatter.version}</version>
+            </dependency>
+
         </dependencies>
+
     </dependencyManagement>
 
     <dependencies>
diff --git a/webapp-tests/log4j2-test.xml b/webapp-tests/log4j2-test.xml
index 60e8974..d0a1d53 100644
--- a/webapp-tests/log4j2-test.xml
+++ b/webapp-tests/log4j2-test.xml
@@ -40,7 +40,7 @@
             <AppenderRef ref="Console" />
         </Root>
 
-        <logger name="org.apache.isis.core.runtimeservices.i18n.po.PoWriter" level="info">
+        <logger name="org.apache.causeway.core.runtimeservices.i18n.po.PoWriter" level="info">
             <AppenderRef ref="TranslationsPoFile"/>
         </logger>
 
diff --git a/webapp-tests/pom.xml b/webapp-tests/pom.xml
index ca0b2e5..4da4a06 100644
--- a/webapp-tests/pom.xml
+++ b/webapp-tests/pom.xml
@@ -25,6 +25,9 @@
             <testResource>
                 <filtering>false</filtering>
                 <directory>src/test/java</directory>
+                <includes>
+                    <include>**</include>
+                </includes>
                 <excludes>
                     <exclude>**/*.java</exclude>
                 </excludes>
@@ -72,6 +75,19 @@
             <scope>test</scope>
         </dependency>
 
+        <dependency>
+            <groupId>com.github.gavlyukovskiy</groupId>
+            <artifactId>datasource-proxy-spring-boot-starter</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.github.vertical-blank</groupId>
+            <artifactId>sql-formatter</artifactId>
+            <version>${sql-formatter.version}</version>
+            <scope>test</scope>
+        </dependency>
+
     </dependencies>
 
 </project>
diff --git a/webapp-tests/src/test/resources/application-test.properties b/webapp-tests/src/test/resources/application-test.properties
new file mode 100644
index 0000000..b8d0687
--- /dev/null
+++ b/webapp-tests/src/test/resources/application-test.properties
@@ -0,0 +1,23 @@
+# One of logging libraries (slf4j, jul, common, sysout)
+decorator.datasource.datasource-proxy.logging=slf4j
+
+decorator.datasource.datasource-proxy.query.enable-logging=true
+decorator.datasource.datasource-proxy.query.log-level=debug
+# Logger name to log all queries, default depends on chosen logging, e.g. net.ttddyy.dsproxy.listener.logging.SLF4JQueryLoggingListener
+decorator.datasource.datasource-proxy.query.logger-name=
+
+decorator.datasource.datasource-proxy.slow-query.enable-logging=true
+decorator.datasource.datasource-proxy.slow-query.log-level=warn
+decorator.datasource.datasource-proxy.slow-query.logger-name=
+# Number of seconds to consider query as slow and log it
+decorator.datasource.datasource-proxy.slow-query.threshold=300
+
+decorator.datasource.datasource-proxy.multiline=true
+
+# Formats the SQL for better readability. Uses Hibernate's formatter if present on the class path. If you opted in for a different JPA provider you need to add https://github.com/vertical-blank/sql-formatter as a runtime dependency to your app  to enable this.
+# Mutually exclusive with json-format=true
+decorator.datasource.datasource-proxy.format-sql=false
+decorator.datasource.datasource-proxy.json-format=false
+
+# Enable Query Metrics
+decorator.datasource.datasource-proxy.count-query=false
\ No newline at end of file
diff --git a/webapp/pom.xml b/webapp/pom.xml
index 5383f52..4e12c16 100644
--- a/webapp/pom.xml
+++ b/webapp/pom.xml
@@ -113,6 +113,17 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-log4j2</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>com.github.gavlyukovskiy</groupId>
+            <artifactId>datasource-proxy-spring-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.github.vertical-blank</groupId>
+            <artifactId>sql-formatter</artifactId>
+        </dependency>
+
     </dependencies>
 
     <profiles>
diff --git a/webapp/src/main/java/petclinic/webapp/application/services/health/HealthCheckServiceImpl.java b/webapp/src/main/java/petclinic/webapp/application/services/health/HealthCheckServiceImpl.java
index 816f4fc..b68eb4f 100644
--- a/webapp/src/main/java/petclinic/webapp/application/services/health/HealthCheckServiceImpl.java
+++ b/webapp/src/main/java/petclinic/webapp/application/services/health/HealthCheckServiceImpl.java
@@ -11,7 +11,7 @@ import org.apache.causeway.applib.services.health.HealthCheckService;
 import petclinic.modules.pets.dom.petowner.PetOwners;
 
 @Service
-@Named("petclinic.HealthCheckServiceImpl")
+@Named("app.petclinic.HealthCheckServiceImpl")
 public class HealthCheckServiceImpl implements HealthCheckService {
 
     private final PetOwners petOwners;
diff --git a/webapp/src/main/java/petclinic/webapp/application/services/homepage/HomePageViewModel.java b/webapp/src/main/java/petclinic/webapp/application/services/homepage/HomePageViewModel.java
index 22155af..a2731c7 100644
--- a/webapp/src/main/java/petclinic/webapp/application/services/homepage/HomePageViewModel.java
+++ b/webapp/src/main/java/petclinic/webapp/application/services/homepage/HomePageViewModel.java
@@ -17,7 +17,7 @@ import petclinic.modules.pets.dom.petowner.PetOwner;
 import petclinic.modules.pets.dom.petowner.PetOwnerRepository;
 import petclinic.modules.visits.dom.visit.VisitRepository;
 
-@Named("petclinic.HomePageViewModel")
+@Named("app.petclinic.HomePageViewModel")
 @DomainObject(nature = Nature.VIEW_MODEL)
 @HomePage
 @DomainObjectLayout()
diff --git a/webapp/src/main/java/petclinic/webapp/application/services/homepage/HomePageViewModel.layout.xml b/webapp/src/main/java/petclinic/webapp/application/services/homepage/HomePageViewModel.layout.xml
index 14eebe6..a815037 100644
--- a/webapp/src/main/java/petclinic/webapp/application/services/homepage/HomePageViewModel.layout.xml
+++ b/webapp/src/main/java/petclinic/webapp/application/services/homepage/HomePageViewModel.layout.xml
@@ -1,20 +1,24 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<bs3:grid xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd" xmlns="http://isis.apache.org/applib/layout/component" xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<bs3:grid
+        xsi:schemaLocation="https://causeway.apache.org/applib/layout/component https://causeway.apache.org/applib/layout/component/component.xsd https://causeway.apache.org/applib/layout/grid/bootstrap3 https://causeway.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
+        xmlns:cpt="https://causeway.apache.org/applib/layout/component"
+        xmlns:bs3="https://causeway.apache.org/applib/layout/grid/bootstrap3"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <bs3:row>
         <bs3:col span="12">
             <bs3:row>
                 <bs3:col span="12" unreferencedActions="true">
-                    <domainObject/>
-                    <action id="bookVisit"/>
-                    <action id="clearHints" hidden="EVERYWHERE"/>
-                    <action id="impersonate" hidden="EVERYWHERE"/>
-                    <action id="impersonateWithRoles" hidden="EVERYWHERE"/>
-                    <action id="stopImpersonating" hidden="EVERYWHERE"/>
-                    <action id="downloadLayoutXml" hidden="EVERYWHERE"/>
-                    <action id="inspectMetamodel" hidden="EVERYWHERE"/>
-                    <action id="rebuildMetamodel" hidden="EVERYWHERE"/>
-                    <action id="downloadMetamodelXml" hidden="EVERYWHERE"/>
-                    <action id="openRestApi" hidden="EVERYWHERE"/>
+                    <cpt:domainObject/>
+                    <cpt:action id="bookVisit"/>
+                    <cpt:action id="clearHints" hidden="EVERYWHERE"/>
+                    <cpt:action id="impersonate" hidden="EVERYWHERE"/>
+                    <cpt:action id="impersonateWithRoles" hidden="EVERYWHERE"/>
+                    <cpt:action id="stopImpersonating" hidden="EVERYWHERE"/>
+                    <cpt:action id="downloadLayoutXml" hidden="EVERYWHERE"/>
+                    <cpt:action id="inspectMetamodel" hidden="EVERYWHERE"/>
+                    <cpt:action id="rebuildMetamodel" hidden="EVERYWHERE"/>
+                    <cpt:action id="downloadMetamodelXml" hidden="EVERYWHERE"/>
+                    <cpt:action id="openRestApi" hidden="EVERYWHERE"/>
                 </bs3:col>
             </bs3:row>
         </bs3:col>
@@ -23,20 +27,20 @@
         <bs3:col span="12" unreferencedCollections="true">
             <bs3:row>
                 <bs3:col span="4">
-                    <collection id="petOwners" defaultView="table"/>
+                    <cpt:collection id="petOwners" defaultView="table"/>
                 </bs3:col>
                 <bs3:col span="4">
-                    <collection id="pets" defaultView="table"/>
+                    <cpt:collection id="pets" defaultView="table"/>
                 </bs3:col>
                 <bs3:col span="4">
-                    <collection id="visits" defaultView="table"/>
+                    <cpt:collection id="visits" defaultView="table"/>
                 </bs3:col>
             </bs3:row>
         </bs3:col>
     </bs3:row>
     <bs3:row>
         <bs3:col span="0">
-            <fieldSet name="General" id="general" unreferencedProperties="true"/>
+            <cpt:fieldSet name="General" id="general" unreferencedProperties="true"/>
         </bs3:col>
     </bs3:row>
 </bs3:grid>
diff --git a/webapp/src/main/java/petclinic/webapp/application/services/homepage/VisitPlusPetOwner.java b/webapp/src/main/java/petclinic/webapp/application/services/homepage/VisitPlusPetOwner.java
index 6959ff0..f934d3f 100644
--- a/webapp/src/main/java/petclinic/webapp/application/services/homepage/VisitPlusPetOwner.java
+++ b/webapp/src/main/java/petclinic/webapp/application/services/homepage/VisitPlusPetOwner.java
@@ -17,7 +17,7 @@ import petclinic.modules.pets.dom.pet.Pet;
 import petclinic.modules.pets.dom.petowner.PetOwner;
 import petclinic.modules.visits.dom.visit.Visit;
 
-@Named("petclinic.VisitPlusPetOwner")
+@Named("app.petclinic.VisitPlusPetOwner")
 @DomainObject(nature=Nature.VIEW_MODEL)
 @DomainObjectLayout(named = "Visit")
 @XmlRootElement
diff --git a/webapp/src/main/resources/application.yml b/webapp/src/main/resources/application.yml
index 357fb01..84ba96d 100644
--- a/webapp/src/main/resources/application.yml
+++ b/webapp/src/main/resources/application.yml
@@ -40,7 +40,7 @@ causeway:
       application:
         about: PetClinic
         brand-logo-signin: images/apache-causeway/logo-banner-591x120.png
-        brand-logo-header: images/apache-causeway/logo-48x48.png
+        brand-logo-header: images/apache-causeway/logo-65x48.png
         favicon-url: images/favicon.png
         menubars-layout-file: menubars.layout.xml
         name: PetClinic
@@ -68,11 +68,9 @@ causeway:
       api-variant: query_with_mutations_non_spec_compliant
       authentication:
         fallback:
-          username: sven
+          username: "graphql"
           roles:
-            - simple-superuser
-            - foo
-            - bar
+            - "org.apache.causeway.applib.services.sudo.SudoService#accessAll"
 
   testing:
     fixtures:
diff --git a/webapp/src/main/resources/config/application-SQLSERVER.properties b/webapp/src/main/resources/config/application-SQLSERVER.properties
index 561b8a4..cf4281e 100644
--- a/webapp/src/main/resources/config/application-SQLSERVER.properties
+++ b/webapp/src/main/resources/config/application-SQLSERVER.properties
@@ -25,7 +25,7 @@ spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
 spring.datasource.username=petclinic
 spring.datasource.password=petclinic
 
-#isis.persistence.schema.create-schema-sql-template=   (use flyway instead)
-isis.persistence.schema.auto-create-schemas=
+#causeway.persistence.schema.create-schema-sql-template=   (use flyway instead)
+causeway.persistence.schema.auto-create-schemas=
 
 
diff --git a/webapp/src/main/resources/config/application.properties b/webapp/src/main/resources/config/application.properties
index 9c9143c..c56384e 100644
--- a/webapp/src/main/resources/config/application.properties
+++ b/webapp/src/main/resources/config/application.properties
@@ -14,8 +14,8 @@ spring.sql.init.platform=h2
 spring.datasource.url=jdbc:h2:mem:petclinic;DATABASE_TO_UPPER=false
 spring.datasource.driver-class-name=org.h2.Driver
 
-isis.persistence.schema.create-schema-sql-template=CREATE SCHEMA IF NOT EXISTS %s
-isis.persistence.schema.auto-create-schemas=pets,visits
+causeway.persistence.schema.create-schema-sql-template=CREATE SCHEMA IF NOT EXISTS %s
+causeway.persistence.schema.auto-create-schemas=pets,visits
 
 #eclipselink.weaving=true
 eclipselink.deploy-on-startup=true
@@ -25,7 +25,30 @@ eclipselink.create-ddl-jdbc-file-name=create-db-schema.sql
 eclipselink.application-location=.
 eclipselink.jpa.upper-case-column-names=false
 
-# uncomment to run during bootstrap
-#isis.testing.fixtures.initial-script = petclinic.webapp.application.fixture.scenarios.PetClinicDemo
 
 
+
+
+# One of logging libraries (slf4j, jul, common, sysout)
+decorator.datasource.datasource-proxy.logging=slf4j
+
+decorator.datasource.datasource-proxy.query.enable-logging=true
+decorator.datasource.datasource-proxy.query.log-level=debug
+# Logger name to log all queries, default depends on chosen logging, e.g. net.ttddyy.dsproxy.listener.logging.SLF4JQueryLoggingListener
+decorator.datasource.datasource-proxy.query.logger-name=
+
+decorator.datasource.datasource-proxy.slow-query.enable-logging=true
+decorator.datasource.datasource-proxy.slow-query.log-level=warn
+decorator.datasource.datasource-proxy.slow-query.logger-name=
+# Number of seconds to consider query as slow and log it
+decorator.datasource.datasource-proxy.slow-query.threshold=300
+
+decorator.datasource.datasource-proxy.multiline=true
+
+# Formats the SQL for better readability. Uses Hibernate's formatter if present on the class path. If you opted in for a different JPA provider you need to add https://github.com/vertical-blank/sql-formatter as a runtime dependency to your app  to enable this.
+# Mutually exclusive with json-format=true
+decorator.datasource.datasource-proxy.format-sql=false
+decorator.datasource.datasource-proxy.json-format=false
+
+# Enable Query Metrics
+decorator.datasource.datasource-proxy.count-query=false
\ No newline at end of file
diff --git a/webapp/src/main/resources/menubars.layout.xml b/webapp/src/main/resources/menubars.layout.xml
index ddf60ba..f9861a7 100644
--- a/webapp/src/main/resources/menubars.layout.xml
+++ b/webapp/src/main/resources/menubars.layout.xml
@@ -1,5 +1,9 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<mb3:menuBars xsi:schemaLocation="http://isis.apache.org/applib/layout/menubars/bootstrap3 http://isis.apache.org/applib/layout/menubars/bootstrap3/menubars.xsd http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/links http://isis.apache.org/applib/layout/links/links.xsd" xmlns:cpt="http://isis.apache.org/applib/layout/component" xmlns:lnk="http://isis.apache.org/applib/layout/links" xmlns:mb3="h [...]
+<mb3:menuBars
+        xsi:schemaLocation="https://causeway.apache.org/applib/layout/menubars/bootstrap3 https://causeway.apache.org/applib/layout/menubars/bootstrap3/menubars.xsd https://causeway.apache.org/applib/layout/component https://causeway.apache.org/applib/layout/component/component.xsd"
+        xmlns:cpt="https://causeway.apache.org/applib/layout/component"
+        xmlns:mb3="https://causeway.apache.org/applib/layout/menubars/bootstrap3"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <mb3:primary>
         <mb3:menu>
             <mb3:named>Pet Owners</mb3:named>
@@ -19,63 +23,73 @@
             <mb3:named>Prototyping</mb3:named>
             <mb3:section>
                 <mb3:named>Fixtures</mb3:named>
-                <mb3:serviceAction objectType="isis.testing.fixtures.FixtureScripts" id="runFixtureScript"/>
-                <mb3:serviceAction objectType="isis.testing.fixtures.FixtureScripts" id="recreateObjectsAndReturnFirst"/>
+                <mb3:serviceAction objectType="causeway.testing.fixtures.FixtureScripts" id="runFixtureScript"/>
+                <mb3:serviceAction objectType="causeway.testing.fixtures.FixtureScripts" id="recreateObjectsAndReturnFirst"/>
             </mb3:section>
             <mb3:section>
                 <mb3:named>Layouts</mb3:named>
-                <mb3:serviceAction objectType="isis.applib.LayoutServiceMenu" id="downloadLayouts"/>
-                <mb3:serviceAction objectType="isis.applib.LayoutServiceMenu" id="downloadMenuBarsLayout"/>
+                <mb3:serviceAction objectType="causeway.applib.LayoutServiceMenu" id="downloadLayouts"/>
+                <mb3:serviceAction objectType="causeway.applib.LayoutServiceMenu" id="downloadMenuBarsLayout"/>
+                <mb3:serviceAction objectType="causeway.ext.layoutGithub.LayoutLoaderMenu" id="enableDynamicLayoutLoading"/>
+                <mb3:serviceAction objectType="causeway.ext.layoutGithub.LayoutLoaderMenu" id="disableDynamicLayoutLoading"/>
             </mb3:section>
             <mb3:section>
                 <mb3:named>Meta Model and Features</mb3:named>
-                <mb3:serviceAction objectType="isis.applib.MetaModelServiceMenu" id="downloadMetaModelXml"/>
-                <mb3:serviceAction objectType="isis.applib.MetaModelServiceMenu" id="downloadMetaModelCsv"/>
-                <mb3:serviceAction objectType="isis.applib.MetaModelServiceMenu" id="downloadMetaModelAscii"/>
-                <mb3:serviceAction objectType="isis.applib.MetaModelServiceMenu" id="downloadMetaModelDiff"/>
-                <mb3:serviceAction objectType="isis.feat.ApplicationFeatureMenu" id="allNamespaces"/>
-                <mb3:serviceAction objectType="isis.feat.ApplicationFeatureMenu" id="allTypes"/>
-                <mb3:serviceAction objectType="isis.feat.ApplicationFeatureMenu" id="allActions"/>
-                <mb3:serviceAction objectType="isis.feat.ApplicationFeatureMenu" id="allProperties"/>
-                <mb3:serviceAction objectType="isis.feat.ApplicationFeatureMenu" id="allCollections"/>
+                <mb3:serviceAction objectType="causeway.applib.MetaModelServiceMenu" id="downloadMetaModel"/>
+                <mb3:serviceAction objectType="causeway.applib.MetaModelServiceMenu" id="downloadMetaModelDiff"/>
+                <mb3:serviceAction objectType="causeway.feat.ApplicationFeatureMenu" id="allNamespaces"/>
+                <mb3:serviceAction objectType="causeway.feat.ApplicationFeatureMenu" id="allTypes"/>
+                <mb3:serviceAction objectType="causeway.feat.ApplicationFeatureMenu" id="allActions"/>
+                <mb3:serviceAction objectType="causeway.feat.ApplicationFeatureMenu" id="allProperties"/>
+                <mb3:serviceAction objectType="causeway.feat.ApplicationFeatureMenu" id="allCollections"/>
             </mb3:section>
             <mb3:section>
                 <mb3:named>Persistence</mb3:named>
-                <mb3:serviceAction objectType="isis.persistence.jdo.JdoMetamodelMenu" id="downloadMetamodels"/>
-                <mb3:serviceAction objectType="isis.ext.h2Console.H2ManagerMenu" id="openH2Console"/>
+                <mb3:serviceAction objectType="causeway.persistence.jdo.JdoMetamodelMenu" id="downloadMetamodels"/>
+                <mb3:serviceAction objectType="causeway.ext.h2Console.H2ManagerMenu" id="openH2Console"/>
             </mb3:section>
             <mb3:section>
                 <mb3:named>REST API</mb3:named>
-                <mb3:serviceAction objectType="isis.viewer.restfulobjects.SwaggerServiceMenu" id="openSwaggerUi"/>
-                <mb3:serviceAction objectType="isis.viewer.restfulobjects.SwaggerServiceMenu" id="openRestApi"/>
-                <mb3:serviceAction objectType="isis.viewer.restfulobjects.SwaggerServiceMenu" id="downloadSwaggerSchemaDefinition"/>
+                <mb3:serviceAction objectType="causeway.viewer.roRendering.SwaggerServiceMenu" id="openSwaggerUi"/>
+                <mb3:serviceAction objectType="causeway.viewer.roRendering.SwaggerServiceMenu" id="openRestApi"/>
+                <mb3:serviceAction objectType="causeway.viewer.roRendering.SwaggerServiceMenu" id="downloadSwaggerSchemaDefinition"/>
             </mb3:section>
             <mb3:section>
                 <mb3:named>i18n</mb3:named>
-                <mb3:serviceAction objectType="isis.applib.TranslationServicePoMenu" id="downloadTranslations"/>
-                <mb3:serviceAction objectType="isis.applib.TranslationServicePoMenu" id="resetTranslationCache"/>
-                <mb3:serviceAction objectType="isis.applib.TranslationServicePoMenu" id="switchToReadingTranslations"/>
-                <mb3:serviceAction objectType="isis.applib.TranslationServicePoMenu" id="switchToWritingTranslations"/>
+                <mb3:serviceAction objectType="causeway.applib.TranslationServicePoMenu" id="downloadTranslations"/>
+                <mb3:serviceAction objectType="causeway.applib.TranslationServicePoMenu" id="resetTranslationCache"/>
+                <mb3:serviceAction objectType="causeway.applib.TranslationServicePoMenu" id="switchToReadingTranslations"/>
+                <mb3:serviceAction objectType="causeway.applib.TranslationServicePoMenu" id="switchToWritingTranslations"/>
+            </mb3:section>
+            <mb3:section>
+                <mb3:named>Manual Testing</mb3:named>
+                <mb3:serviceAction objectType="causeway.applib.SitemapServiceMenu" id="downloadSitemap" >
+                    <cpt:named>Download Site-Map Template (Adoc)</cpt:named>
+                </mb3:serviceAction>
             </mb3:section>
         </mb3:menu>
     </mb3:secondary>
     <mb3:tertiary>
         <mb3:menu>
             <mb3:named/>
+            <mb3:section>
+                <mb3:named>Documentation</mb3:named>
+                <mb3:serviceAction objectType="causeway.ext.docgen.DocumentationMenu" id="help"/>
+            </mb3:section>
             <mb3:section>
                 <mb3:named>Configuration</mb3:named>
-                <mb3:serviceAction objectType="isis.conf.ConfigurationMenu" id="configuration"/>
+                <mb3:serviceAction objectType="causeway.conf.ConfigurationMenu" id="configuration"/>
             </mb3:section>
             <mb3:section>
                 <mb3:named>Impersonate</mb3:named>
-                <mb3:serviceAction objectType="isis.sudo.ImpersonateMenu" id="impersonate"/>
-                <mb3:serviceAction objectType="isis.sudo.ImpersonateMenu" id="impersonateWithRoles"/>
-                <mb3:serviceAction objectType="isis.applib.ImpersonateStopMenu" id="stopImpersonating"/>
+                <mb3:serviceAction objectType="causeway.sudo.ImpersonateMenu" id="impersonate"/>
+                <mb3:serviceAction objectType="causeway.sudo.ImpersonateMenu" id="impersonateWithRoles"/>
+                <mb3:serviceAction objectType="causeway.applib.ImpersonateStopMenu" id="stopImpersonating"/>
             </mb3:section>
             <mb3:section>
                 <mb3:named>Security</mb3:named>
-                <mb3:serviceAction objectType="isis.applib.UserMenu" id="me"/>
-                <mb3:serviceAction objectType="isis.security.LogoutMenu" id="logout"/>
+                <mb3:serviceAction objectType="causeway.applib.UserMenu" id="me"/>
+                <mb3:serviceAction objectType="causeway.security.LogoutMenu" id="logout"/>
             </mb3:section>
         </mb3:menu>
     </mb3:tertiary>
diff --git a/webapp/src/main/resources/shiro.ini b/webapp/src/main/resources/shiro.ini
index 98daf81..03a729d 100644
--- a/webapp/src/main/resources/shiro.ini
+++ b/webapp/src/main/resources/shiro.ini
@@ -16,12 +16,13 @@ securityManager.realms = $iniRealm
 # user = password, role1, role2, role3, ...
 
 
-sven = pass, admin_role
+sven = pass, admin_role, org.apache.causeway.applib.services.sudo.SudoService#accessAll
 dick = pass, simple_role, default_role
 bob  = pass, simple_role, default_role, fixtures_role
 joe  = pass, simple_role, default_role
 guest = guest, guest_role, default_role
 
+graphql = pass, org.apache.causeway.applib.services.sudo.SudoService#accessAll
 
 
 # -----------------------------------------------------------------------------
@@ -35,18 +36,17 @@ guest = guest, guest_role, default_role
 # role = perm1, perm2, perm3, ...
 # perm in format: logicalTypeNamespace:logicalTypeSimpleName:memberName:r,w
 
-simple_role    = pets
-guest_role     = pets:PetOwners:findByName:*,\
-                 pets:PetOwners:listAll:*,\
-                 pets:*:*:r
 admin_role     = *
-default_role   = isis.applib,\
-                 isis.security
-fixtures_role  = isis.testing.fixtures
-features_role  = isis.feat
-metamodel_role = isis.metamodel
-h2_role        = isis.ext.h2Console
-jdo_role       = isis.persistence.jdo
-swagger_role   = isis.viewer.restfulobjects
-conf_role      = isis.conf
-sudo_role      = isis.sudo
+guest_role     = app.pets:PetOwners:findByName:*,\
+                 app.pets:PetOwners:listAll:*,\
+                 app.pets:*:*:r
+default_role   = causeway.applib,\
+                 causeway.security
+conf_role      = causeway.conf
+h2_role        = causeway.ext.h2Console
+features_role  = causeway.feat
+schema_role    = causeway.schema
+sudo_role      = causeway.sudo
+fixtures_role  = causeway.testing.fixtures
+jdo_role       = causeway.persistence.jdo
+swagger_role   = causeway.viewer.roRendering
diff --git a/webapp/src/main/resources/static/css/page.css b/webapp/src/main/resources/static/css/page.css
index 487d6a8..3c2454c 100644
--- a/webapp/src/main/resources/static/css/page.css
+++ b/webapp/src/main/resources/static/css/page.css
@@ -25,3 +25,12 @@ th, td {
     margin: 8px auto;
     padding: 12px;
 }
+.center {
+    display: block;
+    margin-left: auto;
+    margin-right: auto;
+}
+.centered-text {
+    font-size: larger;
+    text-align: center;
+}
diff --git a/webapp/src/main/resources/static/images/apache-causeway/logo-48x48.png b/webapp/src/main/resources/static/images/apache-causeway/logo-48x48.png
deleted file mode 100644
index 08e012c..0000000
Binary files a/webapp/src/main/resources/static/images/apache-causeway/logo-48x48.png and /dev/null differ
diff --git a/webapp/src/main/resources/static/index.html b/webapp/src/main/resources/static/index.html
index 1728b16..0fa02cb 100644
--- a/webapp/src/main/resources/static/index.html
+++ b/webapp/src/main/resources/static/index.html
@@ -2,19 +2,24 @@
 <html>
     <head>
         <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-        <title>Apache Isis&trade; PetClinic app</title>
+        <title>Apache Causeway&trade; PetClinic app</title>
 
         <link rel="stylesheet" type="text/css" href="css/page.css">
     </head>
     <body>
         <div id="wrapper">
-            <img alt="Isis Logo" src="images/apache-isis/logo.png" />
+            <img alt="Causeway Logo" src="images/apache-causeway/logo.png" class="center" />
 
-            <p>
-                This is a PetClinic app implemented as an <a href="http://isis.apache.org">Apache Isis</a> application.
+            <br/>
+            <br/>
+            <p class="centered-text">
+                This is a PetClinic app implemented as an <a href="https://causeway.apache.org">Apache Causeway</a> application.
                 <br/>
             </p>
 
+            <br/>
+            <br/>
+
             <p>To access the app:</p>
             <ul>
                 <li>
@@ -43,13 +48,8 @@
                         </b>
                     </p>
                     <p>
-                        provides access to a Swagger UI for convenient access
-                        to (a subset of) the automatically generated REST API.
-                    </p>
-                    <p>
-                        The full backend API (at <a href="restful/">restful/</a>) renders both simple and also richer
-                        hypermedia representations of domain objects, the latter conforming to the
-                        <a href="https://www.restfulobjects.org"  target="_blank">Restful Objects</a> spec.
+                        provides access to a Swagger UI for convenient access to (a subset of) the
+                        automatically generated REST API (accessible at <a href="restful/">restful/</a>).
                     </p>
                 </li>
             </ul>


(causeway-app-petclinic) 01/03: upgrades to 2.0.0-SNAPSHOT 2024-01-29 or thereabouts

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

danhaywood pushed a commit to branch graphql
in repository https://gitbox.apache.org/repos/asf/causeway-app-petclinic.git

commit ee00802d175f6057d857ca7068225aa1cfc5c5ee
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jan 29 15:42:57 2024 +0000

    upgrades to 2.0.0-SNAPSHOT 2024-01-29 or thereabouts
---
 .editorconfig                                      | 373 +++++++++++++++++++++
 module-pets-tests/pom.xml                          |  36 +-
 .../modules/pets/dom/petowner/PetOwner_Test.java   |   6 +-
 .../modules/pets/dom/petowner/PetOwners_Test.java  |   4 +-
 .../integtests/PetsModuleIntegTestAbstract.java    |  26 +-
 .../pets/integtests/tests/PetOwner_IntegTest.java  |   4 +-
 .../pets/integtests/tests/PetOwners_IntegTest.java |   2 +-
 .../src/test/resources/application-test.yml        |   2 +-
 module-pets/pom.xml                                |  14 +-
 .../java/petclinic/modules/pets/PetsModule.java    |   4 +-
 .../java/petclinic/modules/pets/dom/pet/Pet.java   |  21 +-
 .../pets/dom/pet/PetOwnerForPetsSubscriber.java    |   2 +-
 .../modules/pets/dom/pet/PetOwner_addPet.java      |  10 +-
 .../modules/pets/dom/pet/PetOwner_pets.java        |   4 +-
 .../modules/pets/dom/pet/PetOwner_removePet.java   |  10 +-
 .../modules/pets/dom/petowner/PetOwner.java        |  42 +--
 .../modules/pets/dom/petowner/PetOwner_delete.java |  12 +-
 .../modules/pets/dom/petowner/PetOwners.java       |  39 +--
 .../modules/pets/fixture/pet/PetBuilder.java       |   2 +-
 .../modules/pets/fixture/pet/Pet_persona.java      |  13 +-
 .../pets/fixture/petowner/PetOwnerBuilder.java     |   2 +-
 .../pets/fixture/petowner/PetOwner_persona.java    |  13 +-
 .../petclinic/modules/pets/types/EmailAddress.java |  12 +-
 .../petclinic/modules/pets/types/FirstName.java    |   8 +-
 .../petclinic/modules/pets/types/LastName.java     |   8 +-
 .../java/petclinic/modules/pets/types/Notes.java   |  12 +-
 .../java/petclinic/modules/pets/types/PetName.java |   8 +-
 .../petclinic/modules/pets/types/PhoneNumber.java  |  12 +-
 module-visits/pom.xml                              |  35 +-
 .../petclinic/modules/visits/VisitsModule.java     |   4 +-
 .../visits/contributions/pet/Pet_bookVisit.java    |  12 +-
 .../visits/contributions/pet/Pet_visits.java       |   4 +-
 .../petclinic/modules/visits/dom/visit/Visit.java  |  22 +-
 .../subscribers/PetOwnerForVisitsSubscriber.java   |   4 +-
 .../petclinic/modules/visits/types/Reason.java     |  12 +-
 .../contributions/pet/Pet_bookVisit_Test.java      |   4 +-
 .../integtest/VisitsModuleIntegTestAbstract.java   |  30 +-
 .../integtest/tests/Pet_bookVisit_IntegTest.java   |   8 +-
 .../src/test/resources/application-test.yml        |   2 +-
 pom.xml                                            |  12 +-
 webapp-tests/pom.xml                               |  31 +-
 .../webapp/integtests/WebAppIntegTestAbstract.java |  26 +-
 .../metamodel/SwaggerExport_IntegTest.java         |  20 +-
 .../metamodel/ValidateDomainModel_IntegTest.java   |   4 +-
 .../webapp/integtests/smoke/Smoke_IntegTest.java   |   4 +-
 .../src/test/resources/application-test.yml        |   6 +-
 webapp/pom.xml                                     |  22 +-
 .../main/java/petclinic/webapp/AppManifest.java    |  38 ++-
 .../main/java/petclinic/webapp/PetClinicApp.java   |   4 +-
 .../fixture/scenarios/PetClinicDemo.java           |   4 +-
 .../services/health/HealthCheckServiceImpl.java    |   4 +-
 .../services/homepage/HomePageViewModel.java       |  15 +-
 .../homepage/HomePageViewModel_bookVisit.java      |   6 +-
 .../services/homepage/VisitPlusPetOwner.java       |  17 +-
 .../webapp/custom/restapi/CustomController.java    |  16 +-
 .../petclinic/webapp/quartz/job/SampleJob.java     |  17 +-
 webapp/src/main/resources/application-custom.yml   |   2 +-
 webapp/src/main/resources/application-dev.yml      |   2 +-
 webapp/src/main/resources/application.yml          |  97 +++++-
 .../logo-48x48.png                                 | Bin
 .../static/images/apache-causeway/logo-65x48.png   | Bin 0 -> 2198 bytes
 .../images/apache-causeway/logo-banner-591x120.png | Bin 0 -> 6143 bytes
 .../static/images/apache-causeway/logo.png         | Bin 0 -> 9155 bytes
 .../resources/static/images/apache-isis/logo.png   | Bin 14160 -> 0 bytes
 webapp/src/main/resources/static/index.html        |  12 +-
 65 files changed, 843 insertions(+), 354 deletions(-)

diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..5c99ed8
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,373 @@
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+indent_size = 4
+indent_style = space
+insert_final_newline = false
+max_line_length = 120
+tab_width = 4
+ij_continuation_indent_size = 8
+ij_formatter_off_tag = @formatter:off
+ij_formatter_on_tag = @formatter:on
+ij_formatter_tags_enabled = false
+ij_smart_tabs = false
+ij_visual_guides = none
+ij_wrap_on_typing = false
+
+[*.adoc]
+trim_trailing_whitespace = true
+insert_final_newline = true
+charset = utf-8
+
+[*.java]
+ij_java_align_consecutive_assignments = false
+ij_java_align_consecutive_variable_declarations = false
+ij_java_align_group_field_declarations = false
+ij_java_align_multiline_annotation_parameters = false
+ij_java_align_multiline_array_initializer_expression = false
+ij_java_align_multiline_assignment = false
+ij_java_align_multiline_binary_operation = false
+ij_java_align_multiline_chained_methods = false
+ij_java_align_multiline_extends_list = false
+ij_java_align_multiline_for = true
+ij_java_align_multiline_method_parentheses = false
+ij_java_align_multiline_parameters = true
+ij_java_align_multiline_parameters_in_calls = false
+ij_java_align_multiline_parenthesized_expression = false
+ij_java_align_multiline_records = true
+ij_java_align_multiline_resources = true
+ij_java_align_multiline_ternary_operation = false
+ij_java_align_multiline_text_blocks = false
+ij_java_align_multiline_throws_list = false
+ij_java_align_subsequent_simple_methods = false
+ij_java_align_throws_keyword = false
+ij_java_annotation_parameter_wrap = off
+ij_java_array_initializer_new_line_after_left_brace = false
+ij_java_array_initializer_right_brace_on_new_line = false
+ij_java_array_initializer_wrap = off
+ij_java_assert_statement_colon_on_next_line = false
+ij_java_assert_statement_wrap = off
+ij_java_assignment_wrap = off
+ij_java_binary_operation_sign_on_next_line = false
+ij_java_binary_operation_wrap = off
+ij_java_blank_lines_after_anonymous_class_header = 0
+ij_java_blank_lines_after_class_header = 0
+ij_java_blank_lines_after_imports = 1
+ij_java_blank_lines_after_package = 1
+ij_java_blank_lines_around_class = 1
+ij_java_blank_lines_around_field = 0
+ij_java_blank_lines_around_field_in_interface = 0
+ij_java_blank_lines_around_initializer = 1
+ij_java_blank_lines_around_method = 1
+ij_java_blank_lines_around_method_in_interface = 1
+ij_java_blank_lines_before_class_end = 0
+ij_java_blank_lines_before_imports = 1
+ij_java_blank_lines_before_method_body = 0
+ij_java_blank_lines_before_package = 0
+ij_java_block_brace_style = end_of_line
+ij_java_block_comment_at_first_column = true
+ij_java_builder_methods = none
+ij_java_call_parameters_new_line_after_left_paren = false
+ij_java_call_parameters_right_paren_on_new_line = false
+ij_java_call_parameters_wrap = off
+ij_java_case_statement_on_separate_line = true
+ij_java_catch_on_new_line = false
+ij_java_class_annotation_wrap = split_into_lines
+ij_java_class_brace_style = end_of_line
+ij_java_class_count_to_use_import_on_demand = 99
+ij_java_class_names_in_javadoc = 1
+ij_java_do_not_indent_top_level_class_members = false
+ij_java_do_not_wrap_after_single_annotation = true
+ij_java_do_while_brace_force = never
+ij_java_doc_add_blank_line_after_description = true
+ij_java_doc_add_blank_line_after_param_comments = false
+ij_java_doc_add_blank_line_after_return = false
+ij_java_doc_add_p_tag_on_empty_lines = true
+ij_java_doc_align_exception_comments = true
+ij_java_doc_align_param_comments = true
+ij_java_doc_do_not_wrap_if_one_line = false
+ij_java_doc_enable_formatting = true
+ij_java_doc_enable_leading_asterisks = true
+ij_java_doc_indent_on_continuation = false
+ij_java_doc_keep_empty_lines = true
+ij_java_doc_keep_empty_parameter_tag = true
+ij_java_doc_keep_empty_return_tag = true
+ij_java_doc_keep_empty_throws_tag = true
+ij_java_doc_keep_invalid_tags = true
+ij_java_doc_param_description_on_new_line = false
+ij_java_doc_preserve_line_breaks = false
+ij_java_doc_use_throws_not_exception_tag = true
+ij_java_else_on_new_line = false
+ij_java_enum_constants_wrap = off
+ij_java_extends_keyword_wrap = off
+ij_java_extends_list_wrap = off
+ij_java_field_annotation_wrap = normal
+ij_java_finally_on_new_line = false
+ij_java_for_brace_force = never
+ij_java_for_statement_new_line_after_left_paren = false
+ij_java_for_statement_right_paren_on_new_line = false
+ij_java_for_statement_wrap = off
+ij_java_generate_final_locals = false
+ij_java_generate_final_parameters = false
+ij_java_if_brace_force = never
+ij_java_imports_layout = java.**,|,$java.**,|,javax.**,|,$javax.**,|,com.**,|,$com.**,|,graphql.**,|,$graphql.**,|,org.**,|,$org.**,|,org.springframework.**,|,$org.springframework.**,|,org.apache.causeway.**,|,$org.apache.causeway.**,|,org.apache.isis.**,|,$org.apache.isis.**,|,lombok.**,lombok.experimental.**,lombok.extern.log4j.**,lombok.extern.**,|,demoapp.**,|,*,|,$*
+ij_java_indent_case_from_switch = true
+ij_java_insert_inner_class_imports = false
+ij_java_insert_override_annotation = true
+ij_java_keep_blank_lines_before_right_brace = 2
+ij_java_keep_blank_lines_between_package_declaration_and_header = 2
+ij_java_keep_blank_lines_in_code = 2
+ij_java_keep_blank_lines_in_declarations = 2
+ij_java_keep_builder_methods_indents = false
+ij_java_keep_control_statement_in_one_line = true
+ij_java_keep_first_column_comment = true
+ij_java_keep_indents_on_empty_lines = false
+ij_java_keep_line_breaks = true
+ij_java_keep_multiple_expressions_in_one_line = false
+ij_java_keep_simple_blocks_in_one_line = false
+ij_java_keep_simple_classes_in_one_line = false
+ij_java_keep_simple_lambdas_in_one_line = false
+ij_java_keep_simple_methods_in_one_line = false
+ij_java_label_indent_absolute = false
+ij_java_label_indent_size = 0
+ij_java_lambda_brace_style = end_of_line
+ij_java_layout_static_imports_separately = true
+ij_java_line_comment_add_space = false
+ij_java_line_comment_at_first_column = true
+ij_java_method_annotation_wrap = split_into_lines
+ij_java_method_brace_style = end_of_line
+ij_java_method_call_chain_wrap = off
+ij_java_method_parameters_new_line_after_left_paren = false
+ij_java_method_parameters_right_paren_on_new_line = false
+ij_java_method_parameters_wrap = off
+ij_java_modifier_list_wrap = false
+ij_java_names_count_to_use_import_on_demand = 99
+ij_java_new_line_after_lparen_in_record_header = false
+ij_java_parameter_annotation_wrap = off
+ij_java_parentheses_expression_new_line_after_left_paren = false
+ij_java_parentheses_expression_right_paren_on_new_line = false
+ij_java_place_assignment_sign_on_next_line = false
+ij_java_prefer_longer_names = true
+ij_java_prefer_parameters_wrap = false
+ij_java_record_components_wrap = normal
+ij_java_repeat_synchronized = true
+ij_java_replace_instanceof_and_cast = false
+ij_java_replace_null_check = true
+ij_java_replace_sum_lambda_with_method_ref = true
+ij_java_resource_list_new_line_after_left_paren = false
+ij_java_resource_list_right_paren_on_new_line = false
+ij_java_resource_list_wrap = off
+ij_java_rparen_on_new_line_in_record_header = false
+ij_java_space_after_closing_angle_bracket_in_type_argument = false
+ij_java_space_after_colon = true
+ij_java_space_after_comma = true
+ij_java_space_after_comma_in_type_arguments = true
+ij_java_space_after_for_semicolon = true
+ij_java_space_after_quest = true
+ij_java_space_after_type_cast = true
+ij_java_space_before_annotation_array_initializer_left_brace = false
+ij_java_space_before_annotation_parameter_list = false
+ij_java_space_before_array_initializer_left_brace = false
+ij_java_space_before_catch_keyword = true
+ij_java_space_before_catch_left_brace = true
+ij_java_space_before_catch_parentheses = true
+ij_java_space_before_class_left_brace = true
+ij_java_space_before_colon = true
+ij_java_space_before_colon_in_foreach = true
+ij_java_space_before_comma = false
+ij_java_space_before_do_left_brace = true
+ij_java_space_before_else_keyword = true
+ij_java_space_before_else_left_brace = true
+ij_java_space_before_finally_keyword = true
+ij_java_space_before_finally_left_brace = true
+ij_java_space_before_for_left_brace = true
+ij_java_space_before_for_parentheses = true
+ij_java_space_before_for_semicolon = false
+ij_java_space_before_if_left_brace = true
+ij_java_space_before_if_parentheses = true
+ij_java_space_before_method_call_parentheses = false
+ij_java_space_before_method_left_brace = true
+ij_java_space_before_method_parentheses = false
+ij_java_space_before_opening_angle_bracket_in_type_parameter = false
+ij_java_space_before_quest = true
+ij_java_space_before_switch_left_brace = true
+ij_java_space_before_switch_parentheses = true
+ij_java_space_before_synchronized_left_brace = true
+ij_java_space_before_synchronized_parentheses = true
+ij_java_space_before_try_left_brace = true
+ij_java_space_before_try_parentheses = true
+ij_java_space_before_type_parameter_list = false
+ij_java_space_before_while_keyword = true
+ij_java_space_before_while_left_brace = true
+ij_java_space_before_while_parentheses = true
+ij_java_space_inside_one_line_enum_braces = false
+ij_java_space_within_empty_array_initializer_braces = false
+ij_java_space_within_empty_method_call_parentheses = false
+ij_java_space_within_empty_method_parentheses = false
+ij_java_spaces_around_additive_operators = true
+ij_java_spaces_around_assignment_operators = true
+ij_java_spaces_around_bitwise_operators = true
+ij_java_spaces_around_equality_operators = true
+ij_java_spaces_around_lambda_arrow = true
+ij_java_spaces_around_logical_operators = true
+ij_java_spaces_around_method_ref_dbl_colon = false
+ij_java_spaces_around_multiplicative_operators = true
+ij_java_spaces_around_relational_operators = true
+ij_java_spaces_around_shift_operators = true
+ij_java_spaces_around_type_bounds_in_type_parameters = true
+ij_java_spaces_around_unary_operator = false
+ij_java_spaces_within_angle_brackets = false
+ij_java_spaces_within_annotation_parentheses = false
+ij_java_spaces_within_array_initializer_braces = false
+ij_java_spaces_within_braces = false
+ij_java_spaces_within_brackets = false
+ij_java_spaces_within_cast_parentheses = false
+ij_java_spaces_within_catch_parentheses = false
+ij_java_spaces_within_for_parentheses = false
+ij_java_spaces_within_if_parentheses = false
+ij_java_spaces_within_method_call_parentheses = false
+ij_java_spaces_within_method_parentheses = false
+ij_java_spaces_within_parentheses = false
+ij_java_spaces_within_record_header = false
+ij_java_spaces_within_switch_parentheses = false
+ij_java_spaces_within_synchronized_parentheses = false
+ij_java_spaces_within_try_parentheses = false
+ij_java_spaces_within_while_parentheses = false
+ij_java_special_else_if_treatment = true
+ij_java_subclass_name_suffix = Impl
+ij_java_ternary_operation_signs_on_next_line = false
+ij_java_ternary_operation_wrap = off
+ij_java_test_name_suffix = Test
+ij_java_throws_keyword_wrap = off
+ij_java_throws_list_wrap = off
+ij_java_use_external_annotations = false
+ij_java_use_fq_class_names = false
+ij_java_use_relative_indents = false
+ij_java_use_single_class_imports = true
+ij_java_variable_annotation_wrap = off
+ij_java_visibility = public
+ij_java_while_brace_force = never
+ij_java_while_on_new_line = false
+ij_java_wrap_comments = false
+ij_java_wrap_first_method_in_call_chain = false
+ij_java_wrap_long_lines = false
+
+[*.properties]
+ij_properties_align_group_field_declarations = false
+ij_properties_keep_blank_lines = false
+ij_properties_key_value_delimiter = equals
+ij_properties_spaces_around_key_value_delimiter = false
+
+[.editorconfig]
+ij_editorconfig_align_group_field_declarations = false
+ij_editorconfig_space_after_colon = false
+ij_editorconfig_space_after_comma = true
+ij_editorconfig_space_before_colon = false
+ij_editorconfig_space_before_comma = false
+ij_editorconfig_spaces_around_assignment_operators = true
+
+[{*.ad,*.adoc,*.asciidoc,.asciidoctorconfig}]
+ij_asciidoc_blank_lines_after_header = 1
+ij_asciidoc_blank_lines_keep_after_header = 1
+ij_asciidoc_formatting_enabled = true
+ij_asciidoc_one_sentence_per_line = true
+
+[{*.ant,*.fxml,*.jdo,*.jhm,*.jnlp,*.jrxml,*.jspx,*.orm,*.pom,*.rng,*.tagx,*.tld,*.wsdl,*.xml,*.xsd,*.xsl,*.xslt,*.xul}]
+ij_xml_align_attributes = true
+ij_xml_align_text = false
+ij_xml_attribute_wrap = normal
+ij_xml_block_comment_at_first_column = true
+ij_xml_keep_blank_lines = 2
+ij_xml_keep_indents_on_empty_lines = false
+ij_xml_keep_line_breaks = true
+ij_xml_keep_line_breaks_in_text = true
+ij_xml_keep_whitespaces = false
+ij_xml_keep_whitespaces_around_cdata = preserve
+ij_xml_keep_whitespaces_inside_cdata = false
+ij_xml_line_comment_at_first_column = true
+ij_xml_space_after_tag_name = false
+ij_xml_space_around_equals_in_attribute = false
+ij_xml_space_inside_empty_tag = false
+ij_xml_text_wrap = normal
+
+[{*.bash,*.sh,*.zsh}]
+indent_size = 2
+tab_width = 2
+ij_shell_binary_ops_start_line = false
+ij_shell_keep_column_alignment_padding = false
+ij_shell_minify_program = false
+ij_shell_redirect_followed_by_space = false
+ij_shell_switch_cases_indented = false
+ij_shell_use_unix_line_separator = true
+
+[{*.erb,*.htm,*.html,*.sht,*.shtm,*.shtml}]
+ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3
+ij_html_align_attributes = true
+ij_html_align_text = false
+ij_html_attribute_wrap = normal
+ij_html_block_comment_at_first_column = true
+ij_html_do_not_align_children_of_min_lines = 0
+ij_html_do_not_break_if_inline_tags = title,h1,h2,h3,h4,h5,h6,p
+ij_html_do_not_indent_children_of_tags = html,body,thead,tbody,tfoot
+ij_html_enforce_quotes = false
+ij_html_inline_tags = a,abbr,acronym,b,basefont,bdo,big,br,cite,cite,code,dfn,em,font,i,img,input,kbd,label,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var
+ij_html_keep_blank_lines = 2
+ij_html_keep_indents_on_empty_lines = false
+ij_html_keep_line_breaks = true
+ij_html_keep_line_breaks_in_text = true
+ij_html_keep_whitespaces = false
+ij_html_keep_whitespaces_inside = span,pre,textarea
+ij_html_line_comment_at_first_column = true
+ij_html_new_line_after_last_attribute = never
+ij_html_new_line_before_first_attribute = never
+ij_html_quote_style = double
+ij_html_remove_new_line_before_tags = br
+ij_html_space_after_tag_name = false
+ij_html_space_around_equality_in_attribute = false
+ij_html_space_inside_empty_tag = false
+ij_html_text_wrap = normal
+ij_html_uniform_ident = false
+
+[{*.har,*.json}]
+indent_size = 2
+ij_json_keep_blank_lines_in_code = 0
+ij_json_keep_indents_on_empty_lines = false
+ij_json_keep_line_breaks = true
+ij_json_space_after_colon = true
+ij_json_space_after_comma = true
+ij_json_space_before_colon = true
+ij_json_space_before_comma = false
+ij_json_spaces_within_braces = false
+ij_json_spaces_within_brackets = false
+ij_json_wrap_long_lines = false
+
+[{*.markdown,*.md}]
+ij_markdown_force_one_space_after_blockquote_symbol = true
+ij_markdown_force_one_space_after_header_symbol = true
+ij_markdown_force_one_space_after_list_bullet = true
+ij_markdown_force_one_space_between_words = true
+ij_markdown_keep_indents_on_empty_lines = false
+ij_markdown_max_lines_around_block_elements = 1
+ij_markdown_max_lines_around_header = 1
+ij_markdown_max_lines_between_paragraphs = 1
+ij_markdown_min_lines_around_block_elements = 1
+ij_markdown_min_lines_around_header = 1
+ij_markdown_min_lines_between_paragraphs = 1
+
+[{*.yaml,*.yml}]
+indent_size = 2
+ij_yaml_align_values_properties = do_not_align
+ij_yaml_autoinsert_sequence_marker = true
+ij_yaml_block_mapping_on_new_line = false
+ij_yaml_indent_sequence_value = true
+ij_yaml_keep_indents_on_empty_lines = false
+ij_yaml_keep_line_breaks = true
+ij_yaml_sequence_on_new_line = false
+ij_yaml_space_before_colon = false
+ij_yaml_spaces_within_braces = true
+ij_yaml_spaces_within_brackets = true
+
+[{*.gql,*.graphql}]
+indent_size = 2
diff --git a/module-pets-tests/pom.xml b/module-pets-tests/pom.xml
index f64c055..f999327 100644
--- a/module-pets-tests/pom.xml
+++ b/module-pets-tests/pom.xml
@@ -5,7 +5,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.isis.tutorials</groupId>
+        <groupId>org.apache.causeway.tutorials</groupId>
         <artifactId>petclinic</artifactId>
         <version>1.0.0-SNAPSHOT</version>
     </parent>
@@ -45,22 +45,32 @@
         <!-- TESTS -->
 
         <dependency>
-            <groupId>org.apache.isis.mavendeps</groupId>
-            <artifactId>isis-mavendeps-unittests</artifactId>
-            <type>pom</type>
+            <groupId>org.apache.causeway.testing</groupId>
+            <artifactId>causeway-testing-unittestsupport-applib</artifactId>
             <scope>test</scope>
-            <exclusions>
-            	<exclusion>
-            		<groupId>org.jmock</groupId>
-            		<artifactId>jmock-junit4</artifactId>
-            	</exclusion>
-            </exclusions>
         </dependency>
 
         <dependency>
-            <groupId>org.apache.isis.mavendeps</groupId>
-            <artifactId>isis-mavendeps-integtests</artifactId>
-            <type>pom</type>
+            <groupId>org.apache.causeway.testing</groupId>
+            <artifactId>causeway-testing-fakedata-applib</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.causeway.testing</groupId>
+            <artifactId>causeway-testing-integtestsupport-applib</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.causeway.testing</groupId>
+            <artifactId>causeway-testing-fixtures-applib</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.causeway.persistence</groupId>
+            <artifactId>causeway-persistence-jpa-eclipselink</artifactId>
             <scope>test</scope>
         </dependency>
 
diff --git a/module-pets-tests/src/test/java/petclinic/modules/pets/dom/petowner/PetOwner_Test.java b/module-pets-tests/src/test/java/petclinic/modules/pets/dom/petowner/PetOwner_Test.java
index 0ea697a..234757b 100644
--- a/module-pets-tests/src/test/java/petclinic/modules/pets/dom/petowner/PetOwner_Test.java
+++ b/module-pets-tests/src/test/java/petclinic/modules/pets/dom/petowner/PetOwner_Test.java
@@ -11,9 +11,9 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import org.apache.isis.applib.services.message.MessageService;
-import org.apache.isis.applib.services.repository.RepositoryService;
-import org.apache.isis.applib.services.title.TitleService;
+import org.apache.causeway.applib.services.message.MessageService;
+import org.apache.causeway.applib.services.repository.RepositoryService;
+import org.apache.causeway.applib.services.title.TitleService;
 
 @ExtendWith(MockitoExtension.class)
 class PetOwner_Test {
diff --git a/module-pets-tests/src/test/java/petclinic/modules/pets/dom/petowner/PetOwners_Test.java b/module-pets-tests/src/test/java/petclinic/modules/pets/dom/petowner/PetOwners_Test.java
index dca87cf..b4ef575 100644
--- a/module-pets-tests/src/test/java/petclinic/modules/pets/dom/petowner/PetOwners_Test.java
+++ b/module-pets-tests/src/test/java/petclinic/modules/pets/dom/petowner/PetOwners_Test.java
@@ -17,8 +17,8 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.ArgumentMatchers.argThat;
 import static org.mockito.Mockito.when;
 
-import org.apache.isis.applib.services.repository.RepositoryService;
-import org.apache.isis.persistence.jpa.applib.services.JpaSupportService;
+import org.apache.causeway.applib.services.repository.RepositoryService;
+import org.apache.causeway.persistence.jpa.applib.services.JpaSupportService;
 
 @ExtendWith(MockitoExtension.class)
 class PetOwners_Test {
diff --git a/module-pets-tests/src/test/java/petclinic/modules/pets/integtests/PetsModuleIntegTestAbstract.java b/module-pets-tests/src/test/java/petclinic/modules/pets/integtests/PetsModuleIntegTestAbstract.java
index b8a0cb6..d9d50e6 100644
--- a/module-pets-tests/src/test/java/petclinic/modules/pets/integtests/PetsModuleIntegTestAbstract.java
+++ b/module-pets-tests/src/test/java/petclinic/modules/pets/integtests/PetsModuleIntegTestAbstract.java
@@ -8,12 +8,12 @@ import org.springframework.context.annotation.PropertySource;
 import org.springframework.context.annotation.PropertySources;
 import org.springframework.test.context.ActiveProfiles;
 
-import org.apache.isis.core.config.presets.IsisPresets;
-import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
-import org.apache.isis.persistence.jpa.eclipselink.IsisModulePersistenceJpaEclipselink;
-import org.apache.isis.security.bypass.IsisModuleSecurityBypass;
-import org.apache.isis.testing.fixtures.applib.IsisIntegrationTestAbstractWithFixtures;
-import org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
+import org.apache.causeway.core.config.presets.CausewayPresets;
+import org.apache.causeway.core.runtimeservices.CausewayModuleCoreRuntimeServices;
+import org.apache.causeway.persistence.jpa.eclipselink.CausewayModulePersistenceJpaEclipselink;
+import org.apache.causeway.security.bypass.CausewayModuleSecurityBypass;
+import org.apache.causeway.testing.fixtures.applib.CausewayIntegrationTestAbstractWithFixtures;
+import org.apache.causeway.testing.fixtures.applib.CausewayModuleTestingFixturesApplib;
 
 import petclinic.modules.pets.PetsModule;
 
@@ -22,7 +22,7 @@ import petclinic.modules.pets.PetsModule;
         classes = PetsModuleIntegTestAbstract.TestApp.class
 )
 @ActiveProfiles("test")
-public abstract class PetsModuleIntegTestAbstract extends IsisIntegrationTestAbstractWithFixtures {
+public abstract class PetsModuleIntegTestAbstract extends CausewayIntegrationTestAbstractWithFixtures {
 
     /**
      * Compared to the production app manifest <code>petclinic.webapp.AppManifest</code>,
@@ -32,16 +32,16 @@ public abstract class PetsModuleIntegTestAbstract extends IsisIntegrationTestAbs
     @EnableAutoConfiguration
     @Import({
 
-            IsisModuleCoreRuntimeServices.class,
-            IsisModuleSecurityBypass.class,
-            IsisModulePersistenceJpaEclipselink.class,
-            IsisModuleTestingFixturesApplib.class,
+            CausewayModuleCoreRuntimeServices.class,
+            CausewayModuleSecurityBypass.class,
+            CausewayModulePersistenceJpaEclipselink.class,
+            CausewayModuleTestingFixturesApplib.class,
 
             PetsModule.class
     })
     @PropertySources({
-            @PropertySource(IsisPresets.H2InMemory_withUniqueSchema),
-            @PropertySource(IsisPresets.UseLog4j2Test),
+            @PropertySource(CausewayPresets.H2InMemory_withUniqueSchema),
+            @PropertySource(CausewayPresets.UseLog4j2Test),
     })
     public static class TestApp {
 
diff --git a/module-pets-tests/src/test/java/petclinic/modules/pets/integtests/tests/PetOwner_IntegTest.java b/module-pets-tests/src/test/java/petclinic/modules/pets/integtests/tests/PetOwner_IntegTest.java
index f7285d2..8a93305 100644
--- a/module-pets-tests/src/test/java/petclinic/modules/pets/integtests/tests/PetOwner_IntegTest.java
+++ b/module-pets-tests/src/test/java/petclinic/modules/pets/integtests/tests/PetOwner_IntegTest.java
@@ -8,8 +8,8 @@ import org.springframework.transaction.annotation.Transactional;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
-import org.apache.isis.applib.services.wrapper.HiddenException;
-import org.apache.isis.applib.services.wrapper.InvalidException;
+import org.apache.causeway.applib.services.wrapper.HiddenException;
+import org.apache.causeway.applib.services.wrapper.InvalidException;
 
 import petclinic.modules.pets.dom.petowner.PetOwner;
 import petclinic.modules.pets.fixture.petowner.PetOwner_persona;
diff --git a/module-pets-tests/src/test/java/petclinic/modules/pets/integtests/tests/PetOwners_IntegTest.java b/module-pets-tests/src/test/java/petclinic/modules/pets/integtests/tests/PetOwners_IntegTest.java
index be4b927..4fd0025 100644
--- a/module-pets-tests/src/test/java/petclinic/modules/pets/integtests/tests/PetOwners_IntegTest.java
+++ b/module-pets-tests/src/test/java/petclinic/modules/pets/integtests/tests/PetOwners_IntegTest.java
@@ -13,7 +13,7 @@ import org.springframework.transaction.annotation.Transactional;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
-import org.apache.isis.testing.unittestsupport.applib.matchers.ThrowableMatchers;
+import org.apache.causeway.testing.unittestsupport.applib.matchers.ThrowableMatchers;
 
 import petclinic.modules.pets.dom.petowner.PetOwner;
 import petclinic.modules.pets.dom.petowner.PetOwners;
diff --git a/module-pets-tests/src/test/resources/application-test.yml b/module-pets-tests/src/test/resources/application-test.yml
index fa32cda..c264027 100644
--- a/module-pets-tests/src/test/resources/application-test.yml
+++ b/module-pets-tests/src/test/resources/application-test.yml
@@ -1,4 +1,4 @@
-isis:
+causeway:
   persistence:
     schema:
       auto-create-schemas: "pets"
diff --git a/module-pets/pom.xml b/module-pets/pom.xml
index 408875e..cd30c9c 100644
--- a/module-pets/pom.xml
+++ b/module-pets/pom.xml
@@ -5,7 +5,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.isis.tutorials</groupId>
+        <groupId>org.apache.causeway.tutorials</groupId>
         <artifactId>petclinic</artifactId>
         <version>1.0.0-SNAPSHOT</version>
     </parent>
@@ -36,18 +36,18 @@
         <!-- ISIS API -->
 
         <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-applib</artifactId>
+            <groupId>org.apache.causeway.core</groupId>
+            <artifactId>causeway-applib</artifactId>
         </dependency>
 
         <dependency>
-            <groupId>org.apache.isis.persistence</groupId>
-            <artifactId>isis-persistence-jpa-eclipselink</artifactId>
+            <groupId>org.apache.causeway.persistence</groupId>
+            <artifactId>causeway-persistence-jpa-eclipselink</artifactId>
         </dependency>
 
         <dependency>
-            <groupId>org.apache.isis.testing</groupId>
-            <artifactId>isis-testing-fixtures-applib</artifactId>
+            <groupId>org.apache.causeway.testing</groupId>
+            <artifactId>causeway-testing-fixtures-applib</artifactId>
         </dependency>
 
         <!-- IDE support (optional) -->
diff --git a/module-pets/src/main/java/petclinic/modules/pets/PetsModule.java b/module-pets/src/main/java/petclinic/modules/pets/PetsModule.java
index db7a32b..fcbc626 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/PetsModule.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/PetsModule.java
@@ -5,8 +5,8 @@ import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
-import org.apache.isis.testing.fixtures.applib.modules.ModuleWithFixtures;
+import org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript;
+import org.apache.causeway.testing.fixtures.applib.modules.ModuleWithFixtures;
 
 import petclinic.modules.pets.dom.pet.Pet;
 import petclinic.modules.pets.dom.petowner.PetOwner;
diff --git a/module-pets/src/main/java/petclinic/modules/pets/dom/pet/Pet.java b/module-pets/src/main/java/petclinic/modules/pets/dom/pet/Pet.java
index 32aeb9b..8814ce6 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/dom/pet/Pet.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/dom/pet/Pet.java
@@ -2,6 +2,7 @@ package petclinic.modules.pets.dom.pet;
 
 import java.util.Comparator;
 
+import javax.inject.Named;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.EntityListeners;
@@ -17,13 +18,13 @@ import javax.persistence.UniqueConstraint;
 import javax.persistence.Version;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.DomainObjectLayout;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Publishing;
-import org.apache.isis.applib.jaxb.PersistentEntityAdapter;
-import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener;
+import org.apache.causeway.applib.annotation.DomainObject;
+import org.apache.causeway.applib.annotation.DomainObjectLayout;
+import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
+import org.apache.causeway.applib.annotation.Publishing;
+import org.apache.causeway.applib.jaxb.PersistentEntityAdapter;
+import org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
 
 import lombok.AccessLevel;
 import lombok.Getter;
@@ -45,8 +46,9 @@ import petclinic.modules.pets.types.PetName;
         @UniqueConstraint(name = "Pet__owner_name__UNQ", columnNames = {"owner_id", "name"})
     }
 )
-@EntityListeners(IsisEntityListener.class)
-@DomainObject(logicalTypeName = "pets.Pet", entityChangePublishing = Publishing.ENABLED)
+@EntityListeners(CausewayEntityListener.class)
+@Named("pets.Pet")
+@DomainObject(entityChangePublishing = Publishing.ENABLED)
 @DomainObjectLayout()
 @NoArgsConstructor(access = AccessLevel.PUBLIC)
 @XmlJavaTypeAdapter(PersistentEntityAdapter.class)
@@ -91,6 +93,7 @@ public class Pet implements Comparable<Pet> {
     @PetName
     @Column(name = "name", length = FirstName.MAX_LEN, nullable = false)
     @Getter @Setter
+    @Property(maxLength = FirstName.MAX_LEN)
     @PropertyLayout(fieldSetId = "name", sequence = "2")
     private String name;
 
diff --git a/module-pets/src/main/java/petclinic/modules/pets/dom/pet/PetOwnerForPetsSubscriber.java b/module-pets/src/main/java/petclinic/modules/pets/dom/pet/PetOwnerForPetsSubscriber.java
index 1c94b98..0c6dc1f 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/dom/pet/PetOwnerForPetsSubscriber.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/dom/pet/PetOwnerForPetsSubscriber.java
@@ -7,7 +7,7 @@ import javax.inject.Inject;
 import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Service;
 
-import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.causeway.applib.services.repository.RepositoryService;
 
 import petclinic.modules.pets.dom.petowner.PetOwner;
 import petclinic.modules.pets.dom.petowner.PetOwner_delete;
diff --git a/module-pets/src/main/java/petclinic/modules/pets/dom/pet/PetOwner_addPet.java b/module-pets/src/main/java/petclinic/modules/pets/dom/pet/PetOwner_addPet.java
index e59ada1..bc2f8ce 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/dom/pet/PetOwner_addPet.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/dom/pet/PetOwner_addPet.java
@@ -2,11 +2,11 @@ package petclinic.modules.pets.dom.pet;
 
 import javax.inject.Inject;
 
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.Publishing;
-import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.causeway.applib.annotation.Action;
+import org.apache.causeway.applib.annotation.ActionLayout;
+import org.apache.causeway.applib.annotation.Publishing;
+import org.apache.causeway.applib.annotation.SemanticsOf;
+import org.apache.causeway.applib.services.repository.RepositoryService;
 
 import lombok.RequiredArgsConstructor;
 
diff --git a/module-pets/src/main/java/petclinic/modules/pets/dom/pet/PetOwner_pets.java b/module-pets/src/main/java/petclinic/modules/pets/dom/pet/PetOwner_pets.java
index 8a955e4..51645f1 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/dom/pet/PetOwner_pets.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/dom/pet/PetOwner_pets.java
@@ -4,8 +4,8 @@ import java.util.List;
 
 import javax.inject.Inject;
 
-import org.apache.isis.applib.annotation.Collection;
-import org.apache.isis.applib.annotation.CollectionLayout;
+import org.apache.causeway.applib.annotation.Collection;
+import org.apache.causeway.applib.annotation.CollectionLayout;
 
 import lombok.RequiredArgsConstructor;
 
diff --git a/module-pets/src/main/java/petclinic/modules/pets/dom/pet/PetOwner_removePet.java b/module-pets/src/main/java/petclinic/modules/pets/dom/pet/PetOwner_removePet.java
index 1bc76c4..39740a6 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/dom/pet/PetOwner_removePet.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/dom/pet/PetOwner_removePet.java
@@ -5,11 +5,11 @@ import java.util.stream.Collectors;
 
 import javax.inject.Inject;
 
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.Publishing;
-import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.causeway.applib.annotation.Action;
+import org.apache.causeway.applib.annotation.ActionLayout;
+import org.apache.causeway.applib.annotation.Publishing;
+import org.apache.causeway.applib.annotation.SemanticsOf;
+import org.apache.causeway.applib.services.repository.RepositoryService;
 
 import lombok.RequiredArgsConstructor;
 
diff --git a/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwner.java b/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwner.java
index 0f16c8e..6053605 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwner.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwner.java
@@ -3,6 +3,7 @@ package petclinic.modules.pets.dom.petowner;
 import java.util.Comparator;
 
 import javax.inject.Inject;
+import javax.inject.Named;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.EntityListeners;
@@ -17,21 +18,21 @@ import javax.persistence.UniqueConstraint;
 import javax.persistence.Version;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.DomainObjectLayout;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Publishing;
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.applib.jaxb.PersistentEntityAdapter;
-import org.apache.isis.applib.services.message.MessageService;
-import org.apache.isis.applib.services.repository.RepositoryService;
-import org.apache.isis.applib.services.title.TitleService;
-import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener;
-
-import static org.apache.isis.applib.annotation.SemanticsOf.IDEMPOTENT;
+import org.apache.causeway.applib.annotation.Action;
+import org.apache.causeway.applib.annotation.ActionLayout;
+import org.apache.causeway.applib.annotation.DomainObject;
+import org.apache.causeway.applib.annotation.DomainObjectLayout;
+import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
+import org.apache.causeway.applib.annotation.Publishing;
+import org.apache.causeway.applib.annotation.Where;
+import org.apache.causeway.applib.jaxb.PersistentEntityAdapter;
+import org.apache.causeway.applib.services.message.MessageService;
+import org.apache.causeway.applib.services.repository.RepositoryService;
+import org.apache.causeway.applib.services.title.TitleService;
+import org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
+
+import static org.apache.causeway.applib.annotation.SemanticsOf.IDEMPOTENT;
 
 import lombok.AccessLevel;
 import lombok.Getter;
@@ -63,8 +64,9 @@ import petclinic.modules.pets.types.PhoneNumber;
                         "WHERE so.lastName LIKE :lastName"
         )
 })
-@EntityListeners(IsisEntityListener.class)
-@DomainObject(logicalTypeName = "pets.PetOwner", entityChangePublishing = Publishing.ENABLED)
+@EntityListeners(CausewayEntityListener.class)
+@Named("pets.PetOwner")
+@DomainObject(entityChangePublishing = Publishing.ENABLED)
 @DomainObjectLayout()
 @NoArgsConstructor(access = AccessLevel.PUBLIC)
 @XmlJavaTypeAdapter(PersistentEntityAdapter.class)
@@ -115,13 +117,15 @@ public class PetOwner implements Comparable<PetOwner> {
     @LastName
     @Column(name = "lastName", length = LastName.MAX_LEN, nullable = false)
     @Getter @Setter @ToString.Include
-    @Property(hidden = Where.EVERYWHERE)
+    @Property()
+    @PropertyLayout(hidden = Where.EVERYWHERE)
     private String lastName;
 
     @FirstName
     @Column(name = "firstName", length = FirstName.MAX_LEN, nullable = true)
     @Getter @Setter @ToString.Include
-    @Property(hidden = Where.EVERYWHERE)
+    @Property()
+    @PropertyLayout(hidden = Where.EVERYWHERE)
     private String firstName;
 
     @PhoneNumber
diff --git a/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwner_delete.java b/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwner_delete.java
index 57bd75f..d2ae5c2 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwner_delete.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwner_delete.java
@@ -2,12 +2,12 @@ package petclinic.modules.pets.dom.petowner;
 
 import javax.inject.Inject;
 
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.Publishing;
-import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.events.domain.ActionDomainEvent;
-import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.causeway.applib.annotation.Action;
+import org.apache.causeway.applib.annotation.ActionLayout;
+import org.apache.causeway.applib.annotation.Publishing;
+import org.apache.causeway.applib.annotation.SemanticsOf;
+import org.apache.causeway.applib.events.domain.ActionDomainEvent;
+import org.apache.causeway.applib.services.repository.RepositoryService;
 
 import lombok.RequiredArgsConstructor;
 
diff --git a/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwners.java b/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwners.java
index 9745cd7..e435abd 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwners.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwners.java
@@ -4,30 +4,29 @@ import java.util.List;
 
 import javax.annotation.Priority;
 import javax.inject.Inject;
+import javax.inject.Named;
 import javax.persistence.TypedQuery;
 
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.BookmarkPolicy;
-import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.annotation.PriorityPrecedence;
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.query.Query;
-import org.apache.isis.applib.services.repository.RepositoryService;
-import org.apache.isis.persistence.jpa.applib.services.JpaSupportService;
+import org.apache.causeway.applib.annotation.Action;
+import org.apache.causeway.applib.annotation.ActionLayout;
+import org.apache.causeway.applib.annotation.BookmarkPolicy;
+import org.apache.causeway.applib.annotation.DomainService;
+import org.apache.causeway.applib.annotation.NatureOfService;
+import org.apache.causeway.applib.annotation.PriorityPrecedence;
+import org.apache.causeway.applib.annotation.Programmatic;
+import org.apache.causeway.applib.annotation.PromptStyle;
+import org.apache.causeway.applib.annotation.SemanticsOf;
+import org.apache.causeway.applib.query.Query;
+import org.apache.causeway.applib.services.repository.RepositoryService;
+import org.apache.causeway.persistence.jpa.applib.services.JpaSupportService;
 
 import lombok.RequiredArgsConstructor;
 
 import petclinic.modules.pets.types.FirstName;
 import petclinic.modules.pets.types.LastName;
 
-@DomainService(
-        nature = NatureOfService.VIEW,
-        logicalTypeName = "pets.PetOwners"
-)
+@Named("pets.PetOwners")
+@DomainService(nature = NatureOfService.VIEW)
 @Priority(PriorityPrecedence.EARLY)
 @RequiredArgsConstructor(onConstructor_ = {@Inject} )
 public class PetOwners {
@@ -55,7 +54,6 @@ public class PetOwners {
 
 
     @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(bookmarking = BookmarkPolicy.AS_ROOT)
     public List<PetOwner> findByLastName(
             @LastName final String lastName
             ) {
@@ -71,7 +69,6 @@ public class PetOwners {
 
 
     @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(bookmarking = BookmarkPolicy.AS_ROOT)
     public List<PetOwner> listAll() {
         return petOwnerRepository.findAll();
     }
@@ -82,13 +79,13 @@ public class PetOwners {
     @Programmatic
     public void ping() {
         jpaSupportService.getEntityManager(PetOwner.class)
-            .ifSuccess(entityManager -> {
+            .mapSuccessWhenPresent(entityManager -> {
                 final TypedQuery<PetOwner> q = entityManager.createQuery(
                         "SELECT p FROM PetOwner p ORDER BY p.lastName",
                         PetOwner.class)
                     .setMaxResults(1);
-                q.getResultList();
-            });
+                return q.getResultList();
+            }).valueAsNonNullElseFail();
     }
 
 
diff --git a/module-pets/src/main/java/petclinic/modules/pets/fixture/pet/PetBuilder.java b/module-pets/src/main/java/petclinic/modules/pets/fixture/pet/PetBuilder.java
index 6f37cdc..ca15edf 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/fixture/pet/PetBuilder.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/fixture/pet/PetBuilder.java
@@ -2,7 +2,7 @@ package petclinic.modules.pets.fixture.pet;
 
 import javax.inject.Inject;
 
-import org.apache.isis.testing.fixtures.applib.personas.BuilderScriptWithResult;
+import org.apache.causeway.testing.fixtures.applib.personas.BuilderScriptWithResult;
 
 import lombok.Getter;
 import lombok.Setter;
diff --git a/module-pets/src/main/java/petclinic/modules/pets/fixture/pet/Pet_persona.java b/module-pets/src/main/java/petclinic/modules/pets/fixture/pet/Pet_persona.java
index 23d2b30..ecd980a 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/fixture/pet/Pet_persona.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/fixture/pet/Pet_persona.java
@@ -1,9 +1,10 @@
 package petclinic.modules.pets.fixture.pet;
 
-import org.apache.isis.applib.services.registry.ServiceRegistry;
-import org.apache.isis.testing.fixtures.applib.personas.PersonaWithBuilderScript;
-import org.apache.isis.testing.fixtures.applib.personas.PersonaWithFinder;
-import org.apache.isis.testing.fixtures.applib.setup.PersonaEnumPersistAll;
+import org.apache.causeway.applib.services.registry.ServiceRegistry;
+import org.apache.causeway.testing.fixtures.applib.personas.Persona;
+import org.apache.causeway.testing.fixtures.applib.personas.PersonaWithBuilderScript;
+import org.apache.causeway.testing.fixtures.applib.personas.PersonaWithFinder;
+import org.apache.causeway.testing.fixtures.applib.setup.PersonaEnumPersistAll;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
@@ -16,7 +17,7 @@ import petclinic.modules.pets.fixture.petowner.PetOwner_persona;
 
 @AllArgsConstructor
 public enum Pet_persona
-implements PersonaWithBuilderScript<PetBuilder>, PersonaWithFinder<Pet> {
+implements Persona<Pet, PetBuilder> {
 
     TIDDLES_JONES("Tiddles", PetSpecies.Cat, PetOwner_persona.JONES),
     ROVER_JONES("Rover", PetSpecies.Dog, PetOwner_persona.JONES),
@@ -46,7 +47,7 @@ implements PersonaWithBuilderScript<PetBuilder>, PersonaWithFinder<Pet> {
     }
 
     public static class PersistAll
-    extends PersonaEnumPersistAll<Pet_persona, Pet> {
+    extends PersonaEnumPersistAll<Pet, Pet_persona, PetBuilder> {
         public PersistAll() {
             super(Pet_persona.class);
         }
diff --git a/module-pets/src/main/java/petclinic/modules/pets/fixture/petowner/PetOwnerBuilder.java b/module-pets/src/main/java/petclinic/modules/pets/fixture/petowner/PetOwnerBuilder.java
index 00bab41..80d5795 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/fixture/petowner/PetOwnerBuilder.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/fixture/petowner/PetOwnerBuilder.java
@@ -2,7 +2,7 @@ package petclinic.modules.pets.fixture.petowner;
 
 import javax.inject.Inject;
 
-import org.apache.isis.testing.fixtures.applib.personas.BuilderScriptWithResult;
+import org.apache.causeway.testing.fixtures.applib.personas.BuilderScriptWithResult;
 
 import lombok.Getter;
 import lombok.Setter;
diff --git a/module-pets/src/main/java/petclinic/modules/pets/fixture/petowner/PetOwner_persona.java b/module-pets/src/main/java/petclinic/modules/pets/fixture/petowner/PetOwner_persona.java
index ce7cc4c..bfe9e54 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/fixture/petowner/PetOwner_persona.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/fixture/petowner/PetOwner_persona.java
@@ -1,9 +1,10 @@
 package petclinic.modules.pets.fixture.petowner;
 
-import org.apache.isis.applib.services.registry.ServiceRegistry;
-import org.apache.isis.testing.fixtures.applib.personas.PersonaWithBuilderScript;
-import org.apache.isis.testing.fixtures.applib.personas.PersonaWithFinder;
-import org.apache.isis.testing.fixtures.applib.setup.PersonaEnumPersistAll;
+import org.apache.causeway.applib.services.registry.ServiceRegistry;
+import org.apache.causeway.testing.fixtures.applib.personas.Persona;
+import org.apache.causeway.testing.fixtures.applib.personas.PersonaWithBuilderScript;
+import org.apache.causeway.testing.fixtures.applib.personas.PersonaWithFinder;
+import org.apache.causeway.testing.fixtures.applib.setup.PersonaEnumPersistAll;
 
 import petclinic.modules.pets.dom.petowner.PetOwner;
 import petclinic.modules.pets.dom.petowner.PetOwners;
@@ -13,7 +14,7 @@ import lombok.Getter;
 
 @AllArgsConstructor
 public enum PetOwner_persona
-implements PersonaWithBuilderScript<PetOwnerBuilder>, PersonaWithFinder<PetOwner> {
+implements Persona<PetOwner, PetOwnerBuilder> {
 
     JONES("Jones"),
     FARRELL("Farrell"),
@@ -41,7 +42,7 @@ implements PersonaWithBuilderScript<PetOwnerBuilder>, PersonaWithFinder<PetOwner
     }
 
     public static class PersistAll
-    extends PersonaEnumPersistAll<PetOwner_persona, PetOwner> {
+    extends PersonaEnumPersistAll<PetOwner, PetOwner_persona, PetOwnerBuilder> {
 
         public PersistAll() {
             super(PetOwner_persona.class);
diff --git a/module-pets/src/main/java/petclinic/modules/pets/types/EmailAddress.java b/module-pets/src/main/java/petclinic/modules/pets/types/EmailAddress.java
index fc69256..10c80df 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/types/EmailAddress.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/types/EmailAddress.java
@@ -5,12 +5,12 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Parameter;
-import org.apache.isis.applib.annotation.ParameterLayout;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.causeway.applib.annotation.Editing;
+import org.apache.causeway.applib.annotation.Optionality;
+import org.apache.causeway.applib.annotation.Parameter;
+import org.apache.causeway.applib.annotation.ParameterLayout;
+import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
 
 @Property(
         editing = Editing.ENABLED,
diff --git a/module-pets/src/main/java/petclinic/modules/pets/types/FirstName.java b/module-pets/src/main/java/petclinic/modules/pets/types/FirstName.java
index 00f2bfc..2a9bb89 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/types/FirstName.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/types/FirstName.java
@@ -5,10 +5,10 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Parameter;
-import org.apache.isis.applib.annotation.ParameterLayout;
-import org.apache.isis.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.Optionality;
+import org.apache.causeway.applib.annotation.Parameter;
+import org.apache.causeway.applib.annotation.ParameterLayout;
+import org.apache.causeway.applib.annotation.Property;
 
 @Property(maxLength = FirstName.MAX_LEN, optionality = Optionality.OPTIONAL)
 @Parameter(maxLength = FirstName.MAX_LEN, optionality = Optionality.OPTIONAL)
diff --git a/module-pets/src/main/java/petclinic/modules/pets/types/LastName.java b/module-pets/src/main/java/petclinic/modules/pets/types/LastName.java
index 5fe25bc..e306753 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/types/LastName.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/types/LastName.java
@@ -5,10 +5,10 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import org.apache.isis.applib.annotation.Parameter;
-import org.apache.isis.applib.annotation.ParameterLayout;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.spec.AbstractSpecification;
+import org.apache.causeway.applib.annotation.Parameter;
+import org.apache.causeway.applib.annotation.ParameterLayout;
+import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.spec.AbstractSpecification;
 
 @Property(maxLength = LastName.MAX_LEN, mustSatisfy = LastName.Spec.class)
 @Parameter(maxLength = LastName.MAX_LEN, mustSatisfy = LastName.Spec.class)
diff --git a/module-pets/src/main/java/petclinic/modules/pets/types/Notes.java b/module-pets/src/main/java/petclinic/modules/pets/types/Notes.java
index 74156e1..c29f432 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/types/Notes.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/types/Notes.java
@@ -5,12 +5,12 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.Parameter;
-import org.apache.isis.applib.annotation.ParameterLayout;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Where;
+import org.apache.causeway.applib.annotation.Editing;
+import org.apache.causeway.applib.annotation.Parameter;
+import org.apache.causeway.applib.annotation.ParameterLayout;
+import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
+import org.apache.causeway.applib.annotation.Where;
 
 @Property(editing = Editing.ENABLED, maxLength = Notes.MAX_LEN)
 @PropertyLayout(named = "Notes", multiLine = 10, hidden = Where.ALL_TABLES)
diff --git a/module-pets/src/main/java/petclinic/modules/pets/types/PetName.java b/module-pets/src/main/java/petclinic/modules/pets/types/PetName.java
index 035d085..4088527 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/types/PetName.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/types/PetName.java
@@ -5,10 +5,10 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Parameter;
-import org.apache.isis.applib.annotation.ParameterLayout;
-import org.apache.isis.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.Optionality;
+import org.apache.causeway.applib.annotation.Parameter;
+import org.apache.causeway.applib.annotation.ParameterLayout;
+import org.apache.causeway.applib.annotation.Property;
 
 @Property(maxLength = PetName.MAX_LEN, optionality = Optionality.MANDATORY)
 @Parameter(maxLength = PetName.MAX_LEN, optionality = Optionality.MANDATORY)
diff --git a/module-pets/src/main/java/petclinic/modules/pets/types/PhoneNumber.java b/module-pets/src/main/java/petclinic/modules/pets/types/PhoneNumber.java
index 33821cf..99d25be 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/types/PhoneNumber.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/types/PhoneNumber.java
@@ -5,12 +5,12 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.Optionality;
-import org.apache.isis.applib.annotation.Parameter;
-import org.apache.isis.applib.annotation.ParameterLayout;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.causeway.applib.annotation.Editing;
+import org.apache.causeway.applib.annotation.Optionality;
+import org.apache.causeway.applib.annotation.Parameter;
+import org.apache.causeway.applib.annotation.ParameterLayout;
+import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
 
 @Property(
         editing = Editing.ENABLED,
diff --git a/module-visits/pom.xml b/module-visits/pom.xml
index 1345717..c076f18 100644
--- a/module-visits/pom.xml
+++ b/module-visits/pom.xml
@@ -5,7 +5,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.isis.tutorials</groupId>
+        <groupId>org.apache.causeway.tutorials</groupId>
         <artifactId>petclinic</artifactId>
         <version>1.0.0-SNAPSHOT</version>
     </parent>
@@ -41,18 +41,18 @@
         <!-- ISIS API -->
 
         <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-applib</artifactId>
+            <groupId>org.apache.causeway.core</groupId>
+            <artifactId>causeway-applib</artifactId>
         </dependency>
 
         <dependency>
-            <groupId>org.apache.isis.persistence</groupId>
-            <artifactId>isis-persistence-jpa-eclipselink</artifactId>
+            <groupId>org.apache.causeway.persistence</groupId>
+            <artifactId>causeway-persistence-jpa-eclipselink</artifactId>
         </dependency>
 
         <dependency>
-            <groupId>org.apache.isis.testing</groupId>
-            <artifactId>isis-testing-fixtures-applib</artifactId>
+            <groupId>org.apache.causeway.testing</groupId>
+            <artifactId>causeway-testing-fixtures-applib</artifactId>
         </dependency>
 
         <!-- IDE support (optional) -->
@@ -65,25 +65,22 @@
         <!-- TESTS -->
 
         <dependency>
-            <groupId>org.apache.isis.mavendeps</groupId>
-            <artifactId>isis-mavendeps-unittests</artifactId>
-            <type>pom</type>
+            <groupId>org.apache.causeway.testing</groupId>
+            <artifactId>causeway-testing-unittestsupport-applib</artifactId>
             <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.jmock</groupId>
-                    <artifactId>jmock-junit4</artifactId>
-                </exclusion>
-            </exclusions>
         </dependency>
 
         <dependency>
-            <groupId>org.apache.isis.mavendeps</groupId>
-            <artifactId>isis-mavendeps-integtests</artifactId>
-            <type>pom</type>
+            <groupId>org.apache.causeway.testing</groupId>
+            <artifactId>causeway-testing-fakedata-applib</artifactId>
             <scope>test</scope>
         </dependency>
 
+        <dependency>
+            <groupId>org.apache.causeway.testing</groupId>
+            <artifactId>causeway-testing-integtestsupport-applib</artifactId>
+            <scope>test</scope>
+        </dependency>
 
     </dependencies>
 
diff --git a/module-visits/src/main/java/petclinic/modules/visits/VisitsModule.java b/module-visits/src/main/java/petclinic/modules/visits/VisitsModule.java
index 29b941d..0626072 100644
--- a/module-visits/src/main/java/petclinic/modules/visits/VisitsModule.java
+++ b/module-visits/src/main/java/petclinic/modules/visits/VisitsModule.java
@@ -6,8 +6,8 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
-import org.apache.isis.testing.fixtures.applib.modules.ModuleWithFixtures;
+import org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript;
+import org.apache.causeway.testing.fixtures.applib.modules.ModuleWithFixtures;
 
 import petclinic.modules.pets.PetsModule;
 import petclinic.modules.pets.dom.petowner.PetOwner;
diff --git a/module-visits/src/main/java/petclinic/modules/visits/contributions/pet/Pet_bookVisit.java b/module-visits/src/main/java/petclinic/modules/visits/contributions/pet/Pet_bookVisit.java
index 6d1146d..48ae1d9 100644
--- a/module-visits/src/main/java/petclinic/modules/visits/contributions/pet/Pet_bookVisit.java
+++ b/module-visits/src/main/java/petclinic/modules/visits/contributions/pet/Pet_bookVisit.java
@@ -6,12 +6,12 @@ import java.util.List;
 
 import javax.inject.Inject;
 
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.Publishing;
-import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.services.clock.ClockService;
-import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.causeway.applib.annotation.Action;
+import org.apache.causeway.applib.annotation.ActionLayout;
+import org.apache.causeway.applib.annotation.Publishing;
+import org.apache.causeway.applib.annotation.SemanticsOf;
+import org.apache.causeway.applib.services.clock.ClockService;
+import org.apache.causeway.applib.services.repository.RepositoryService;
 
 import lombok.RequiredArgsConstructor;
 
diff --git a/module-visits/src/main/java/petclinic/modules/visits/contributions/pet/Pet_visits.java b/module-visits/src/main/java/petclinic/modules/visits/contributions/pet/Pet_visits.java
index 36e9b7b..bf8ed3f 100644
--- a/module-visits/src/main/java/petclinic/modules/visits/contributions/pet/Pet_visits.java
+++ b/module-visits/src/main/java/petclinic/modules/visits/contributions/pet/Pet_visits.java
@@ -4,8 +4,8 @@ import java.util.List;
 
 import javax.inject.Inject;
 
-import org.apache.isis.applib.annotation.Collection;
-import org.apache.isis.applib.annotation.CollectionLayout;
+import org.apache.causeway.applib.annotation.Collection;
+import org.apache.causeway.applib.annotation.CollectionLayout;
 
 import lombok.RequiredArgsConstructor;
 
diff --git a/module-visits/src/main/java/petclinic/modules/visits/dom/visit/Visit.java b/module-visits/src/main/java/petclinic/modules/visits/dom/visit/Visit.java
index 9923aeb..d5bf491 100644
--- a/module-visits/src/main/java/petclinic/modules/visits/dom/visit/Visit.java
+++ b/module-visits/src/main/java/petclinic/modules/visits/dom/visit/Visit.java
@@ -5,6 +5,7 @@ import java.time.format.DateTimeFormatter;
 import java.util.Comparator;
 
 import javax.inject.Inject;
+import javax.inject.Named;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.EntityListeners;
@@ -21,14 +22,14 @@ import javax.persistence.UniqueConstraint;
 import javax.persistence.Version;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.DomainObjectLayout;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Publishing;
-import org.apache.isis.applib.jaxb.PersistentEntityAdapter;
-import org.apache.isis.applib.services.title.TitleService;
-import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener;
+import org.apache.causeway.applib.annotation.DomainObject;
+import org.apache.causeway.applib.annotation.DomainObjectLayout;
+import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
+import org.apache.causeway.applib.annotation.Publishing;
+import org.apache.causeway.applib.jaxb.PersistentEntityAdapter;
+import org.apache.causeway.applib.services.title.TitleService;
+import org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
 
 import lombok.AccessLevel;
 import lombok.Getter;
@@ -53,8 +54,9 @@ import petclinic.modules.visits.types.Reason;
         @UniqueConstraint(name = "Visit__pet_visitAt__UNQ", columnNames = {"owner_id", "name"})
     }
 )
-@EntityListeners(IsisEntityListener.class)
-@DomainObject(logicalTypeName = "visits.Visit", entityChangePublishing = Publishing.ENABLED)
+@EntityListeners(CausewayEntityListener.class)
+@Named("visits.Visit")
+@DomainObject(entityChangePublishing = Publishing.ENABLED)
 @DomainObjectLayout()
 @NoArgsConstructor(access = AccessLevel.PUBLIC)
 @XmlJavaTypeAdapter(PersistentEntityAdapter.class)
diff --git a/module-visits/src/main/java/petclinic/modules/visits/subscribers/PetOwnerForVisitsSubscriber.java b/module-visits/src/main/java/petclinic/modules/visits/subscribers/PetOwnerForVisitsSubscriber.java
index f391988..b39cb92 100644
--- a/module-visits/src/main/java/petclinic/modules/visits/subscribers/PetOwnerForVisitsSubscriber.java
+++ b/module-visits/src/main/java/petclinic/modules/visits/subscribers/PetOwnerForVisitsSubscriber.java
@@ -7,8 +7,8 @@ import javax.inject.Inject;
 import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Service;
 
-import org.apache.isis.applib.services.repository.RepositoryService;
-import org.apache.isis.applib.services.title.TitleService;
+import org.apache.causeway.applib.services.repository.RepositoryService;
+import org.apache.causeway.applib.services.title.TitleService;
 
 import petclinic.modules.pets.dom.pet.Pet;
 import petclinic.modules.pets.dom.pet.PetRepository;
diff --git a/module-visits/src/main/java/petclinic/modules/visits/types/Reason.java b/module-visits/src/main/java/petclinic/modules/visits/types/Reason.java
index 2df789c..bb9c903 100644
--- a/module-visits/src/main/java/petclinic/modules/visits/types/Reason.java
+++ b/module-visits/src/main/java/petclinic/modules/visits/types/Reason.java
@@ -5,12 +5,12 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-import org.apache.isis.applib.annotation.Editing;
-import org.apache.isis.applib.annotation.Parameter;
-import org.apache.isis.applib.annotation.ParameterLayout;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.annotation.Where;
+import org.apache.causeway.applib.annotation.Editing;
+import org.apache.causeway.applib.annotation.Parameter;
+import org.apache.causeway.applib.annotation.ParameterLayout;
+import org.apache.causeway.applib.annotation.Property;
+import org.apache.causeway.applib.annotation.PropertyLayout;
+import org.apache.causeway.applib.annotation.Where;
 
 @Property(maxLength = Reason.MAX_LEN)
 @PropertyLayout(named = "Reason")
diff --git a/module-visits/src/test/java/petclinic/modules/visits/contributions/pet/Pet_bookVisit_Test.java b/module-visits/src/test/java/petclinic/modules/visits/contributions/pet/Pet_bookVisit_Test.java
index 77e22ce..f58094f 100644
--- a/module-visits/src/test/java/petclinic/modules/visits/contributions/pet/Pet_bookVisit_Test.java
+++ b/module-visits/src/test/java/petclinic/modules/visits/contributions/pet/Pet_bookVisit_Test.java
@@ -11,8 +11,8 @@ import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.junit.jupiter.MockitoExtension;
 
-import org.apache.isis.applib.clock.VirtualClock;
-import org.apache.isis.applib.services.clock.ClockService;
+import org.apache.causeway.applib.clock.VirtualClock;
+import org.apache.causeway.applib.services.clock.ClockService;
 
 @ExtendWith(MockitoExtension.class)
 class Pet_bookVisit_Test {
diff --git a/module-visits/src/test/java/petclinic/modules/visits/integtest/VisitsModuleIntegTestAbstract.java b/module-visits/src/test/java/petclinic/modules/visits/integtest/VisitsModuleIntegTestAbstract.java
index 63eb1f5..8829494 100644
--- a/module-visits/src/test/java/petclinic/modules/visits/integtest/VisitsModuleIntegTestAbstract.java
+++ b/module-visits/src/test/java/petclinic/modules/visits/integtest/VisitsModuleIntegTestAbstract.java
@@ -8,13 +8,13 @@ import org.springframework.context.annotation.PropertySource;
 import org.springframework.context.annotation.PropertySources;
 import org.springframework.test.context.ActiveProfiles;
 
-import org.apache.isis.core.config.presets.IsisPresets;
-import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
-import org.apache.isis.persistence.jpa.eclipselink.IsisModulePersistenceJpaEclipselink;
-import org.apache.isis.security.bypass.IsisModuleSecurityBypass;
-import org.apache.isis.testing.fakedata.applib.IsisModuleTestingFakeDataApplib;
-import org.apache.isis.testing.fixtures.applib.IsisIntegrationTestAbstractWithFixtures;
-import org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
+import org.apache.causeway.core.config.presets.CausewayPresets;
+import org.apache.causeway.core.runtimeservices.CausewayModuleCoreRuntimeServices;
+import org.apache.causeway.persistence.jpa.eclipselink.CausewayModulePersistenceJpaEclipselink;
+import org.apache.causeway.security.bypass.CausewayModuleSecurityBypass;
+import org.apache.causeway.testing.fakedata.applib.CausewayModuleTestingFakeDataApplib;
+import org.apache.causeway.testing.fixtures.applib.CausewayIntegrationTestAbstractWithFixtures;
+import org.apache.causeway.testing.fixtures.applib.CausewayModuleTestingFixturesApplib;
 
 import petclinic.modules.pets.PetsModule;
 import petclinic.modules.visits.VisitsModule;
@@ -24,24 +24,24 @@ import petclinic.modules.visits.VisitsModule;
         classes = VisitsModuleIntegTestAbstract.TestApp.class
 )
 @ActiveProfiles("test")
-public abstract class VisitsModuleIntegTestAbstract extends IsisIntegrationTestAbstractWithFixtures {
+public abstract class VisitsModuleIntegTestAbstract extends CausewayIntegrationTestAbstractWithFixtures {
 
     @SpringBootConfiguration
     @EnableAutoConfiguration
     @Import({
 
-            IsisModuleCoreRuntimeServices.class,
-            IsisModuleSecurityBypass.class,
-            IsisModulePersistenceJpaEclipselink.class,
-            IsisModuleTestingFixturesApplib.class,
+            CausewayModuleCoreRuntimeServices.class,
+            CausewayModuleSecurityBypass.class,
+            CausewayModulePersistenceJpaEclipselink.class,
+            CausewayModuleTestingFixturesApplib.class,
 
-            IsisModuleTestingFakeDataApplib.class,
+            CausewayModuleTestingFakeDataApplib.class,
 
             VisitsModule.class
     })
     @PropertySources({
-            @PropertySource(IsisPresets.H2InMemory_withUniqueSchema),
-            @PropertySource(IsisPresets.UseLog4j2Test),
+            @PropertySource(CausewayPresets.H2InMemory_withUniqueSchema),
+            @PropertySource(CausewayPresets.UseLog4j2Test),
     })
     public static class TestApp {
     }
diff --git a/module-visits/src/test/java/petclinic/modules/visits/integtest/tests/Pet_bookVisit_IntegTest.java b/module-visits/src/test/java/petclinic/modules/visits/integtest/tests/Pet_bookVisit_IntegTest.java
index de3508c..39df642 100644
--- a/module-visits/src/test/java/petclinic/modules/visits/integtest/tests/Pet_bookVisit_IntegTest.java
+++ b/module-visits/src/test/java/petclinic/modules/visits/integtest/tests/Pet_bookVisit_IntegTest.java
@@ -11,10 +11,10 @@ import org.junit.jupiter.api.Test;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
-import org.apache.isis.applib.services.clock.ClockService;
-import org.apache.isis.applib.services.wrapper.DisabledException;
-import org.apache.isis.applib.services.wrapper.InvalidException;
-import org.apache.isis.testing.fakedata.applib.services.FakeDataService;
+import org.apache.causeway.applib.services.clock.ClockService;
+import org.apache.causeway.applib.services.wrapper.DisabledException;
+import org.apache.causeway.applib.services.wrapper.InvalidException;
+import org.apache.causeway.testing.fakedata.applib.services.FakeDataService;
 
 import petclinic.modules.pets.dom.pet.Pet;
 import petclinic.modules.pets.fixture.pet.Pet_persona;
diff --git a/module-visits/src/test/resources/application-test.yml b/module-visits/src/test/resources/application-test.yml
index 038efed..ac83367 100644
--- a/module-visits/src/test/resources/application-test.yml
+++ b/module-visits/src/test/resources/application-test.yml
@@ -1,4 +1,4 @@
-isis:
+causeway:
   persistence:
     schema:
       auto-create-schemas: pets,visits
diff --git a/pom.xml b/pom.xml
index e0bc8e4..3dcd0e3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,13 +4,13 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.isis.app</groupId>
-        <artifactId>isis-app-starter-parent</artifactId>
-        <version>2.0.0-M6</version>
+        <groupId>org.apache.causeway.app</groupId>
+        <artifactId>causeway-app-starter-parent</artifactId>
+        <version>2.0.0-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
-    <groupId>org.apache.isis.tutorials</groupId>
+    <groupId>org.apache.causeway.tutorials</groupId>
     <artifactId>petclinic</artifactId>
     <version>1.0.0-SNAPSHOT</version>
 
@@ -19,8 +19,8 @@
     <packaging>pom</packaging>
 
     <properties>
-        <isis.version>2.0.0-M6</isis.version>
-        <java.version>11</java.version>
+        <causeway.version>2.0.0-SNAPSHOT</causeway.version>
+        <java.version>21</java.version>
         <maven-cucumber-reporting.version>5.3.0</maven-cucumber-reporting.version>
         <archunit.version>0.14.1</archunit.version>
         <skipBDD>${skipTests}</skipBDD>
diff --git a/webapp-tests/pom.xml b/webapp-tests/pom.xml
index f8cdc1e..ca0b2e5 100644
--- a/webapp-tests/pom.xml
+++ b/webapp-tests/pom.xml
@@ -3,7 +3,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.isis.tutorials</groupId>
+        <groupId>org.apache.causeway.tutorials</groupId>
         <artifactId>petclinic</artifactId>
         <version>1.0.0-SNAPSHOT</version>
     </parent>
@@ -43,9 +43,32 @@
         <!-- TESTING -->
 
         <dependency>
-            <groupId>org.apache.isis.mavendeps</groupId>
-            <artifactId>isis-mavendeps-integtests</artifactId>
-            <type>pom</type>
+            <groupId>org.apache.causeway.testing</groupId>
+            <artifactId>causeway-testing-unittestsupport-applib</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.causeway.testing</groupId>
+            <artifactId>causeway-testing-fakedata-applib</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.causeway.testing</groupId>
+            <artifactId>causeway-testing-integtestsupport-applib</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.causeway.testing</groupId>
+            <artifactId>causeway-testing-fixtures-applib</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.causeway.persistence</groupId>
+            <artifactId>causeway-persistence-jpa-eclipselink</artifactId>
             <scope>test</scope>
         </dependency>
 
diff --git a/webapp-tests/src/test/java/petclinic/webapp/integtests/WebAppIntegTestAbstract.java b/webapp-tests/src/test/java/petclinic/webapp/integtests/WebAppIntegTestAbstract.java
index ba9ea41..6d3be00 100644
--- a/webapp-tests/src/test/java/petclinic/webapp/integtests/WebAppIntegTestAbstract.java
+++ b/webapp-tests/src/test/java/petclinic/webapp/integtests/WebAppIntegTestAbstract.java
@@ -9,12 +9,12 @@ import org.springframework.context.annotation.PropertySources;
 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 import org.springframework.test.context.ActiveProfiles;
 
-import org.apache.isis.core.config.presets.IsisPresets;
-import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
-import org.apache.isis.persistence.jpa.eclipselink.IsisModulePersistenceJpaEclipselink;
-import org.apache.isis.security.bypass.IsisModuleSecurityBypass;
-import org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
-import org.apache.isis.testing.integtestsupport.applib.IsisIntegrationTestAbstract;
+import org.apache.causeway.core.config.presets.CausewayPresets;
+import org.apache.causeway.core.runtimeservices.CausewayModuleCoreRuntimeServices;
+import org.apache.causeway.persistence.jpa.eclipselink.CausewayModulePersistenceJpaEclipselink;
+import org.apache.causeway.security.bypass.CausewayModuleSecurityBypass;
+import org.apache.causeway.testing.fixtures.applib.CausewayModuleTestingFixturesApplib;
+import org.apache.causeway.testing.integtestsupport.applib.CausewayIntegrationTestAbstract;
 
 import petclinic.modules.pets.PetsModule;
 import petclinic.webapp.application.ApplicationModule;
@@ -27,7 +27,7 @@ import petclinic.webapp.application.ApplicationModule;
     }
 )
 @ActiveProfiles("test")
-public abstract class WebAppIntegTestAbstract extends IsisIntegrationTestAbstract {
+public abstract class WebAppIntegTestAbstract extends CausewayIntegrationTestAbstract {
 
     /**
      * Compared to the production app manifest <code>petclinic.webapp.AppManifest</code>,
@@ -38,16 +38,16 @@ public abstract class WebAppIntegTestAbstract extends IsisIntegrationTestAbstrac
     @EnableJpaRepositories
     @Import({
 
-        IsisModuleCoreRuntimeServices.class,
-        IsisModuleSecurityBypass.class,
-        IsisModulePersistenceJpaEclipselink.class,
-        IsisModuleTestingFixturesApplib.class,
+        CausewayModuleCoreRuntimeServices.class,
+        CausewayModuleSecurityBypass.class,
+        CausewayModulePersistenceJpaEclipselink.class,
+        CausewayModuleTestingFixturesApplib.class,
 
         PetsModule.class
     })
     @PropertySources({
-        @PropertySource(IsisPresets.H2InMemory_withUniqueSchema),
-        @PropertySource(IsisPresets.UseLog4j2Test),
+        @PropertySource(CausewayPresets.H2InMemory_withUniqueSchema),
+        @PropertySource(CausewayPresets.UseLog4j2Test),
     })
     public static class TestApp {
 
diff --git a/webapp-tests/src/test/java/petclinic/webapp/integtests/metamodel/SwaggerExport_IntegTest.java b/webapp-tests/src/test/java/petclinic/webapp/integtests/metamodel/SwaggerExport_IntegTest.java
index c2b9ace..b839e18 100644
--- a/webapp-tests/src/test/java/petclinic/webapp/integtests/metamodel/SwaggerExport_IntegTest.java
+++ b/webapp-tests/src/test/java/petclinic/webapp/integtests/metamodel/SwaggerExport_IntegTest.java
@@ -1,25 +1,23 @@
 package petclinic.webapp.integtests.metamodel;
 
+import lombok.val;
+import petclinic.webapp.integtests.WebAppIntegTestAbstract;
+
 import java.io.IOException;
 
 import javax.inject.Inject;
 
+import org.apache.causeway.applib.services.registry.ServiceRegistry;
+import org.apache.causeway.applib.services.swagger.Format;
+import org.apache.causeway.applib.services.swagger.Visibility;
+import org.apache.causeway.testing.integtestsupport.applib.swagger.SwaggerExporter;
+import org.apache.causeway.viewer.restfulobjects.viewer.CausewayModuleViewerRestfulObjectsViewer;
 import org.junit.jupiter.api.Test;
 import org.springframework.context.annotation.Import;
 import org.springframework.test.annotation.DirtiesContext;
 
-import org.apache.isis.applib.services.registry.ServiceRegistry;
-import org.apache.isis.applib.services.swagger.Format;
-import org.apache.isis.applib.services.swagger.Visibility;
-import org.apache.isis.testing.integtestsupport.applib.swagger.SwaggerExporter;
-import org.apache.isis.viewer.restfulobjects.jaxrsresteasy4.IsisModuleViewerRestfulObjectsJaxrsResteasy4;
-
-import lombok.val;
-
-import petclinic.webapp.integtests.WebAppIntegTestAbstract;
-
 @Import({
-        IsisModuleViewerRestfulObjectsJaxrsResteasy4.class
+        CausewayModuleViewerRestfulObjectsViewer.class
 })
 @DirtiesContext
 class SwaggerExport_IntegTest extends WebAppIntegTestAbstract {
diff --git a/webapp-tests/src/test/java/petclinic/webapp/integtests/metamodel/ValidateDomainModel_IntegTest.java b/webapp-tests/src/test/java/petclinic/webapp/integtests/metamodel/ValidateDomainModel_IntegTest.java
index 2a36424..7a53580 100644
--- a/webapp-tests/src/test/java/petclinic/webapp/integtests/metamodel/ValidateDomainModel_IntegTest.java
+++ b/webapp-tests/src/test/java/petclinic/webapp/integtests/metamodel/ValidateDomainModel_IntegTest.java
@@ -4,8 +4,8 @@ import javax.inject.Inject;
 
 import org.junit.jupiter.api.Test;
 
-import org.apache.isis.applib.services.registry.ServiceRegistry;
-import org.apache.isis.testing.integtestsupport.applib.validate.DomainModelValidator;
+import org.apache.causeway.applib.services.registry.ServiceRegistry;
+import org.apache.causeway.testing.integtestsupport.applib.validate.DomainModelValidator;
 
 import petclinic.webapp.integtests.WebAppIntegTestAbstract;
 
diff --git a/webapp-tests/src/test/java/petclinic/webapp/integtests/smoke/Smoke_IntegTest.java b/webapp-tests/src/test/java/petclinic/webapp/integtests/smoke/Smoke_IntegTest.java
index 682b77f..73a0382 100644
--- a/webapp-tests/src/test/java/petclinic/webapp/integtests/smoke/Smoke_IntegTest.java
+++ b/webapp-tests/src/test/java/petclinic/webapp/integtests/smoke/Smoke_IntegTest.java
@@ -4,12 +4,12 @@ import java.util.List;
 
 import javax.inject.Inject;
 
-import org.apache.isis.applib.services.wrapper.InvalidException;
+import org.apache.causeway.applib.services.wrapper.InvalidException;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.springframework.transaction.annotation.Transactional;
 
-import org.apache.isis.applib.services.xactn.TransactionService;
+import org.apache.causeway.applib.services.xactn.TransactionService;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
diff --git a/webapp-tests/src/test/resources/application-test.yml b/webapp-tests/src/test/resources/application-test.yml
index fa32cda..5f04c5f 100644
--- a/webapp-tests/src/test/resources/application-test.yml
+++ b/webapp-tests/src/test/resources/application-test.yml
@@ -1,4 +1,6 @@
-isis:
+causeway:
   persistence:
     schema:
-      auto-create-schemas: "pets"
+      auto-create-schemas:
+      - "pets"
+      - "visits"
diff --git a/webapp/pom.xml b/webapp/pom.xml
index 111d4aa..5383f52 100644
--- a/webapp/pom.xml
+++ b/webapp/pom.xml
@@ -3,7 +3,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.isis.tutorials</groupId>
+        <groupId>org.apache.causeway.tutorials</groupId>
         <artifactId>petclinic</artifactId>
         <version>1.0.0-SNAPSHOT</version>
     </parent>
@@ -63,19 +63,19 @@
 
         <!-- isis -->
         <dependency>
-            <groupId>org.apache.isis.mavendeps</groupId>
-            <artifactId>isis-mavendeps-webapp</artifactId>
+            <groupId>org.apache.causeway.mavendeps</groupId>
+            <artifactId>causeway-mavendeps-webapp</artifactId>
             <type>pom</type>
         </dependency>
 
         <dependency>
-            <groupId>org.apache.isis.security</groupId>
-            <artifactId>isis-security-shiro</artifactId>
+            <groupId>org.apache.causeway.security</groupId>
+            <artifactId>causeway-security-shiro</artifactId>
         </dependency>
 
         <dependency>
-            <groupId>org.apache.isis.persistence</groupId>
-            <artifactId>isis-persistence-jpa-eclipselink</artifactId>
+            <groupId>org.apache.causeway.persistence</groupId>
+            <artifactId>causeway-persistence-jpa-eclipselink</artifactId>
         </dependency>
 
         <dependency>
@@ -84,13 +84,13 @@
         </dependency>
 
         <dependency>
-            <groupId>org.apache.isis.testing</groupId>
-            <artifactId>isis-testing-h2console-ui</artifactId>
+            <groupId>org.apache.causeway.testing</groupId>
+            <artifactId>causeway-testing-h2console-ui</artifactId>
         </dependency>
 
         <dependency>
-            <groupId>org.apache.isis.extensions</groupId>
-            <artifactId>isis-extensions-flyway-impl</artifactId>
+            <groupId>org.apache.causeway.extensions</groupId>
+            <artifactId>causeway-extensions-flyway-impl</artifactId>
         </dependency>
 
         <dependency>
diff --git a/webapp/src/main/java/petclinic/webapp/AppManifest.java b/webapp/src/main/java/petclinic/webapp/AppManifest.java
index bf225fa..3e1d9e5 100644
--- a/webapp/src/main/java/petclinic/webapp/AppManifest.java
+++ b/webapp/src/main/java/petclinic/webapp/AppManifest.java
@@ -1,19 +1,20 @@
 package petclinic.webapp;
 
+import org.apache.causeway.viewer.graphql.viewer.CausewayModuleViewerGraphqlViewer;
+import org.apache.causeway.viewer.restfulobjects.viewer.CausewayModuleViewerRestfulObjectsViewer;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 import org.springframework.context.annotation.PropertySource;
 import org.springframework.context.annotation.PropertySources;
 
-import org.apache.isis.core.config.presets.IsisPresets;
-import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
-import org.apache.isis.extensions.flyway.impl.IsisModuleExtFlywayImpl;
-import org.apache.isis.persistence.jpa.eclipselink.IsisModulePersistenceJpaEclipselink;
-import org.apache.isis.security.shiro.IsisModuleSecurityShiro;
-import org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
-import org.apache.isis.testing.h2console.ui.IsisModuleTestingH2ConsoleUi;
-import org.apache.isis.viewer.restfulobjects.jaxrsresteasy4.IsisModuleViewerRestfulObjectsJaxrsResteasy4;
-import org.apache.isis.viewer.wicket.viewer.IsisModuleViewerWicketViewer;
+import org.apache.causeway.core.config.presets.CausewayPresets;
+import org.apache.causeway.core.runtimeservices.CausewayModuleCoreRuntimeServices;
+import org.apache.causeway.extensions.flyway.impl.CausewayModuleExtFlywayImpl;
+import org.apache.causeway.persistence.jpa.eclipselink.CausewayModulePersistenceJpaEclipselink;
+import org.apache.causeway.security.shiro.CausewayModuleSecurityShiro;
+import org.apache.causeway.testing.fixtures.applib.CausewayModuleTestingFixturesApplib;
+import org.apache.causeway.testing.h2console.ui.CausewayModuleTestingH2ConsoleUi;
+import org.apache.causeway.viewer.wicket.viewer.CausewayModuleViewerWicketViewer;
 
 import petclinic.webapp.application.ApplicationModule;
 import petclinic.webapp.application.fixture.scenarios.PetClinicDemo;
@@ -22,16 +23,17 @@ import petclinic.webapp.quartz.QuartzModule;
 
 @Configuration
 @Import({
-        IsisModuleCoreRuntimeServices.class,
-        IsisModuleSecurityShiro.class,
-        IsisModulePersistenceJpaEclipselink.class,
-        IsisModuleViewerRestfulObjectsJaxrsResteasy4.class,
-        IsisModuleViewerWicketViewer.class,
+        CausewayModuleCoreRuntimeServices.class,
+        CausewayModuleSecurityShiro.class,
+        CausewayModulePersistenceJpaEclipselink.class,
+        CausewayModuleViewerGraphqlViewer.class,
+        CausewayModuleViewerRestfulObjectsViewer.class,
+        CausewayModuleViewerWicketViewer.class,
 
-        IsisModuleTestingFixturesApplib.class,
-        IsisModuleTestingH2ConsoleUi.class,
+        CausewayModuleTestingFixturesApplib.class,
+        CausewayModuleTestingH2ConsoleUi.class,
 
-        IsisModuleExtFlywayImpl.class,
+        CausewayModuleExtFlywayImpl.class,
 
         ApplicationModule.class,
         CustomModule.class,
@@ -41,7 +43,7 @@ import petclinic.webapp.quartz.QuartzModule;
         PetClinicDemo.class
 })
 @PropertySources({
-        @PropertySource(IsisPresets.DebugDiscovery),
+        @PropertySource(CausewayPresets.DebugDiscovery),
 })
 public class AppManifest {
 }
diff --git a/webapp/src/main/java/petclinic/webapp/PetClinicApp.java b/webapp/src/main/java/petclinic/webapp/PetClinicApp.java
index bf1084d..44be5ea 100644
--- a/webapp/src/main/java/petclinic/webapp/PetClinicApp.java
+++ b/webapp/src/main/java/petclinic/webapp/PetClinicApp.java
@@ -5,7 +5,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
 import org.springframework.context.annotation.Import;
 
-import org.apache.isis.core.config.presets.IsisPresets;
+import org.apache.causeway.core.config.presets.CausewayPresets;
 
 @SpringBootApplication
 @Import({
@@ -19,7 +19,7 @@ public class PetClinicApp extends SpringBootServletInitializer {
      * entry point by searching for classes having a {@code main(...)}
      */
     public static void main(String[] args) {
-        IsisPresets.prototyping();
+        CausewayPresets.prototyping();
         SpringApplication.run(new Class[] { PetClinicApp.class }, args);
     }
 
diff --git a/webapp/src/main/java/petclinic/webapp/application/fixture/scenarios/PetClinicDemo.java b/webapp/src/main/java/petclinic/webapp/application/fixture/scenarios/PetClinicDemo.java
index 78c4889..d2228a7 100644
--- a/webapp/src/main/java/petclinic/webapp/application/fixture/scenarios/PetClinicDemo.java
+++ b/webapp/src/main/java/petclinic/webapp/application/fixture/scenarios/PetClinicDemo.java
@@ -2,8 +2,8 @@ package petclinic.webapp.application.fixture.scenarios;
 
 import javax.inject.Inject;
 
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
-import org.apache.isis.testing.fixtures.applib.modules.ModuleWithFixturesService;
+import org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript;
+import org.apache.causeway.testing.fixtures.applib.modules.ModuleWithFixturesService;
 
 import petclinic.modules.pets.fixture.petowner.PetOwner_persona;
 import petclinic.modules.pets.fixture.pet.Pet_persona;
diff --git a/webapp/src/main/java/petclinic/webapp/application/services/health/HealthCheckServiceImpl.java b/webapp/src/main/java/petclinic/webapp/application/services/health/HealthCheckServiceImpl.java
index bcacf03..816f4fc 100644
--- a/webapp/src/main/java/petclinic/webapp/application/services/health/HealthCheckServiceImpl.java
+++ b/webapp/src/main/java/petclinic/webapp/application/services/health/HealthCheckServiceImpl.java
@@ -5,8 +5,8 @@ import javax.inject.Named;
 
 import org.springframework.stereotype.Service;
 
-import org.apache.isis.applib.services.health.Health;
-import org.apache.isis.applib.services.health.HealthCheckService;
+import org.apache.causeway.applib.services.health.Health;
+import org.apache.causeway.applib.services.health.HealthCheckService;
 
 import petclinic.modules.pets.dom.petowner.PetOwners;
 
diff --git a/webapp/src/main/java/petclinic/webapp/application/services/homepage/HomePageViewModel.java b/webapp/src/main/java/petclinic/webapp/application/services/homepage/HomePageViewModel.java
index 7a3bb65..22155af 100644
--- a/webapp/src/main/java/petclinic/webapp/application/services/homepage/HomePageViewModel.java
+++ b/webapp/src/main/java/petclinic/webapp/application/services/homepage/HomePageViewModel.java
@@ -4,11 +4,12 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 import javax.inject.Inject;
+import javax.inject.Named;
 
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.DomainObjectLayout;
-import org.apache.isis.applib.annotation.HomePage;
-import org.apache.isis.applib.annotation.Nature;
+import org.apache.causeway.applib.annotation.DomainObject;
+import org.apache.causeway.applib.annotation.DomainObjectLayout;
+import org.apache.causeway.applib.annotation.HomePage;
+import org.apache.causeway.applib.annotation.Nature;
 
 import petclinic.modules.pets.dom.pet.Pet;
 import petclinic.modules.pets.dom.pet.PetRepository;
@@ -16,10 +17,8 @@ import petclinic.modules.pets.dom.petowner.PetOwner;
 import petclinic.modules.pets.dom.petowner.PetOwnerRepository;
 import petclinic.modules.visits.dom.visit.VisitRepository;
 
-@DomainObject(
-        nature = Nature.VIEW_MODEL,
-        logicalTypeName = "petclinic.HomePageViewModel"
-        )
+@Named("petclinic.HomePageViewModel")
+@DomainObject(nature = Nature.VIEW_MODEL)
 @HomePage
 @DomainObjectLayout()
 public class HomePageViewModel {
diff --git a/webapp/src/main/java/petclinic/webapp/application/services/homepage/HomePageViewModel_bookVisit.java b/webapp/src/main/java/petclinic/webapp/application/services/homepage/HomePageViewModel_bookVisit.java
index bdc1e21..ffd2713 100644
--- a/webapp/src/main/java/petclinic/webapp/application/services/homepage/HomePageViewModel_bookVisit.java
+++ b/webapp/src/main/java/petclinic/webapp/application/services/homepage/HomePageViewModel_bookVisit.java
@@ -6,9 +6,9 @@ import java.util.List;
 
 import javax.inject.Inject;
 
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.services.factory.FactoryService;
-import org.apache.isis.applib.services.wrapper.WrapperFactory;
+import org.apache.causeway.applib.annotation.Action;
+import org.apache.causeway.applib.services.factory.FactoryService;
+import org.apache.causeway.applib.services.wrapper.WrapperFactory;
 
 import lombok.RequiredArgsConstructor;
 
diff --git a/webapp/src/main/java/petclinic/webapp/application/services/homepage/VisitPlusPetOwner.java b/webapp/src/main/java/petclinic/webapp/application/services/homepage/VisitPlusPetOwner.java
index 7ddfdbc..6959ff0 100644
--- a/webapp/src/main/java/petclinic/webapp/application/services/homepage/VisitPlusPetOwner.java
+++ b/webapp/src/main/java/petclinic/webapp/application/services/homepage/VisitPlusPetOwner.java
@@ -2,17 +2,13 @@ package petclinic.webapp.application.services.homepage;
 
 import java.time.LocalDateTime;
 
+import javax.inject.Named;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.DomainObjectLayout;
-import org.apache.isis.applib.annotation.Nature;
-import org.apache.isis.applib.annotation.Projecting;
-import org.apache.isis.applib.annotation.Property;
-import org.apache.isis.applib.annotation.Where;
+import org.apache.causeway.applib.annotation.*;
 
 import lombok.Getter;
 import lombok.NoArgsConstructor;
@@ -21,7 +17,8 @@ import petclinic.modules.pets.dom.pet.Pet;
 import petclinic.modules.pets.dom.petowner.PetOwner;
 import petclinic.modules.visits.dom.visit.Visit;
 
-@DomainObject(nature=Nature.VIEW_MODEL, logicalTypeName = "petclinic.VisitPlusPetOwner")
+@Named("petclinic.VisitPlusPetOwner")
+@DomainObject(nature=Nature.VIEW_MODEL)
 @DomainObjectLayout(named = "Visit")
 @XmlRootElement
 @NoArgsConstructor
@@ -29,10 +26,8 @@ import petclinic.modules.visits.dom.visit.Visit;
 @XmlAccessorType(XmlAccessType.FIELD)
 public class VisitPlusPetOwner {
 
-    @Property(
-            projecting = Projecting.PROJECTED,
-            hidden = Where.EVERYWHERE
-    )
+    @Property(projecting = Projecting.PROJECTED)
+    @PropertyLayout(hidden = Where.EVERYWHERE)
     @Getter
     private Visit visit;
 
diff --git a/webapp/src/main/java/petclinic/webapp/custom/restapi/CustomController.java b/webapp/src/main/java/petclinic/webapp/custom/restapi/CustomController.java
index 6d8a095..bf94268 100644
--- a/webapp/src/main/java/petclinic/webapp/custom/restapi/CustomController.java
+++ b/webapp/src/main/java/petclinic/webapp/custom/restapi/CustomController.java
@@ -10,10 +10,10 @@ import javax.inject.Inject;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import org.apache.isis.applib.services.iactnlayer.InteractionContext;
-import org.apache.isis.applib.services.iactnlayer.InteractionService;
-import org.apache.isis.applib.services.user.UserMemento;
-import org.apache.isis.applib.services.xactn.TransactionalProcessor;
+import org.apache.causeway.applib.services.iactnlayer.InteractionContext;
+import org.apache.causeway.applib.services.iactnlayer.InteractionService;
+import org.apache.causeway.applib.services.user.UserMemento;
+import org.apache.causeway.applib.services.xactn.TransactionalProcessor;
 
 import lombok.RequiredArgsConstructor;
 
@@ -39,9 +39,11 @@ class CustomController {
             final Callable<T> callable) {
 
         return interactionService.call(
-                InteractionContext.ofUserWithSystemDefaults(UserMemento.ofName(username)),
-                () -> transactionalProcessor.callWithinCurrentTransactionElseCreateNew(callable))
-                .optionalElseFail(); // re-throws exception that has occurred, if any
+                    InteractionContext.ofUserWithSystemDefaults(UserMemento.ofName(username)),
+                    () -> transactionalProcessor.callWithinCurrentTransactionElseCreateNew(callable)
+                )
+                .ifFailureFail()
+                .getValue();
     }
 
 }
diff --git a/webapp/src/main/java/petclinic/webapp/quartz/job/SampleJob.java b/webapp/src/main/java/petclinic/webapp/quartz/job/SampleJob.java
index 051d71b..a1f4df4 100644
--- a/webapp/src/main/java/petclinic/webapp/quartz/job/SampleJob.java
+++ b/webapp/src/main/java/petclinic/webapp/quartz/job/SampleJob.java
@@ -12,10 +12,10 @@ import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 import org.springframework.stereotype.Component;
 
-import org.apache.isis.applib.services.iactnlayer.InteractionContext;
-import org.apache.isis.applib.services.iactnlayer.InteractionService;
-import org.apache.isis.applib.services.user.UserMemento;
-import org.apache.isis.applib.services.xactn.TransactionalProcessor;
+import org.apache.causeway.applib.services.iactnlayer.InteractionContext;
+import org.apache.causeway.applib.services.iactnlayer.InteractionService;
+import org.apache.causeway.applib.services.user.UserMemento;
+import org.apache.causeway.applib.services.xactn.TransactionalProcessor;
 
 import lombok.RequiredArgsConstructor;
 import lombok.extern.log4j.Log4j2;
@@ -48,8 +48,11 @@ public class SampleJob implements Job {
             final Callable<T> callable) {
 
         return interactionService.call(
-                InteractionContext.ofUserWithSystemDefaults(UserMemento.ofName(username)),
-                () -> transactionalProcessor.callWithinCurrentTransactionElseCreateNew(callable))
-                .optionalElseFail(); // re-throws exception that has occurred, if any
+                InteractionContext.ofUserWithSystemDefaults(
+                        UserMemento.ofName(username)),
+                        () -> transactionalProcessor.callWithinCurrentTransactionElseCreateNew(callable)
+                )
+                .ifFailureFail()
+                .getValue();
     }
 }
diff --git a/webapp/src/main/resources/application-custom.yml b/webapp/src/main/resources/application-custom.yml
index ce6cc40..51bcd5b 100644
--- a/webapp/src/main/resources/application-custom.yml
+++ b/webapp/src/main/resources/application-custom.yml
@@ -1,4 +1,4 @@
-isis:
+causeway:
   viewer:
     wicket:
       prompt-style: inline
diff --git a/webapp/src/main/resources/application-dev.yml b/webapp/src/main/resources/application-dev.yml
index 9582917..0d6ce0e 100644
--- a/webapp/src/main/resources/application-dev.yml
+++ b/webapp/src/main/resources/application-dev.yml
@@ -1,4 +1,4 @@
-isis:
+causeway:
   testing:
     fixtures:
       initial-script: petclinic.webapp.application.fixture.scenarios.PetClinicDemo
diff --git a/webapp/src/main/resources/application.yml b/webapp/src/main/resources/application.yml
index 5d1d898..357fb01 100644
--- a/webapp/src/main/resources/application.yml
+++ b/webapp/src/main/resources/application.yml
@@ -3,13 +3,12 @@
 #
 # See also config/application.properties
 #
-isis:
+causeway:
 
   applib:
     annotation:
       action:
-        explicit: true
-        command-publishing: ignore_safe
+        command-publishing: all
         execution-publishing: all
       action-layout:
         css-class:
@@ -23,15 +22,13 @@ isis:
       domain-object:
         editing: false
         entity-change-publishing: all
-
   core:
     meta-model:
       introspector:
         lock-after-full-introspection: true
+        mode: full
       validator:
         allow-deprecated: false
-        no-params-only: true
-        explicit-object-type: true
 
     runtime-services:
       translation:
@@ -39,22 +36,23 @@ isis:
           mode: disabled
 
   viewer:
-    wicket:
+    common:
       application:
         about: PetClinic
-        brand-logo-header: images/apache-isis/logo-48x48.png
-        css: css/application.css
+        brand-logo-signin: images/apache-causeway/logo-banner-591x120.png
+        brand-logo-header: images/apache-causeway/logo-48x48.png
         favicon-url: images/favicon.png
-        js: scripts/application.js
-        menubars-layout-xml: menubars.layout.xml
+        menubars-layout-file: menubars.layout.xml
         name: PetClinic
         # https://stackoverflow.com/a/38983935/56880
         version: @project.version@
-
       credit:
-        - url:  http://isis.apache.org
-          image: images/apache-isis/logo-48x48.png
-          name: Apache Isis
+        - image: images/apache-causeway/logo-65x48.png
+          name: Apache Causeway
+          url: https://causeway.apache.org
+    wicket:
+      css: css/application.css
+      js: scripts/application.js
 
       bookmarked-pages:
         show-chooser: true
@@ -66,6 +64,16 @@ isis:
       themes:
         show-chooser: true
 
+    graphql:
+      api-variant: query_with_mutations_non_spec_compliant
+      authentication:
+        fallback:
+          username: sven
+          roles:
+            - simple-superuser
+            - foo
+            - bar
+
   testing:
     fixtures:
       fixture-scripts-specification:
@@ -98,9 +106,68 @@ spring:
 
   quartz:
     job-store-type: memory
+  graphql:
+    graphiql:
+      enabled: true
+      path: "/graphiql"
 
 management:
   endpoint:
+    auditevents:
+      enabled: false
+    beans:
+      enabled: false
+    caches:
+      enabled: false
+    configprops:
+      enabled: false
+    conditions:
+      enabled: false
+    env:
+      enabled: false
+    flyway:
+      enabled: false
+    heapdump:
+      enabled: false
     health:
       enabled: true
+      probes:
+        enabled: false
+    httptrace:
+      enabled: false
+    info:
+      enabled: false
+    integrationgraph:
+      enabled: false
+    jolokia:
+      enabled: false
+    liquibase:
+      enabled: false
+    logfile:
+      enabled: false
+    loggers:
+      enabled: false
+    metrics:
+      enabled: false
+    prometheus:
+      enabled: false
+    quartz:
+      enabled: false
+    sessions:
+      enabled: false
+    shutdown:
+      enabled: false
+    startup:
+      enabled: false
+    scheduledtasks:
+      enabled: false
+    threaddump:
+      enabled: false
+  endpoints:
+    web:
+      exposure:
+        include:
+          - health
+      discovery:
+        enabled: false
 
diff --git a/webapp/src/main/resources/static/images/apache-isis/logo-48x48.png b/webapp/src/main/resources/static/images/apache-causeway/logo-48x48.png
similarity index 100%
rename from webapp/src/main/resources/static/images/apache-isis/logo-48x48.png
rename to webapp/src/main/resources/static/images/apache-causeway/logo-48x48.png
diff --git a/webapp/src/main/resources/static/images/apache-causeway/logo-65x48.png b/webapp/src/main/resources/static/images/apache-causeway/logo-65x48.png
new file mode 100644
index 0000000..ab90164
Binary files /dev/null and b/webapp/src/main/resources/static/images/apache-causeway/logo-65x48.png differ
diff --git a/webapp/src/main/resources/static/images/apache-causeway/logo-banner-591x120.png b/webapp/src/main/resources/static/images/apache-causeway/logo-banner-591x120.png
new file mode 100644
index 0000000..544c5de
Binary files /dev/null and b/webapp/src/main/resources/static/images/apache-causeway/logo-banner-591x120.png differ
diff --git a/webapp/src/main/resources/static/images/apache-causeway/logo.png b/webapp/src/main/resources/static/images/apache-causeway/logo.png
new file mode 100644
index 0000000..3d61280
Binary files /dev/null and b/webapp/src/main/resources/static/images/apache-causeway/logo.png differ
diff --git a/webapp/src/main/resources/static/images/apache-isis/logo.png b/webapp/src/main/resources/static/images/apache-isis/logo.png
deleted file mode 100644
index 5284fe7..0000000
Binary files a/webapp/src/main/resources/static/images/apache-isis/logo.png and /dev/null differ
diff --git a/webapp/src/main/resources/static/index.html b/webapp/src/main/resources/static/index.html
index f9ed402..1728b16 100644
--- a/webapp/src/main/resources/static/index.html
+++ b/webapp/src/main/resources/static/index.html
@@ -26,6 +26,16 @@
                         viewer is built with <a href="http://wicket.apache.org" target="_blank">Apache Wicket</a>&trade;.
                     </p>
                 </li>
+                <li>
+                    <p>
+                        <b>
+                            <a href="graphiql">GraphQL</a>
+                        </b>
+                    </p>
+                    <p>
+                        provides access to the GraphQL API using the <a href="https://github.com/graphql/graphiql">GraphiQL</a> console.
+                    </p>
+                </li>
                 <li>
                     <p>
                         <b>
@@ -39,7 +49,7 @@
                     <p>
                         The full backend API (at <a href="restful/">restful/</a>) renders both simple and also richer
                         hypermedia representations of domain objects, the latter conforming to the
-                        <a href="http://restfulobjects.org"  target="_blank">Restful Objects</a> spec.
+                        <a href="https://www.restfulobjects.org"  target="_blank">Restful Objects</a> spec.
                     </p>
                 </li>
             </ul>


(causeway-app-petclinic) 03/03: minor tidyup

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

danhaywood pushed a commit to branch graphql
in repository https://gitbox.apache.org/repos/asf/causeway-app-petclinic.git

commit 578b0137202f0c2c181c7756ed9cbeaab2f4ad5b
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jan 29 17:13:11 2024 +0000

    minor tidyup
---
 .../src/main/java/petclinic/modules/pets/dom/petowner/PetOwners.java    | 2 +-
 webapp/src/main/resources/shiro.ini                                     | 1 -
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwners.java b/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwners.java
index 5392206..fc56ca2 100644
--- a/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwners.java
+++ b/module-pets/src/main/java/petclinic/modules/pets/dom/petowner/PetOwners.java
@@ -44,7 +44,7 @@ public class PetOwners {
     }
 
 
-    @Action(semantics = SemanticsOf.NON_IDEMPOTENT)
+    @Action(semantics = SemanticsOf.SAFE)
     public List<PetOwner> findByLastNameLike(
             @LastName final String lastName) {
         return repositoryService.allMatches(
diff --git a/webapp/src/main/resources/shiro.ini b/webapp/src/main/resources/shiro.ini
index 03a729d..b81952f 100644
--- a/webapp/src/main/resources/shiro.ini
+++ b/webapp/src/main/resources/shiro.ini
@@ -22,7 +22,6 @@ bob  = pass, simple_role, default_role, fixtures_role
 joe  = pass, simple_role, default_role
 guest = guest, guest_role, default_role
 
-graphql = pass, org.apache.causeway.applib.services.sudo.SudoService#accessAll
 
 
 # -----------------------------------------------------------------------------