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

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


The following commit(s) were added to refs/heads/main by this push:
     new b9a5395db5e Bumps Spring Boot 4.0.0->4.0.1
b9a5395db5e is described below

commit b9a5395db5eabe62a50cdc62138b6f2d85fc2ce6
Author: andi-huber <[email protected]>
AuthorDate: Thu Dec 18 20:33:42 2025 +0100

    Bumps Spring Boot 4.0.0->4.0.1
    
    - also bumps asm 9.9 -> 9.0.1
    - fixes rest client issues
    - makes object not found exceptions more verbose
---
 .../unrecoverable/ObjectNotFoundException.java     |  9 +++++
 bom/pom.xml                                        |  6 +--
 core/config/pom.xml                                |  2 +-
 parent/pom.xml                                     |  2 +-
 .../jpa/rest/JpaRestEndpointService.java           | 46 ++++++++++++++++------
 .../testdomain/rest/jpa/RestServiceTest.java       | 12 ++----
 starters/pom.xml                                   |  2 +-
 .../viewer/wicket/model/models/UiObjectWkt.java    | 14 +++----
 8 files changed, 59 insertions(+), 34 deletions(-)

diff --git 
a/api/applib/src/main/java/org/apache/causeway/applib/exceptions/unrecoverable/ObjectNotFoundException.java
 
b/api/applib/src/main/java/org/apache/causeway/applib/exceptions/unrecoverable/ObjectNotFoundException.java
index 1d410da9608..05ac12ef369 100644
--- 
a/api/applib/src/main/java/org/apache/causeway/applib/exceptions/unrecoverable/ObjectNotFoundException.java
+++ 
b/api/applib/src/main/java/org/apache/causeway/applib/exceptions/unrecoverable/ObjectNotFoundException.java
@@ -19,6 +19,7 @@
 package org.apache.causeway.applib.exceptions.unrecoverable;
 
 import org.apache.causeway.applib.exceptions.UnrecoverableException;
