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 f8b1a9b898afc224160e850f7bc45c793cebd72c..0000000000000000000000000000000000000000 --- 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 455c61af05de325d792df75e4ad50a7b94c7ef79..8dd0ce4f80160b846ec1d33cc4ab06fe1e071775 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 0000000000000000000000000000000000000000..a5a6eb7bee0acacaee5057d8d8e9c3426dac577e --- /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 abccee346256877f32bac69d05fa42680e6eecfd..4eb02b8ad3bb602070e55362830cde9f62a52c56 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); } }