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)