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()) {

Reply via email to