Michael Pasternak has uploaded a new change for review. Change subject: Revert "restapi: Add support for JAXB annotations in JSON" ......................................................................
Revert "restapi: Add support for JAXB annotations in JSON" same can be done against standard resteasy-jackson-provider (which we want stick to, cause by using jackson-jaxrs directly, we lose all resteasy extensions) This reverts commit e87a70e006b8638b206bad01c02918030b255a0c. Signed-off-by: Michael pasternak <[email protected]> Change-Id: I5dfa9732952da951011c859e818daf6166c0436f --- M backend/manager/modules/restapi/interface/definition/pom.xml A backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resteasy/json/CustomObjectMapper.java M backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resteasy/json/JsonProvider.java M backend/manager/modules/restapi/webapp/src/main/resources/META-INF/MANIFEST.MF M backend/manager/modules/vdsbroker/pom.xml M pom.xml 6 files changed, 72 insertions(+), 49 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/03/20703/1 diff --git a/backend/manager/modules/restapi/interface/definition/pom.xml b/backend/manager/modules/restapi/interface/definition/pom.xml index 411232d..dd570b5 100644 --- a/backend/manager/modules/restapi/interface/definition/pom.xml +++ b/backend/manager/modules/restapi/interface/definition/pom.xml @@ -29,16 +29,9 @@ </dependency> <dependency> - <groupId>org.codehaus.jackson</groupId> - <artifactId>jackson-jaxrs</artifactId> - <version>${jackson.version}</version> - <scope>provided</scope> - </dependency> - - <dependency> - <groupId>org.codehaus.jackson</groupId> - <artifactId>jackson-xc</artifactId> - <version>${jackson.version}</version> + <groupId>org.jboss.resteasy</groupId> + <artifactId>resteasy-jackson-provider</artifactId> + <version>${resteasy.version}</version> <scope>provided</scope> </dependency> 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 new file mode 100644 index 0000000..67e7b31 --- /dev/null +++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resteasy/json/CustomObjectMapper.java @@ -0,0 +1,48 @@ +/* +* Copyright (c) 2010 Red Hat, Inc. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +package org.ovirt.engine.api.resteasy.json; + +import org.codehaus.jackson.map.annotate.JsonSerialize; +import org.codehaus.jackson.map.ObjectMapper; +import org.codehaus.jackson.map.SerializationConfig; +import org.codehaus.jackson.map.ser.CustomSerializerFactory; + +public class CustomObjectMapper extends ObjectMapper +{ + public static CustomObjectMapper get() { + CustomObjectMapper mapper = new CustomObjectMapper(); + mapper.setSerializer(new CustomBeanFactory()).includeDefaults(false).indent(true); + return mapper; + } + + protected CustomObjectMapper setSerializer(CustomSerializerFactory ser) { + setSerializerFactory(ser); + getSerializationConfig().setSerializationView(String.class); + return this; + } + + protected CustomObjectMapper includeDefaults(boolean include) { + getSerializationConfig().setSerializationInclusion( + include ? JsonSerialize.Inclusion.ALWAYS : JsonSerialize.Inclusion.NON_DEFAULT); + return this; + } + + protected CustomObjectMapper indent(boolean indent) { + configure(SerializationConfig.Feature.INDENT_OUTPUT, indent); + return this; + } +} diff --git a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resteasy/json/JsonProvider.java b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resteasy/json/JsonProvider.java index 4d422c2..6d8f968 100644 --- a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resteasy/json/JsonProvider.java +++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resteasy/json/JsonProvider.java @@ -16,50 +16,33 @@ package org.ovirt.engine.api.resteasy.json; +import java.lang.annotation.Annotation; +import java.lang.reflect.Type; + import javax.ws.rs.Consumes; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.ext.Provider; -import org.codehaus.jackson.jaxrs.JacksonJsonProvider; -import org.codehaus.jackson.map.DeserializationConfig; -import org.codehaus.jackson.map.ObjectMapper; -import org.codehaus.jackson.map.SerializationConfig; -import org.codehaus.jackson.map.annotate.JsonSerialize; -import org.codehaus.jackson.xc.JaxbAnnotationIntrospector; +import org.jboss.resteasy.plugins.providers.jackson.ResteasyJacksonProvider; @Provider @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) -public class JsonProvider extends JacksonJsonProvider { +public class JsonProvider extends ResteasyJacksonProvider +{ public JsonProvider() { - // Note that we can't specify here the use of JAXB annotations as it is ignored if the mapper is changed later, - // thus we need to call the parent constructor first, without a mapper, and then create the mapper and pass it - // to the parent class once it is fully configured: super(); + setMapper(CustomObjectMapper.get()); + } - // Create a mapper that uses our custom bean factory: - ObjectMapper mapper = new ObjectMapper(); - mapper.setSerializerFactory(new CustomBeanFactory()); + @Override + public boolean isReadable(Class<?> aClass, Type type, Annotation[] annotations, MediaType mediaType) { + return super.isReadable(aClass, type, annotations, mediaType); + } - // 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 = mapper.getSerializationConfig() - .withView(String.class) - .withAnnotationIntrospector(introspector) - .with(SerializationConfig.Feature.INDENT_OUTPUT) - .withSerializationInclusion(JsonSerialize.Inclusion.NON_DEFAULT); - mapper.setSerializationConfig(serCfg); - - // Configure the deserializer: - DeserializationConfig deserCfg = mapper.getDeserializationConfig() - .withAnnotationIntrospector(introspector); - mapper.setDeserializationConfig(deserCfg); - - // Pass the configured mapper to the parent class: - setMapper(mapper); + @Override + public boolean isWriteable(Class<?> aClass, Type type, Annotation[] annotations, MediaType mediaType) { + return super.isWriteable(aClass, type, annotations, mediaType); } } 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 c7b21c6..24d1ddb 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,4 +1,2 @@ Manifest-Version: 1.0 -Dependencies: org.codehaus.jackson.jackson-jaxrs, - org.codehaus.jackson.jackson-xc, - org.yaml.snakeyaml +Dependencies: org.yaml.snakeyaml diff --git a/backend/manager/modules/vdsbroker/pom.xml b/backend/manager/modules/vdsbroker/pom.xml index e5ea9a3..ca41724 100644 --- a/backend/manager/modules/vdsbroker/pom.xml +++ b/backend/manager/modules/vdsbroker/pom.xml @@ -62,7 +62,7 @@ <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-asl</artifactId> - <version>${jackson.version}</version> + <version>${jackson-core-asl.version}</version> </dependency> <dependency> diff --git a/pom.xml b/pom.xml index ae75e69..9f12291 100644 --- a/pom.xml +++ b/pom.xml @@ -79,7 +79,8 @@ <javassist.version>3.12.0.GA</javassist.version> <javax.mail.version>1.4.4</javax.mail.version> <hibernate-validator.version>4.0.2.GA</hibernate-validator.version> - <jackson.version>1.9.4</jackson.version> + <jackson-core-asl.version>1.9.4</jackson-core-asl.version> + <jackson-mapper-asl.version>1.9.4</jackson-mapper-asl.version> <commons-configuration.version>1.6</commons-configuration.version> <commons-jxpath.version>1.3</commons-jxpath.version> <jaxb-impl.version>2.2</jaxb-impl.version> @@ -248,12 +249,12 @@ <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-asl</artifactId> - <version>${jackson.version}</version> + <version>${jackson-core-asl.version}</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> - <version>${jackson.version}</version> + <version>${jackson-mapper-asl.version}</version> </dependency> <dependency> <groupId>log4j</groupId> -- To view, visit http://gerrit.ovirt.org/20703 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5dfa9732952da951011c859e818daf6166c0436f 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
