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:
