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

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


The following commit(s) were added to refs/heads/CAUSEWAY-3718 by this push:
     new 2c65b89d62 CAUSEWAY-3718: fixes a regression from earlier (weekend)
2c65b89d62 is described below

commit 2c65b89d624336c84163fe871e36aab19f01e727
Author: Andi Huber <[email protected]>
AuthorDate: Tue Apr 9 06:06:06 2024 +0200

    CAUSEWAY-3718: fixes a regression from earlier (weekend)
---
 .../service/valuerender/JsonValueEncoderServiceDefault.java  | 12 ++++++++----
 .../test/scenarios/staff/Staff_lowlevel_v1_IntegTest.java    |  2 --
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/JsonValueEncoderServiceDefault.java
 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/JsonValueEncoderServiceDefault.java
index 0a8f3607e3..8bdf169281 100644
--- 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/JsonValueEncoderServiceDefault.java
+++ 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/JsonValueEncoderServiceDefault.java
@@ -136,7 +136,7 @@ public class JsonValueEncoderServiceDefault implements 
JsonValueEncoderService {
     }
 
     /**
-     * Returns the recovered nullable String, wrapped as optional.
+     * Returns the recovered nullable pojo, wrapped as optional.
      * @throws IllegalArgumentException if cannot be parsed as String
      */
     private static Optional<Object> recoverPojoFromStringElseFail(
@@ -146,11 +146,11 @@ public class JsonValueEncoderServiceDefault implements 
JsonValueEncoderService {
             val recoveredValue = Try.call(()->
                     valueSerializer.destring(Format.JSON, 
valueRepr.asString()))
                     .mapFailure(ex->_Exceptions
-                            .illegalArgument(ex, "Unable to parse value %s as 
String", valueRepr))
+                            .illegalArgument(ex, "Unable to parse value %s as 
from String representation", valueRepr))
                     .valueAsNullableElseFail();
             return Optional.ofNullable(recoveredValue);
         }
-        throw _Exceptions.illegalArgument("Unable to parse value %s as String"
+        throw _Exceptions.illegalArgument("Unable to parse value %s from 
String representation"
                 + " (using 'String' as a fallback attempt)", valueRepr);
     }
 
@@ -172,7 +172,6 @@ public class JsonValueEncoderServiceDefault implements 
JsonValueEncoderService {
             if(valueDecompositionIfAny.isPresent()) {
                 val valueDecomposition = valueDecompositionIfAny.get();
                 val valueAsJson = valueDecomposition.toJson();
-                val decompRepr = JsonRepresentation.jsonAsMap(valueAsJson);
                 valueDecomposition.accept(
                         simple->{
                             // special treatment for BLOB/CLOB/ENUM as these 
are better represented by a map
@@ -180,6 +179,10 @@ public class JsonValueEncoderServiceDefault implements 
JsonValueEncoderService {
                                     || simple.getType() == ValueType.CLOB
                                     || simple.getType() == ValueType.ENUM) {
 
+                                /* Don't move this line of code up before
+                                 * the accept call (to attempt code 
de-duplication)!
+                                 * It will fail the 'else' path. */
+                                val decompRepr = 
JsonRepresentation.jsonAsMap(valueAsJson);
                                 // amend emums with "enumTitle"
                                 if(simple.getType() == ValueType.ENUM) {
                                     decompRepr.mapPutString("enumTitle", 
valueAdapter.getTitle());
@@ -193,6 +196,7 @@ public class JsonValueEncoderServiceDefault implements 
JsonValueEncoderService {
                             }
                         },
                         tuple->{
+                            val decompRepr = 
JsonRepresentation.jsonAsMap(valueAsJson);
                             repr.mapPutJsonRepresentation("value", decompRepr);
                             val typeTupleAsFormat = "{"
                                     + tuple.getElements().stream()
diff --git 
a/viewers/restfulobjects/test/src/test/java/org/apache/causeway/viewer/restfulobjects/test/scenarios/staff/Staff_lowlevel_v1_IntegTest.java
 
b/viewers/restfulobjects/test/src/test/java/org/apache/causeway/viewer/restfulobjects/test/scenarios/staff/Staff_lowlevel_v1_IntegTest.java
index b06259afdc..399178c91f 100644
--- 
a/viewers/restfulobjects/test/src/test/java/org/apache/causeway/viewer/restfulobjects/test/scenarios/staff/Staff_lowlevel_v1_IntegTest.java
+++ 
b/viewers/restfulobjects/test/src/test/java/org/apache/causeway/viewer/restfulobjects/test/scenarios/staff/Staff_lowlevel_v1_IntegTest.java
@@ -58,7 +58,6 @@ import 
org.apache.causeway.applib.value.semantics.ValueSemanticsProvider;
 import org.apache.causeway.commons.collections.Can;
 import org.apache.causeway.commons.internal.base._Bytes;
 import org.apache.causeway.commons.internal.base._Strings;
-import 
org.apache.causeway.core.internaltestsupport.annotations.DisabledIfRunningWithSurefire;
 import org.apache.causeway.core.metamodel.valuesemantics.BlobValueSemantics;
 import org.apache.causeway.schema.common.v2.ValueType;
 import 
org.apache.causeway.viewer.restfulobjects.test.scenarios.Abstract_IntegTest;
@@ -80,7 +79,6 @@ public class Staff_lowlevel_v1_IntegTest extends 
Abstract_IntegTest {
         gsonBuilder = new GsonBuilder();
     }
 
-    @DisabledIfRunningWithSurefire
     @SneakyThrows
     @Test
     @UseReporter(DiffReporter.class)

Reply via email to