You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by rm...@apache.org on 2017/04/19 09:18:28 UTC

johnzon git commit: JOHNZON-115 add SerializeValueFilter configuration for providers

Repository: johnzon
Updated Branches:
  refs/heads/master 125cbf225 -> 68dc83757


JOHNZON-115 add SerializeValueFilter configuration for providers


Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo
Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/68dc8375
Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/68dc8375
Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/68dc8375

Branch: refs/heads/master
Commit: 68dc83757910422ba5d81bd9b808c747117ea3fb
Parents: 125cbf2
Author: rmannibucau <rm...@apache.org>
Authored: Wed Apr 19 11:18:22 2017 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Wed Apr 19 11:18:22 2017 +0200

----------------------------------------------------------------------
 .../johnzon/jaxrs/ConfigurableJohnzonProvider.java | 13 +++++++++++++
 .../org/apache/johnzon/jsonb/JohnzonBuilder.java   | 17 ++++++++++++++++-
 2 files changed, 29 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/johnzon/blob/68dc8375/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/ConfigurableJohnzonProvider.java
----------------------------------------------------------------------
diff --git a/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/ConfigurableJohnzonProvider.java b/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/ConfigurableJohnzonProvider.java
index 6e35b0a..f59d48e 100644
--- a/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/ConfigurableJohnzonProvider.java
+++ b/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/ConfigurableJohnzonProvider.java
@@ -19,6 +19,7 @@
 package org.apache.johnzon.jaxrs;
 
 import org.apache.johnzon.mapper.MapperBuilder;
+import org.apache.johnzon.mapper.SerializeValueFilter;
 import org.apache.johnzon.mapper.access.AccessMode;
 
 import javax.json.JsonReaderFactory;
@@ -34,6 +35,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Type;
 import java.util.Comparator;
 import java.util.List;
@@ -211,4 +213,15 @@ public class ConfigurableJohnzonProvider<T> implements MessageBodyWriter<T>, Mes
     public void setPrimitiveConverters(final boolean val) {
         builder.setPrimitiveConverters(val);
     }
+
+    public void setSerializeValueFilter(final String val) {
+        try {
+            builder.setSerializeValueFilter(SerializeValueFilter.class.cast(
+                    Thread.currentThread().getContextClassLoader().loadClass(val).getConstructor().newInstance()));
+        } catch (final InstantiationException | IllegalAccessException | NoSuchMethodException | ClassNotFoundException e) {
+            throw new IllegalArgumentException(e);
+        } catch (InvocationTargetException e) {
+            throw new IllegalArgumentException(e.getCause());
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/johnzon/blob/68dc8375/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonBuilder.java
----------------------------------------------------------------------
diff --git a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonBuilder.java b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonBuilder.java
index 3ac1cdf..36c21b6 100644
--- a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonBuilder.java
+++ b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonBuilder.java
@@ -51,6 +51,7 @@ import javax.json.spi.JsonProvider;
 import javax.json.stream.JsonGenerator;
 import javax.json.stream.JsonParserFactory;
 import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.lang.reflect.ParameterizedType;
@@ -289,7 +290,21 @@ public class JohnzonBuilder implements JsonbBuilder {
 
         builder.setReadAttributeBeforeWrite(
                 config.getProperty("johnzon.readAttributeBeforeWrite").map(Boolean.class::cast).orElse(false));
-        config.getProperty("johnzon.serialize-value-filter").ifPresent(s -> builder.setSerializeValueFilter(SerializeValueFilter.class.cast(s)));
+        config.getProperty("johnzon.serialize-value-filter")
+                .map(s -> {
+                    if (String.class.isInstance(s)) {
+                        try {
+                            return SerializeValueFilter.class.cast(
+                                    Thread.currentThread().getContextClassLoader().loadClass(s.toString()).getConstructor().newInstance());
+                        } catch (final InstantiationException | IllegalAccessException | NoSuchMethodException | ClassNotFoundException e) {
+                            throw new IllegalArgumentException(e);
+                        } catch (InvocationTargetException e) {
+                            throw new IllegalArgumentException(e.getCause());
+                        }
+                    }
+                    return s;
+                })
+                .ifPresent(s -> builder.setSerializeValueFilter(SerializeValueFilter.class.cast(s)));
 
         config.getProperty(JsonbConfig.SERIALIZERS).map(JsonbSerializer[].class::cast).ifPresent(serializers -> {
             Stream.of(serializers).forEach(s -> {