From 0fe1aa0e3887fbe4d8fd902951d90fda605496f1 Mon Sep 17 00:00:00 2001 From: Jonas Blatt <jonasblatt@uni-koblenz.de> Date: Mon, 9 Sep 2019 20:13:14 +0200 Subject: [PATCH] New Json Serializer Strategy --- .../de/unikoblenz/fgbks/base/json/Adapter.java | 17 ----------------- .../fgbks/base/json/JsonConfiguration.java | 9 ++++----- .../json/JsonSimpleValueObjectSerializer.java | 14 ++++++++++++++ .../base/json/PrivateVisibilityStrategy.java | 9 +++++++-- 4 files changed, 25 insertions(+), 24 deletions(-) delete mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/Adapter.java create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonSimpleValueObjectSerializer.java diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/Adapter.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/Adapter.java deleted file mode 100644 index f8b1a9b8..00000000 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/Adapter.java +++ /dev/null @@ -1,17 +0,0 @@ -package de.unikoblenz.fgbks.base.json; - -import de.unikoblenz.fgbks.base.value.SimpleValueObject; -import javax.json.bind.adapter.JsonbAdapter; - -public class Adapter implements JsonbAdapter<SimpleValueObject, String> { - - @Override - public String adaptToJson(SimpleValueObject obj) throws Exception { - return obj.getValue().toString(); - } - - @Override - public SimpleValueObject adaptFromJson(String obj) throws Exception { - return null; - } -} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonConfiguration.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonConfiguration.java index 455c61af..8dd0ce4f 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonConfiguration.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonConfiguration.java @@ -13,10 +13,9 @@ public class JsonConfiguration implements ContextResolver<Jsonb> { public Jsonb getContext(Class<?> type) { JsonbConfig config = new JsonbConfig() - .withAdapters(new Adapter()) - .withFormatting(true) - .withStrictIJSON(true) - .withPropertyVisibilityStrategy(new PrivateVisibilityStrategy()); - return JsonbBuilder.newBuilder().withConfig(config).build(); + .withPropertyVisibilityStrategy(new PrivateVisibilityStrategy()) + .withSerializers(new JsonSimpleValueObjectSerializer()) + .withFormatting(true); + return JsonbBuilder.create(config); } } diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonSimpleValueObjectSerializer.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonSimpleValueObjectSerializer.java new file mode 100644 index 00000000..a5a6eb7b --- /dev/null +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/JsonSimpleValueObjectSerializer.java @@ -0,0 +1,14 @@ +package de.unikoblenz.fgbks.base.json; + +import de.unikoblenz.fgbks.base.value.SimpleValueObject; +import javax.json.bind.serializer.JsonbSerializer; +import javax.json.bind.serializer.SerializationContext; +import javax.json.stream.JsonGenerator; + +public class JsonSimpleValueObjectSerializer implements JsonbSerializer<SimpleValueObject> { + + @Override + public void serialize(SimpleValueObject obj, JsonGenerator generator, SerializationContext ctx) { + ctx.serialize(obj.getValue(), generator); + } +} diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/PrivateVisibilityStrategy.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/PrivateVisibilityStrategy.java index abccee34..4eb02b8a 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/PrivateVisibilityStrategy.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/json/PrivateVisibilityStrategy.java @@ -2,17 +2,22 @@ package de.unikoblenz.fgbks.base.json; import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import javax.json.bind.annotation.JsonbProperty; +import javax.json.bind.annotation.JsonbTransient; import javax.json.bind.config.PropertyVisibilityStrategy; public class PrivateVisibilityStrategy implements PropertyVisibilityStrategy { @Override public boolean isVisible(Field field) { - return false; + return !field.isAnnotationPresent(JsonbTransient.class); } @Override public boolean isVisible(Method method) { - return true; + return Modifier.isPublic(method.getModifiers()) + && !method.isAnnotationPresent(JsonbTransient.class) + || method.isAnnotationPresent(JsonbProperty.class); } } -- GitLab