+import org.apache.causeway.applib.services.bookmark.Bookmark;
 
 /**
  * Indicates that the persistence context was unable to get an instantiate
@@ -36,4 +37,12 @@ public ObjectNotFoundException(final String oid) {
     public ObjectNotFoundException(final String oid, final Throwable cause) {
         super("Object not found in store with oid " + oid, cause);
     }
+
+    public ObjectNotFoundException(final Bookmark bookmark) {
+        super("Object not found in store with bookmark " + bookmark);
+    }
+
+    public ObjectNotFoundException(final Bookmark bookmark, final Throwable 
cause) {
+        super("Object not found in store with bookmark " + bookmark, cause);
+    }
 }
diff --git a/bom/pom.xml b/bom/pom.xml
index 5de9c4ce076..e7f971e6d98 100644
--- a/bom/pom.xml
+++ b/bom/pom.xml
@@ -39,7 +39,7 @@ identified
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>4.0.0</version>
+        <version>4.0.1</version>
         <relativePath />
     </parent>
     <groupId>org.apache.causeway</groupId>
@@ -64,7 +64,7 @@ identified
 
         <archunit.version>1.4.1</archunit.version>
         <asciidoctorj.version>3.0.1</asciidoctorj.version>
-        <asm.version>9.9</asm.version> <!-- keep in sync with
+        <asm.version>9.9.1</asm.version> <!-- keep in sync with
         org.eclipse.persistence:org.eclipse.persistence.asm -->
         <approvaltests.version>26.0.0</approvaltests.version>
 
@@ -144,7 +144,7 @@ identified
 
         <sql-formatter.version>2.0.5</sql-formatter.version>
         <snakeyaml.version>2.0</snakeyaml.version>
-        <spring-boot.version>4.0.0</spring-boot.version>
+        <spring-boot.version>4.0.1</spring-boot.version>
 
         <surefire-plugin.argLine>
             -Xmx384m
diff --git a/core/config/pom.xml b/core/config/pom.xml
index 7ebed858f10..fe7041fef7d 100644
--- a/core/config/pom.xml
+++ b/core/config/pom.xml
@@ -68,7 +68,7 @@
                     <dependency>
                         <groupId>org.ow2.asm</groupId>
                         <artifactId>asm</artifactId>
-                        <version>9.9</version>
+                        <version>9.9.1</version>
                     </dependency>
                 </dependencies>
             </plugin>
diff --git a/parent/pom.xml b/parent/pom.xml
index b120518c0e4..2db2e185c6c 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -158,7 +158,7 @@
                         <dependency>
                             <groupId>org.ow2.asm</groupId>
                             <artifactId>asm</artifactId>
-                            <version>9.9</version>
+                            <version>9.9.1</version>
                         </dependency>
                     </dependencies>
                 </plugin>
diff --git 
a/regressiontests/base-jpa/src/main/java/org/apache/causeway/testdomain/jpa/rest/JpaRestEndpointService.java
 
b/regressiontests/base-jpa/src/main/java/org/apache/causeway/testdomain/jpa/rest/JpaRestEndpointService.java
index 1704dace66c..b8867ed3861 100644
--- 
a/regressiontests/base-jpa/src/main/java/org/apache/causeway/testdomain/jpa/rest/JpaRestEndpointService.java
+++ 
b/regressiontests/base-jpa/src/main/java/org/apache/causeway/testdomain/jpa/rest/JpaRestEndpointService.java
@@ -47,6 +47,7 @@
 import org.apache.causeway.commons.collections.Can;
 import org.apache.causeway.commons.functional.Try;
 import org.apache.causeway.commons.internal.base._Bytes;
+import org.apache.causeway.commons.io.DataSource;
 import org.apache.causeway.commons.io.JsonUtils;
 import org.apache.causeway.core.config.CausewayConfiguration;
 import org.apache.causeway.core.config.applib.RestfulPathProvider;
@@ -143,7 +144,12 @@ public void write(final Object t, @Nullable final 
MediaType contentType, final H
 
     protected Builder restClient() {
         return RestClient.builder()
-            .messageConverters(converters->converters.add(0, new 
CausewayMessageConverter()))
+            .configureMessageConverters(builder->{
+                builder
+                    .registerDefaults()
+                    .addCustomConverter(new CausewayMessageConverter());
+            })
+            //.messageConverters(converters->converters.add(0, new 
CausewayMessageConverter()))
             .baseUrl(baseUrl())
             .defaultHeaders(headers -> 
headers.setBasicAuth(LdapConstants.SVEN_PRINCIPAL, "pass"));
     }
@@ -180,8 +186,12 @@ public Try<JpaBook> getRecommendedBookOfTheWeek(final 
RestClient client) {
         var response = request(client.post(), 
"/actions/recommendedBookOfTheWeek/invoke", actParamModel())
             .retrieve();
 
-        var entity = response.body(JpaBook.class);
-        return Try.success(entity);
+      //TODO seems broken since Spring Boot 4.0.1
+//      var entity = response.body(JpaBook.class);
+//      return Try.success(entity);
+
+        var json = response.body(String.class);
+        return JsonUtils.tryRead(JpaBook.class, json);
     }
 
     public Try<BookDto> getRecommendedBookOfTheWeekDto(final RestClient 
client) {
@@ -197,10 +207,15 @@ public Try<Can<JpaBook>> getMultipleBooks(final 
RestClient client) throws JAXBEx
                 .addActionParameter("nrOfBooks", 3))
             .retrieve();
 
-        List<JpaBook> books = response
-            .body(new ParameterizedTypeReference<List<JpaBook>>() {});
+        var json = response.body(String.class);
+        return JsonUtils.tryReadAsList(JpaBook.class, 
DataSource.ofStringUtf8(json))
+                .mapSuccessWhenPresent(Can::ofCollection);
 
-        return Try.success(Can.ofCollection(books));
+        //TODO seems broken since Spring Boot 4.0.1
+//        List<JpaBook> books = response
+//            .body(new ParameterizedTypeReference<List<JpaBook>>() {});
+//
+//        return Try.success(Can.ofCollection(books));
     }
 
     public Try<JpaBook> storeBook(final RestClient client, final JpaBook 
newBook) throws JAXBException {
@@ -208,8 +223,12 @@ public Try<JpaBook> storeBook(final RestClient client, 
final JpaBook newBook) th
             .addActionParameter("newBook", BookDto.from(newBook).encode()))
             .retrieve();
 
-        var entity = response.body(JpaBook.class);
-        return Try.success(entity);
+        var json = response.body(String.class);
+        return JsonUtils.tryRead(JpaBook.class, json);
+
+        //TODO seems broken since Spring Boot 4.0.1
+//        var entity = response.body(JpaBook.class);
+//        return Try.success(entity);
     }
 
     public Try<BookDto> getRecommendedBookOfTheWeekAsDto(final RestClient 
client) {
@@ -256,10 +275,15 @@ public Try<Can<JpaBook>> 
getBooksFromInventoryAsJaxbVm(final RestClient client)
             .body(actParamModel().toJson())
             .retrieve();
 
-        List<JpaBook> books = response
-            .body(new ParameterizedTypeReference<List<JpaBook>>() {});
+        var json = response.body(String.class);
+        return JsonUtils.tryReadAsList(JpaBook.class, 
DataSource.ofStringUtf8(json))
+                .mapSuccessWhenPresent(Can::ofCollection);
 
-        return Try.success(Can.ofCollection(books));
+      //TODO seems broken since Spring Boot 4.0.1
+//        List<JpaBook> books = response
+//            .body(new ParameterizedTypeReference<List<JpaBook>>() {});
+//
+//        return Try.success(Can.ofCollection(books));
     }
 
     public Try<CalendarEvent> echoCalendarEvent(
diff --git 
a/regressiontests/rest-jpa/src/test/java/org/apache/causeway/testdomain/rest/jpa/RestServiceTest.java
 
b/regressiontests/rest-jpa/src/test/java/org/apache/causeway/testdomain/rest/jpa/RestServiceTest.java
index c68bbddf3dc..a7ebcb919e4 100644
--- 
a/regressiontests/rest-jpa/src/test/java/org/apache/causeway/testdomain/rest/jpa/RestServiceTest.java
+++ 
b/regressiontests/rest-jpa/src/test/java/org/apache/causeway/testdomain/rest/jpa/RestServiceTest.java
@@ -88,10 +88,8 @@ void httpSessionInfo() {
 
     @Test @Order(2)
     void bookOfTheWeek_viaRestEndpoint() {
-        var entity = restService.getRecommendedBookOfTheWeek(restClient)
-                .ifFailureFail();
-
-        var bookOfTheWeek = entity.valueAsNonNullElseFail();
+        var bookOfTheWeek = restService.getRecommendedBookOfTheWeek(restClient)
+                .valueAsNonNullElseFail();
 
         assertNotNull(bookOfTheWeek);
         assertEquals("Book of the week", bookOfTheWeek.getName());
@@ -160,10 +158,8 @@ void inventoryAsJaxbVm_viaRestEndpoint() {
 
     @Test @Order(8)
     void listBooks_fromInventoryAsJaxbVm_viaRestEndpoint() {
-        var entity = restService.getBooksFromInventoryAsJaxbVm(restClient)
-                .ifFailure(Assertions::fail);
-
-        var books = entity.valueAsNonNullElseFail();
+        var books = restService.getBooksFromInventoryAsJaxbVm(restClient)
+                .valueAsNonNullElseFail();
 
         var expectedBookTitles = JpaTestFixtures.expectedBookTitles();
 
diff --git a/starters/pom.xml b/starters/pom.xml
index f68dbb697c7..1f961bfbdb9 100644
--- a/starters/pom.xml
+++ b/starters/pom.xml
@@ -62,7 +62,7 @@
                         <dependency>
                             <groupId>org.ow2.asm</groupId>
                             <artifactId>asm</artifactId>
-                            <version>9.9</version>
+                            <version>9.9.1</version>
                         </dependency>
                     </dependencies>
                 </plugin>
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/UiObjectWkt.java
 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/UiObjectWkt.java
index e19af684d01..a1720b9bdf8 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/UiObjectWkt.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/causeway/viewer/wicket/model/models/UiObjectWkt.java
@@ -156,9 +156,8 @@ public boolean isInlinePrompt() {
     @Override
     public String getHint(final Component component, final String keyName) {
         final ComponentHintKey componentHintKey = 
ComponentHintKey.create(super.getMetaModelContext(), component, keyName);
-        if(componentHintKey != null) {
+        if(componentHintKey != null)
             return componentHintKey.get(getOwnerBookmark());
-        }
         return null;
     }
 
@@ -181,7 +180,7 @@ public String getTitle() {
     }
 
     @Override
-    public ObjectIcon getIcon(IconSize iconSize) {
+    public ObjectIcon getIcon(final IconSize iconSize) {
         return getManagedObject().getIcon(iconSize);
     }
 
@@ -218,17 +217,14 @@ public UiAttributeWkt getPropertyModel(
         // in other words: this guard only works if every entity has at least 
a property
         var ownerPojo = bookmarkedObjectModel.managedObject()
                 .getPojo();
-        if(ownerPojo==null) {
-            throw new ObjectNotFoundException(
-                    bookmarkedObjectModel.bookmark().identifier());
-        }
+        if(ownerPojo==null)
+            throw new 
ObjectNotFoundException(bookmarkedObjectModel.bookmark());
 
         var propIdentifier = property.getFeatureIdentifier();
         var propertyModels = propertyModels();
         final UiAttributeWkt existingPropertyModel = 
propertyModels.get(propIdentifier);
-        if (existingPropertyModel != null) {
+        if (existingPropertyModel != null)
             return existingPropertyModel;
-        }
 
         var propertyInteractionModel = new PropertyInteractionWkt(
                 bookmarkedObjectModel,

Reply via email to