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

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

commit 8bf012fcce224dc44741c6d1de6579bebe62c42c
Author: Dan Haywood <[email protected]>
AuthorDate: Sat Oct 18 18:34:16 2025 +0100

    CAUSEWAY-3866: removes resteasy references
---
 .../modules/ROOT/pages/2025/4.0.0-M1/mignotes.adoc | 65 ++++++++++++++++------
 .../src/main/adoc/modules/config/pages/about.adoc  | 32 ++++++-----
 .../config/pages/section-hooks/resteasy~post.adoc  |  4 --
 .../config/pages/section-hooks/resteasy~pre.adoc   |  4 --
 .../modules/config/pages/sections/resteasy.adoc    | 41 --------------
 .../adoc/modules/executionoutbox/pages/about.adoc  |  4 +-
 .../src/test/resources/application-test.yml        |  8 +--
 .../cors/impl/CausewayModuleExtCors.java           |  2 +-
 .../modules/ROOT/pages/content-negotiation.adoc    |  2 +-
 .../modules/ROOT/partials/security/webmodule.adoc  |  2 +-
 10 files changed, 75 insertions(+), 89 deletions(-)

diff --git 
a/antora/components/relnotes/modules/ROOT/pages/2025/4.0.0-M1/mignotes.adoc 
b/antora/components/relnotes/modules/ROOT/pages/2025/4.0.0-M1/mignotes.adoc
index dd6f2df98f2..6cf5df03938 100644
--- a/antora/components/relnotes/modules/ROOT/pages/2025/4.0.0-M1/mignotes.adoc
+++ b/antora/components/relnotes/modules/ROOT/pages/2025/4.0.0-M1/mignotes.adoc
@@ -36,52 +36,83 @@ Some presets for the _Spring Configuration_ have been 
removed
 
 == RestEasy Integration Removed
 
+The Restful Objects viewer no longer has a dependency on JBoss RestEasy, 
instead using Spring REST APIs.
+As a consequence, the name of the Maven artifact and Spring configuration 
module have changed, as well as some configurations.
+
+* In your Maven `pom.xml`
++
+remove:
++
 [source,xml]
 .Maven
 ----
-<!-- REMOVED
 <dependency>
     <groupId>org.apache.causeway.viewer</groupId>
     <artifactId>causeway-viewer-restfulobjects-jaxrsresteasy</artifactId>
 </dependency>
--->
-
-<!-- USE INSTEAD -->
+----
++
+and use instead:
++
+[source,xml]
+.Maven
+----
 <dependency>
     <groupId>org.apache.causeway.viewer</groupId>
     <artifactId>causeway-viewer-restfulobjects-viewer</artifactId>
 </dependency>
 ----
 
+* in your `AppManifest` (`@Import` staatements):
++
+replace:
++
 [source,java]
 .Spring bean import
 ----
 @Import({
     //..
-
-    // REST
-
-    // CausewayModuleViewerRestfulObjectsJaxrsResteasy.class <-- REMOVED
-    CausewayModuleViewerRestfulObjectsViewer.class, // <-- USE INSTEAD
+    CausewayModuleViewerRestfulObjectsJaxrsResteasy.class,
+    // ...
+})
+----
++
+instead with:
++
+[source,java]
+.Spring bean import
+----
+@Import({
+    //..
+    CausewayModuleViewerRestfulObjectsViewer.class,
+    // ...
 })
 ----
 
+* in your `application.yaml` configuration properties, change the config 
properties that configures the servlet-context relative path prefix for the 
_Restful Objects Viewer_
++
+replace:
++
+[source,yaml]
+.application.yaml (Spring configuration properties)
+----
+resteasy:
+  jaxrs:
+    defaultPath: /restful
+----
++
+replace with:
++
 [source,yaml]
 .application.yaml (Spring configuration properties)
 ----
-#configures the servlet-context relative path prefix for the _Restful Objects 
Viewer_
-
-# removed ..
-#resteasy:
-#  jaxrs:
-#    defaultPath: /restful
-#
-
 causeway:
   viewer:
     restfulobjects:
       basePath: /restful
 ----
++
+
 
 == Immutable Configuration
 
diff --git a/core/config/src/main/adoc/modules/config/pages/about.adoc 
b/core/config/src/main/adoc/modules/config/pages/about.adoc
index 91d8b8a5eb2..4d125ead1e7 100644
--- a/core/config/src/main/adoc/modules/config/pages/about.adoc
+++ b/core/config/src/main/adoc/modules/config/pages/about.adoc
@@ -130,14 +130,18 @@ It looks like this:
 ----
 @Configuration
 @Import({
-        CausewayModuleCoreRuntimeServices.class,        // <.>
-        CausewayModuleSecurityShiro.class,              // <.>
-        CausewayModuleJpaEclipselink.class,             // <.>
-        CausewayModuleViewerRestfulObjectsViewer.class, // <.>
-        CausewayModuleViewerGraphqlViewer.class,        // <.>
-        CausewayModuleViewerWicketViewer.class,         // <.>
+        CausewayModuleCoreRuntimeServices.class,            // <.>
+        CausewayModuleJpaEclipselink.class,                 // <.>
+        CausewayModuleSecuritySpring.class,                 // <.>
+        CausewayModuleExtSpringSecurityOauth2.class,        // <.>
+        CausewayModuleExtSecmanPersistenceJpa.class,        // <.>
+        CausewayModuleExtSecmanEncryptionSpring.class,      // <.>
+        CausewayModuleExtSecmanDelegatedSpringOauth2.class, // <.>
+        CausewayModuleViewerRestfulObjectsViewer.class,     // <.>
+        CausewayModuleViewerGraphqlViewer.class,            // <.>
+        CausewayModuleViewerWicketViewer.class,             // <.>
         ...
-        ApplicationModule.class,                        // <.>
+        ApplicationModule.class,                            // <.>
         ...
 })
 public class AppManifest {
@@ -145,12 +149,12 @@ public class AppManifest {
 ----
 
 <.> Mandatory - specifies the core of the Apache Causeway framework
-<.> Enables the Shiro security mechanism.
-There are several security implementations, precisely one must be selected
-<.> Enables xref:pjpa:ROOT:about.adoc[JPA/Eclipselink] for persistence.
-+
-Optional (though if omitted then only 
xref:userguide:ROOT:view-models.adoc[view models] may be used, with hand-rolled 
persistence).
-
+<.> Enables the xref:pjpa:ROOT:about.adoc[JPA/Eclipselink] object store as the 
persistence mechanism.
+<.> Enables the xref:security:spring:about.adoc[Spring Security], which 
configures Spring filters to perform authentication.
+<.> Enables the xref:security:spring-oauth2:about.adoc[] extension, that in 
particular configures Spring for Oauth2.
+<.> Enables the xref:security:secman:about.adoc[Secman] security module, which 
provides both authorisation (users, roles, permissions) and authentication 
(although Spring's authentication takes precedence).
+<.> Configures Secman to use JPA for persistence.
+<.> Configures Secman to auto-create delegated users if authenticated by 
Spring.
 <.> Enables the xref:vro:ROOT:about.adoc[REST API (Restful Objects viewer)].
 <.> Enables the xref:gqlv:ROOT:about.adoc[GraphQL API (GraphQL viewer)].
 <.> Enables the xref:vw:ROOT:about.adoc[Web UI (Wicket viewer)]
@@ -173,7 +177,7 @@ The remainder of this guide lists the various configuration 
properties available
 === CausewayConfiguration domain service
 
 Applications can discover the current configuration properties for the 
framework (under the `causeway` top-level key) by injecting the 
`CausewayConfiguration` domain service.
-There are similar domain services for 
xref:pjpa:ROOT:about.adoc[JPA/Eclipselink] (`EclipselinkConfiguration`) and 
RestEasy (`RestEasyConfiguration`), as used by xref:vro:ROOT:about.adoc[REST 
API (Restful Objects viewer)].
+There is a similar domain service for 
xref:pjpa:ROOT:about.adoc[JPA/Eclipselink] (`EclipselinkConfiguration`).
 
 Applications can also create their own configuration properties file; the 
xref:docs:starters:simpleapp.adoc[simpleapp] starter app provides an example.
 
diff --git 
a/core/config/src/main/adoc/modules/config/pages/section-hooks/resteasy~post.adoc
 
b/core/config/src/main/adoc/modules/config/pages/section-hooks/resteasy~post.adoc
deleted file mode 100644
index 21f4ba4f65c..00000000000
--- 
a/core/config/src/main/adoc/modules/config/pages/section-hooks/resteasy~post.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
-
-
diff --git 
a/core/config/src/main/adoc/modules/config/pages/section-hooks/resteasy~pre.adoc
 
b/core/config/src/main/adoc/modules/config/pages/section-hooks/resteasy~pre.adoc
deleted file mode 100644
index 2d47b8f2af6..00000000000
--- 
a/core/config/src/main/adoc/modules/config/pages/section-hooks/resteasy~pre.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
-
-Configuration that applies to the RestEasy framework (that bootstraps the 
Restful Objects viewer).
diff --git 
a/core/config/src/main/adoc/modules/config/pages/sections/resteasy.adoc 
b/core/config/src/main/adoc/modules/config/pages/sections/resteasy.adoc
deleted file mode 100644
index 087d8be828b..00000000000
--- a/core/config/src/main/adoc/modules/config/pages/sections/resteasy.adoc
+++ /dev/null
@@ -1,41 +0,0 @@
-= RestEasy Configuration
-:page-role: -toc -narrow
-
-
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
-
-include::../section-hooks/resteasy~pre.adoc[]
-
-[cols="3a,2a,5a", options="header"]
-|===
-|Property
-|Default
-|Description
-|
-[[resteasy.jaxrs.app.registration]]
-resteasy.jaxrs.app.registration
-
-|  beans
-| How the implementation of the JAX-RS application is discovered.
-
-There should be very little reason to change this from its default.
-
-@see 
https://github.com/resteasy/resteasy-spring-boot/blob/master/mds/USAGE.md[resteasy-spring-boot-starter
 docs]
-
-
-|
-[[resteasy.jaxrs.default-path]]
-resteasy.jaxrs.default-path
-
-|  /restful
-| The path at which the RO viewer should be mounted.
-
-Note that this is used rather than `prefix` because there is _NO_ 
implementation of `Application`, so we rely on it being automatically created.
-
-@see 
https://github.com/resteasy/resteasy-spring-boot/blob/master/mds/USAGE.md[resteasy-spring-boot-starter
 docs]
-
-
-
-|===
-
-include::../section-hooks/resteasy~post.adoc[]
diff --git 
a/extensions/core/executionoutbox/adoc/modules/executionoutbox/pages/about.adoc 
b/extensions/core/executionoutbox/adoc/modules/executionoutbox/pages/about.adoc
index 300d4b2902f..67e47d7db1c 100644
--- 
a/extensions/core/executionoutbox/adoc/modules/executionoutbox/pages/about.adoc
+++ 
b/extensions/core/executionoutbox/adoc/modules/executionoutbox/pages/about.adoc
@@ -247,7 +247,9 @@ To setup the message processor:
 === Usage
 
 To instantiate the `OutboxClient`, specify the URL, user and password.
-The URL will be something like: `http://localhost:8080/restful/`, where the 
last part is the default path obtainable from the `resteasy.jaxrs.defaultPath` 
configuration property of the Causeway app.
+The URL will be something like: `http://localhost:8080/restful/`, where the 
last part is the default path obtainable from the 
`causeway.viewer.restfulobjects.basePath` configuration property of the 
Causeway app.
+
+
 
 The `OutboxClient` API consists of three methods:
 
diff --git 
a/extensions/core/executionoutbox/restclient/src/test/resources/application-test.yml
 
b/extensions/core/executionoutbox/restclient/src/test/resources/application-test.yml
index 72dbe85409f..771cefd1a42 100644
--- 
a/extensions/core/executionoutbox/restclient/src/test/resources/application-test.yml
+++ 
b/extensions/core/executionoutbox/restclient/src/test/resources/application-test.yml
@@ -19,6 +19,9 @@ causeway:
     schema:
       auto-create-schemas: "CAUSEWAYEXTEXECUTIONOUTBOX"
 
+  viewer:
+    restfulobjects:
+      basePath: "/restful"
   extensions:
     session-log:
       auto-logout-on-restart: false
@@ -27,8 +30,3 @@ spring:
   jpa:
     show-sql: true
 
-resteasy:
-  jaxrs:
-    app:
-      registration: beans
-    defaultPath: "/restful"
diff --git 
a/extensions/vro/cors/impl/src/main/java/org/apache/causeway/extensions/cors/impl/CausewayModuleExtCors.java
 
b/extensions/vro/cors/impl/src/main/java/org/apache/causeway/extensions/cors/impl/CausewayModuleExtCors.java
index a05b2dcc130..aac42841111 100644
--- 
a/extensions/vro/cors/impl/src/main/java/org/apache/causeway/extensions/cors/impl/CausewayModuleExtCors.java
+++ 
b/extensions/vro/cors/impl/src/main/java/org/apache/causeway/extensions/cors/impl/CausewayModuleExtCors.java
@@ -54,7 +54,7 @@ public FilterRegistrationBean<Filter> 
createCorsFilterRegistration(
         if(!restfulBase.endsWith("/*")) {
             restfulBase = restfulBase + "/*";
         }
-        log.info("Setting up CORS to filter resteasy-base at '{}' with {}",
+        log.info("Setting up CORS to filter RO base path at '{}' with {}",
                 restfulBase,
                 causewayConfiguration.extensions().cors());
 
diff --git 
a/viewers/restfulobjects/adoc/modules/ROOT/pages/content-negotiation.adoc 
b/viewers/restfulobjects/adoc/modules/ROOT/pages/content-negotiation.adoc
index 8049871a5c3..0dadb810f84 100644
--- a/viewers/restfulobjects/adoc/modules/ROOT/pages/content-negotiation.adoc
+++ b/viewers/restfulobjects/adoc/modules/ROOT/pages/content-negotiation.adoc
@@ -36,7 +36,7 @@ The Apache Causeway framework provides three implementations 
of `ContentNegotiat
 One of these implementations, `ContentNegotiationServiceXRoDomainType` will 
further delegate down to the companion 
xref:refguide:applib:index/services/conmap/ContentMappingService.adoc[ContentMappingService]
 service (if configured/available), based on the value of the 
"x-ro-domain-type" parameter of the header.
 +
 A typical implementation of `ContentMappingService` will convert the domain 
object into some sort of DTO (data transfer object) as specified by the 
"x-ro-domaintype".
-If this DTO is annotated with JAXB or Jackson mappings, then the RO viewer 
(courtesy of the underlying link:http://resteasy.jboss.org/[RestEasy] 
framework) can serialize these directly.
+If this DTO is annotated with JAXB or Jackson mappings, then the RO viewer can 
serialize these directly.
 +
 What all that means is that, if the underlying entities change, we are 
required to update the mappings in the `ContentMappingService` to map to the 
same DTOs.
 
diff --git 
a/viewers/restfulobjects/adoc/modules/ROOT/partials/security/webmodule.adoc 
b/viewers/restfulobjects/adoc/modules/ROOT/partials/security/webmodule.adoc
index 4f47cbf354d..12ebd8f15d4 100644
--- a/viewers/restfulobjects/adoc/modules/ROOT/partials/security/webmodule.adoc
+++ b/viewers/restfulobjects/adoc/modules/ROOT/partials/security/webmodule.adoc
@@ -5,7 +5,7 @@
 
 The xref:vro:ROOT:about.adoc[REST API (Restful Objects viewer)] does *not* 
provide a login page.
 Instead it defines the authentication strategy SPI, delegated to by a filter.
-(For more detail on how this is wired together, see the implementation of the 
xref:refguide:viewer:index/restfulobjects/jaxrsresteasy/webmodule/WebModuleJaxrsResteasy.adoc[WebModuleJaxrsResteasy]
 web module service).
+(For more detail on how this is wired together, see the implementation of the 
xref:refguide:viewer:index/restfulobjects/viewer/webmodule/WebModuleRestfulObjects.adoc[WebModuleRestfulObjects]
 web module service).
 
 The SPI is:
 

Reply via email to