Repository: johnzon Updated Branches: refs/heads/master f48879137 -> e20f42730
jsonb reverted jsonb.fail-on-unknown-properties, keeping it as a johnzon property Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/e20f4273 Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/e20f4273 Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/e20f4273 Branch: refs/heads/master Commit: e20f42730bf30fdb750e9cb19c9cb66d981caa19 Parents: f488791 Author: rmannibucau <[email protected]> Authored: Tue Mar 21 13:07:50 2017 +0100 Committer: rmannibucau <[email protected]> Committed: Tue Mar 21 13:07:50 2017 +0100 ---------------------------------------------------------------------- .../jaxrs/jsonb/jaxrs/JsonbJaxrsProvider.java | 35 ++++++++++++++------ .../apache/johnzon/jsonb/JohnzonBuilder.java | 16 +++++---- .../jsonb/FailOnUnknownPropertiesTest.java | 2 +- .../main/java/javax/json/bind/JsonbConfig.java | 5 --- 4 files changed, 34 insertions(+), 24 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/johnzon/blob/e20f4273/johnzon-jsonb/src/main/java/org/apache/johnzon/jaxrs/jsonb/jaxrs/JsonbJaxrsProvider.java ---------------------------------------------------------------------- diff --git a/johnzon-jsonb/src/main/java/org/apache/johnzon/jaxrs/jsonb/jaxrs/JsonbJaxrsProvider.java b/johnzon-jsonb/src/main/java/org/apache/johnzon/jaxrs/jsonb/jaxrs/JsonbJaxrsProvider.java index fc17494..089406f 100644 --- a/johnzon-jsonb/src/main/java/org/apache/johnzon/jaxrs/jsonb/jaxrs/JsonbJaxrsProvider.java +++ b/johnzon-jsonb/src/main/java/org/apache/johnzon/jaxrs/jsonb/jaxrs/JsonbJaxrsProvider.java @@ -36,10 +36,12 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.Reader; +import java.io.StringReader; import java.io.Writer; import java.lang.annotation.Annotation; import java.lang.reflect.Type; import java.util.Collection; +import java.util.Properties; import java.util.concurrent.atomic.AtomicReference; // here while we dont compile in java 8 jaxrs module, when migrated we'll merge it with IgnorableTypes hierarchy at least @@ -69,7 +71,18 @@ public class JsonbJaxrsProvider<T> implements MessageBodyWriter<T>, MessageBodyR // config - main containers support the configuration of providers this way public void setFailOnUnknownProperties(final boolean active) { - config.withFailOnUnknownProperties(active); + config.setProperty("johnzon.fail-on-unknown-properties", active); + } + + public void setOtherProperties(final String others) { + final Properties properties = new Properties() {{ + try { + load(new StringReader(others)); + } catch (final IOException e) { + throw new IllegalArgumentException(e); + } + }}; + properties.stringPropertyNames().forEach(k -> config.setProperty(k, properties.getProperty(k))); } public void setIJson(final boolean active) { @@ -105,21 +118,21 @@ public class JsonbJaxrsProvider<T> implements MessageBodyWriter<T>, MessageBodyR @Override public boolean isReadable(final Class<?> type, final Type genericType, final Annotation[] annotations, final MediaType mediaType) { return !isIgnored(type) - && InputStream.class != genericType && Reader.class != genericType && Response.class != genericType - && String.class != genericType - && !JsonStructure.class.isAssignableFrom(type); + && InputStream.class != genericType && Reader.class != genericType && Response.class != genericType + && String.class != genericType + && !JsonStructure.class.isAssignableFrom(type); } @Override public boolean isWriteable(final Class<?> type, final Type genericType, final Annotation[] annotations, final MediaType mediaType) { return !isIgnored(type) - && InputStream.class != genericType - && OutputStream.class != genericType - && Writer.class != genericType - && StreamingOutput.class != genericType - && String.class != genericType - && Response.class != genericType - && !JsonStructure.class.isAssignableFrom(type); + && InputStream.class != genericType + && OutputStream.class != genericType + && Writer.class != genericType + && StreamingOutput.class != genericType + && String.class != genericType + && Response.class != genericType + && !JsonStructure.class.isAssignableFrom(type); } @Override http://git-wip-us.apache.org/repos/asf/johnzon/blob/e20f4273/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 a3a86ba..798b770 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 @@ -253,7 +253,9 @@ public class JohnzonBuilder implements JsonbBuilder { config.getProperty(JsonbConfig.STRICT_IJSON).map(Boolean.class::cast).ifPresent(ijson -> { // no-op: https://tools.ietf.org/html/rfc7493 the only MUST of the spec should be fine by default }); - config.getProperty(JsonbConfig.FAIL_ON_UNKNOWN_PROPERTIES).map(Boolean.class::cast).ifPresent(builder::setFailOnUnknownProperties); + config.getProperty("johnzon.fail-on-unknown-properties") + .map(v -> Boolean.class.isInstance(v) ? Boolean.class.cast(v) : Boolean.parseBoolean(String.valueOf(v))) + .ifPresent(builder::setFailOnUnknownProperties); config.getProperty(JsonbConfig.BINARY_DATA_STRATEGY).map(String.class::cast).ifPresent(bin -> { switch (bin) { @@ -299,7 +301,7 @@ public class JohnzonBuilder implements JsonbBuilder { } builder.addObjectConverter( Class.class.cast(args[0]), (ObjectConverter.Writer) - (instance, jsonbGenerator) -> s.serialize(instance, jsonbGenerator.getJsonGenerator(), new JohnzonSerializationContext(jsonbGenerator))); + (instance, jsonbGenerator) -> s.serialize(instance, jsonbGenerator.getJsonGenerator(), new JohnzonSerializationContext(jsonbGenerator))); }); }); config.getProperty(JsonbConfig.DESERIALIZERS).map(JsonbDeserializer[].class::cast).ifPresent(deserializers -> { @@ -315,8 +317,8 @@ public class JohnzonBuilder implements JsonbBuilder { // TODO: support PT in ObjectConverter (list) builder.addObjectConverter( Class.class.cast(args[0]), (ObjectConverter.Reader) - (jsonObject, targetType, parser) -> d.deserialize( - parserFactoryProvider.get().createParser(jsonObject), new JohnzonDeserializationContext(parser), targetType)); + (jsonObject, targetType, parser) -> d.deserialize( + parserFactoryProvider.get().createParser(jsonObject), new JohnzonDeserializationContext(parser), targetType)); }); }); @@ -343,9 +345,9 @@ public class JohnzonBuilder implements JsonbBuilder { private ParameterizedType findPT(final Object s, final Class<?> type) { return ParameterizedType.class.cast( - Stream.of(s.getClass().getGenericInterfaces()) - .filter(i -> ParameterizedType.class.isInstance(i) && ParameterizedType.class.cast(i).getRawType() == type) - .findFirst().orElse(null)); + Stream.of(s.getClass().getGenericInterfaces()) + .filter(i -> ParameterizedType.class.isInstance(i) && ParameterizedType.class.cast(i).getRawType() == type) + .findFirst().orElse(null)); } private Object getBeanManager() { http://git-wip-us.apache.org/repos/asf/johnzon/blob/e20f4273/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/FailOnUnknownPropertiesTest.java ---------------------------------------------------------------------- diff --git a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/FailOnUnknownPropertiesTest.java b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/FailOnUnknownPropertiesTest.java index 0c52308..90f3bf1 100644 --- a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/FailOnUnknownPropertiesTest.java +++ b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/FailOnUnknownPropertiesTest.java @@ -31,7 +31,7 @@ import static org.junit.Assert.fail; public class FailOnUnknownPropertiesTest { @Test public void failOnUnknownProperties() { - final Jsonb jsonb = JsonbBuilder.create(new JsonbConfig().withFailOnUnknownProperties(true)); + final Jsonb jsonb = JsonbBuilder.create(new JsonbConfig().setProperty("johnzon.fail-on-unknown-properties", true)); // valid assertEquals("ok", jsonb.fromJson("{\"known\":\"ok\"}", Model.class).known); http://git-wip-us.apache.org/repos/asf/johnzon/blob/e20f4273/jsonb-api/src/main/java/javax/json/bind/JsonbConfig.java ---------------------------------------------------------------------- diff --git a/jsonb-api/src/main/java/javax/json/bind/JsonbConfig.java b/jsonb-api/src/main/java/javax/json/bind/JsonbConfig.java index 528b1b9..149c871 100644 --- a/jsonb-api/src/main/java/javax/json/bind/JsonbConfig.java +++ b/jsonb-api/src/main/java/javax/json/bind/JsonbConfig.java @@ -32,7 +32,6 @@ import java.util.Optional; public class JsonbConfig { private final Map<String, Object> configuration = new HashMap<>(); - public static final String FAIL_ON_UNKNOWN_PROPERTIES = "jsonb.fail-on-unknown-properties"; public static final String FORMATTING = "jsonb.formatting"; public static final String ENCODING = "jsonb.encoding"; public static final String PROPERTY_NAMING_STRATEGY = "jsonb.property-naming-strategy"; @@ -47,10 +46,6 @@ public class JsonbConfig { public static final String SERIALIZERS = "jsonb.serializers"; public static final String DESERIALIZERS = "jsonb.derializers"; - public final JsonbConfig withFailOnUnknownProperties(final Boolean failOnUnknownProperties) { - return setProperty(FAIL_ON_UNKNOWN_PROPERTIES, failOnUnknownProperties); - } - public final JsonbConfig withDateFormat(final String dateFormat, final Locale locale) { return setProperty(DATE_FORMAT, dateFormat).setProperty(LOCALE, locale != null ? locale : Locale.getDefault()); }
