This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 6df1d902ba ISIS-3127: [RO] simplify JsonValueConverter
6df1d902ba is described below
commit 6df1d902ba9f7b27b666e82a290996137084448a
Author: andi-huber <[email protected]>
AuthorDate: Fri Aug 19 13:28:17 2022 +0200
ISIS-3127: [RO] simplify JsonValueConverter
---
.../rendering/domainobjects/JsonValueConverter.java | 8 ++++----
.../rendering/domainobjects/JsonValueConverters.java | 16 ++++++++--------
.../rendering/domainobjects/JsonValueEncoder.java | 13 +++++--------
3 files changed, 17 insertions(+), 20 deletions(-)
diff --git
a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueConverter.java
b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueConverter.java
index de34a36335..c537168e4f 100644
---
a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueConverter.java
+++
b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueConverter.java
@@ -52,7 +52,7 @@ public interface JsonValueConverter {
final Context context,
final JsonRepresentation repr);
- Can<Class<?>> getClasses();
+ Class<?> getValueClass();
static interface Context extends HasObjectFeature {
@@ -110,12 +110,12 @@ public interface JsonValueConverter {
protected final String format;
protected final String extendedFormat;
- @Getter private final Can<Class<?>> classes;
+ @Getter private final Class<?> valueClass;
- public Abstract(final String format, final String extendedFormat,
final Class<?>... classes) {
+ public Abstract(final String format, final String extendedFormat,
final Class<?> valueClass) {
this.format = format;
this.extendedFormat = extendedFormat;
- this.classes = Can.ofArray(classes);
+ this.valueClass = valueClass;
}
@Override
diff --git
a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueConverters.java
b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueConverters.java
index e3c2d59913..d4de1b064c 100644
---
a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueConverters.java
+++
b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueConverters.java
@@ -70,7 +70,7 @@ final class JsonValueConverters {
}
});
- converters.add(new JsonValueConverter.Abstract(null, "boolean",
boolean.class, Boolean.class){
+ converters.add(new JsonValueConverter.Abstract(null, "boolean",
Boolean.class){
@Override
public Object recoverValueAsPojo(final JsonRepresentation repr,
final Context context) {
if (repr.isBoolean()) {
@@ -92,7 +92,7 @@ final class JsonValueConverters {
}
});
- converters.add(new JsonValueConverter.Abstract("int", "byte",
byte.class, Byte.class){
+ converters.add(new JsonValueConverter.Abstract("int", "byte",
Byte.class){
@Override
public Object recoverValueAsPojo(final JsonRepresentation repr,
final Context context) {
if (repr.isNumber()) {
@@ -123,7 +123,7 @@ final class JsonValueConverters {
}
});
- converters.add(new JsonValueConverter.Abstract("int", "short",
short.class, Short.class){
+ converters.add(new JsonValueConverter.Abstract("int", "short",
Short.class){
@Override
public Object recoverValueAsPojo(final JsonRepresentation repr,
final Context context) {
if (repr.isNumber()) {
@@ -154,7 +154,7 @@ final class JsonValueConverters {
}
});
- converters.add(new JsonValueConverter.Abstract("int", "int",
int.class, Integer.class){
+ converters.add(new JsonValueConverter.Abstract("int", "int",
Integer.class){
@Override
public Object recoverValueAsPojo(final JsonRepresentation repr,
final Context context) {
if (repr.isInt()) {
@@ -185,7 +185,7 @@ final class JsonValueConverters {
}
});
- converters.add(new JsonValueConverter.Abstract("int", "long",
long.class, Long.class){
+ converters.add(new JsonValueConverter.Abstract("int", "long",
Long.class){
@Override
public Object recoverValueAsPojo(final JsonRepresentation repr,
final Context context) {
if (repr.isLong()) {
@@ -217,7 +217,7 @@ final class JsonValueConverters {
}
});
- converters.add(new JsonValueConverter.Abstract("decimal", "float",
float.class, Float.class){
+ converters.add(new JsonValueConverter.Abstract("decimal", "float",
Float.class){
@Override
public Object recoverValueAsPojo(final JsonRepresentation repr,
final Context context) {
if (repr.isDecimal()) {
@@ -252,7 +252,7 @@ final class JsonValueConverters {
}
});
- converters.add(new JsonValueConverter.Abstract("decimal", "double",
double.class, Double.class){
+ converters.add(new JsonValueConverter.Abstract("decimal", "double",
Double.class){
@Override
public Object recoverValueAsPojo(final JsonRepresentation repr,
final Context context) {
if (repr.isDecimal()) {
@@ -290,7 +290,7 @@ final class JsonValueConverters {
}
});
- converters.add(new JsonValueConverter.Abstract(null, "char",
char.class, Character.class){
+ converters.add(new JsonValueConverter.Abstract(null, "char",
Character.class){
@Override
public Object recoverValueAsPojo(final JsonRepresentation repr,
final Context context) {
if (repr.isString()) {
diff --git
a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
index 29ebe75817..22f0513b76 100644
---
a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
+++
b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoder.java
@@ -31,6 +31,7 @@ import com.fasterxml.jackson.databind.node.NullNode;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Service;
+import org.springframework.util.ClassUtils;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.exceptions.recoverable.TextEntryParseException;
@@ -64,16 +65,12 @@ public class JsonValueEncoder {
@Inject private SpecificationLoader specificationLoader;
+ private Map<Class<?>, JsonValueConverter> converterByClass =
_Maps.newLinkedHashMap();
+
@PostConstruct
public void init() {
new JsonValueConverters().asList()
- .forEach(this::registerConverter);
- }
-
- private Map<Class<?>, JsonValueConverter> converterByClass =
_Maps.newLinkedHashMap();
-
- private void registerConverter(final JsonValueConverter jvc) {
- jvc.getClasses().forEach(cls->converterByClass.put(cls, jvc));
+
.forEach(converter->converterByClass.put(converter.getValueClass(), converter));
}
public ManagedObject asAdapter(
@@ -95,7 +92,7 @@ public class JsonValueEncoder {
val valueSerializer =
Facets.valueSerializerElseFail(objectSpec, valueClass);
- final JsonValueConverter jvc = converterByClass.get(valueClass);
+ final JsonValueConverter jvc =
converterByClass.get(ClassUtils.resolvePrimitiveIfNecessary(valueClass));
if(jvc == null) {
// best effort
if (argValueRepr.isString()) {