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