Michael Pasternak has uploaded a new change for review. Change subject: restapi: restapi: Add support for JAXB annotations in JSON #652883 ......................................................................
restapi: restapi: Add support for JAXB annotations in JSON #652883 Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=652883 Change-Id: Ifd4dd0681df72a37e3090ea00509c0f5ec206b14 Signed-off-by: Michael pasternak <[email protected]> --- M backend/manager/modules/restapi/interface/definition/pom.xml M backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resteasy/json/CustomObjectMapper.java M backend/manager/modules/restapi/webapp/src/main/resources/META-INF/MANIFEST.MF 3 files changed, 34 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/04/20704/1 diff --git a/backend/manager/modules/restapi/interface/definition/pom.xml b/backend/manager/modules/restapi/interface/definition/pom.xml index dd570b5..71b60a7 100644 --- a/backend/manager/modules/restapi/interface/definition/pom.xml +++ b/backend/manager/modules/restapi/interface/definition/pom.xml @@ -36,6 +36,13 @@ </dependency> <dependency> + <groupId>org.codehaus.jackson</groupId> + <artifactId>jackson-xc</artifactId> + <version>${jackson-core-asl.version}</version> + <scope>provided</scope> + </dependency> + + <dependency> <groupId>org.ovirt.engine.core</groupId> <artifactId>common</artifactId> <version>${engine.version}</version> diff --git a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resteasy/json/CustomObjectMapper.java b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resteasy/json/CustomObjectMapper.java index 67e7b31..6431526 100644 --- a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resteasy/json/CustomObjectMapper.java +++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resteasy/json/CustomObjectMapper.java @@ -17,15 +17,20 @@ package org.ovirt.engine.api.resteasy.json; import org.codehaus.jackson.map.annotate.JsonSerialize; +import org.codehaus.jackson.map.DeserializationConfig; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.SerializationConfig; import org.codehaus.jackson.map.ser.CustomSerializerFactory; +import org.codehaus.jackson.xc.JaxbAnnotationIntrospector; public class CustomObjectMapper extends ObjectMapper { public static CustomObjectMapper get() { CustomObjectMapper mapper = new CustomObjectMapper(); - mapper.setSerializer(new CustomBeanFactory()).includeDefaults(false).indent(true); + mapper.setSerializer(new CustomBeanFactory()) + .includeDefaults(false) + .indent(true) + .addSerializationConfig(); return mapper; } @@ -45,4 +50,23 @@ configure(SerializationConfig.Feature.INDENT_OUTPUT, indent); return this; } + + protected CustomObjectMapper addSerializationConfig() { + // We need the instrospector that takes into account the JAXB annotations, + // both for the serializer and for the deserializer: + JaxbAnnotationIntrospector introspector = new JaxbAnnotationIntrospector(); + + // Configure the serializer: + SerializationConfig serCfg = getSerializationConfig() + .withAnnotationIntrospector(introspector); + setSerializationConfig(serCfg); + + // Configure the deserializer: + DeserializationConfig deserCfg = getDeserializationConfig() + .withAnnotationIntrospector(introspector); + setDeserializationConfig(deserCfg); + + return this; + } + } diff --git a/backend/manager/modules/restapi/webapp/src/main/resources/META-INF/MANIFEST.MF b/backend/manager/modules/restapi/webapp/src/main/resources/META-INF/MANIFEST.MF index 24d1ddb..6856a8a 100644 --- a/backend/manager/modules/restapi/webapp/src/main/resources/META-INF/MANIFEST.MF +++ b/backend/manager/modules/restapi/webapp/src/main/resources/META-INF/MANIFEST.MF @@ -1,2 +1,3 @@ Manifest-Version: 1.0 -Dependencies: org.yaml.snakeyaml +Dependencies: org.codehaus.jackson.jackson-xc,org.yaml.snakeyaml + -- To view, visit http://gerrit.ovirt.org/20704 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifd4dd0681df72a37e3090ea00509c0f5ec206b14 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Michael Pasternak <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
