You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wink.apache.org by jr...@apache.org on 2010/09/27 19:21:17 UTC
svn commit: r1001822 - in
/incubator/wink/trunk/wink-providers/wink-jackson-provider: ./ src/main/
src/main/java/ src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/wink/ src/main/java/org/apache/wink/providers/
src/main/java/org/apa...
Author: jramos
Date: Mon Sep 27 17:21:16 2010
New Revision: 1001822
URL: http://svn.apache.org/viewvc?rev=1001822&view=rev
Log:
[WINK-299] Add WinkJacksonJaxbJsonProvider provider and corresponding wink-aplication file
Added:
incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/
incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/java/
incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/java/org/
incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/java/org/apache/
incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/java/org/apache/wink/
incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/java/org/apache/wink/providers/
incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/java/org/apache/wink/providers/jackson/
incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/java/org/apache/wink/providers/jackson/WinkJacksonJaxbJsonProvider.java
incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/resources/
incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/resources/META-INF/
incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/resources/META-INF/wink-application
Modified:
incubator/wink/trunk/wink-providers/wink-jackson-provider/pom.xml
incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JAXBCollectionJSONTest.java
incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonJAXBTest.java
incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonJSON4JBattleTest.java
incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonPOJOTest.java
incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/PolymorphicTest.java
Modified: incubator/wink/trunk/wink-providers/wink-jackson-provider/pom.xml
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-providers/wink-jackson-provider/pom.xml?rev=1001822&r1=1001821&r2=1001822&view=diff
==============================================================================
--- incubator/wink/trunk/wink-providers/wink-jackson-provider/pom.xml (original)
+++ incubator/wink/trunk/wink-providers/wink-jackson-provider/pom.xml Mon Sep 27 17:21:16 2010
@@ -60,6 +60,7 @@
<dependency>
<groupId>org.apache.wink</groupId>
<artifactId>wink-component-test-support</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
@@ -69,6 +70,7 @@
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
Added: incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/java/org/apache/wink/providers/jackson/WinkJacksonJaxbJsonProvider.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/java/org/apache/wink/providers/jackson/WinkJacksonJaxbJsonProvider.java?rev=1001822&view=auto
==============================================================================
--- incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/java/org/apache/wink/providers/jackson/WinkJacksonJaxbJsonProvider.java (added)
+++ incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/java/org/apache/wink/providers/jackson/WinkJacksonJaxbJsonProvider.java Mon Sep 27 17:21:16 2010
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.wink.providers.jackson;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+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.core.MultivaluedMap;
+import javax.ws.rs.ext.MessageBodyReader;
+import javax.ws.rs.ext.MessageBodyWriter;
+import javax.ws.rs.ext.Provider;
+
+import org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider;
+import org.codehaus.jackson.map.AnnotationIntrospector;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
+import org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector;
+import org.codehaus.jackson.xc.JaxbAnnotationIntrospector;
+
+@Provider
+@Consumes( {MediaType.APPLICATION_JSON, "text/json"})
+@Produces( {MediaType.APPLICATION_JSON, "text/json"})
+public class WinkJacksonJaxbJsonProvider implements MessageBodyReader<Object>, MessageBodyWriter<Object> {
+
+ JacksonJaxbJsonProvider jacksonProvider;
+
+ public WinkJacksonJaxbJsonProvider() {
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.getSerializationConfig().setSerializationInclusion(Inclusion.NON_NULL);
+ AnnotationIntrospector pair =
+ new AnnotationIntrospector.Pair(new JaxbAnnotationIntrospector(),
+ new JacksonAnnotationIntrospector());
+ mapper.getDeserializationConfig().setAnnotationIntrospector(pair);
+ mapper.getSerializationConfig().setAnnotationIntrospector(pair);
+ this.jacksonProvider = new JacksonJaxbJsonProvider();
+ jacksonProvider.setMapper(mapper);
+ }
+
+ public long getSize(Object t,
+ Class<?> type,
+ Type genericType,
+ Annotation[] annotations,
+ MediaType mediaType) {
+ return jacksonProvider.getSize(t, type, genericType, annotations, mediaType);
+ }
+
+ public boolean isWriteable(Class<?> type,
+ Type genericType,
+ Annotation[] annotations,
+ MediaType mediaType) {
+ return jacksonProvider.isWriteable(type, genericType, annotations, mediaType);
+ }
+
+ public void writeTo(Object t,
+ Class<?> type,
+ Type genericType,
+ Annotation[] annotations,
+ MediaType mediaType,
+ MultivaluedMap<String, Object> httpHeaders,
+ OutputStream entityStream) throws IOException {
+ jacksonProvider.writeTo(t,
+ type,
+ genericType,
+ annotations,
+ mediaType,
+ httpHeaders,
+ entityStream);
+ }
+
+ public boolean isReadable(Class<?> type,
+ Type genericType,
+ Annotation[] annotations,
+ MediaType mediaType) {
+ return jacksonProvider.isReadable(type, genericType, annotations, mediaType);
+ }
+
+ public Object readFrom(Class<Object> type,
+ Type genericType,
+ Annotation[] annotations,
+ MediaType mediaType,
+ MultivaluedMap<String, String> httpHeaders,
+ InputStream entityStream) throws IOException {
+ return jacksonProvider.readFrom(type,
+ genericType,
+ annotations,
+ mediaType,
+ httpHeaders,
+ entityStream);
+ }
+
+}
Added: incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/resources/META-INF/wink-application
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/resources/META-INF/wink-application?rev=1001822&view=auto
==============================================================================
--- incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/resources/META-INF/wink-application (added)
+++ incubator/wink/trunk/wink-providers/wink-jackson-provider/src/main/resources/META-INF/wink-application Mon Sep 27 17:21:16 2010
@@ -0,0 +1,20 @@
+##
+## Licensed to the Apache Software Foundation (ASF) under one
+## or more contributor license agreements. See the NOTICE file
+## distributed with this work for additional information
+## regarding copyright ownership. The ASF licenses this file
+## to you 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.
+##
+
+org.apache.wink.providers.jackson.WinkJacksonJaxbJsonProvider
Modified: incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JAXBCollectionJSONTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JAXBCollectionJSONTest.java?rev=1001822&r1=1001821&r2=1001822&view=diff
==============================================================================
--- incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JAXBCollectionJSONTest.java (original)
+++ incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JAXBCollectionJSONTest.java Mon Sep 27 17:21:16 2010
@@ -37,12 +37,11 @@ import javax.xml.datatype.XMLGregorianCa
import javax.xml.namespace.QName;
import org.apache.wink.common.model.atom.AtomEntry;
+import org.apache.wink.providers.jackson.WinkJacksonJaxbJsonProvider;
import org.apache.wink.providers.jackson.internal.jaxb.Person;
import org.apache.wink.providers.json.JSONUtils;
import org.apache.wink.server.internal.servlet.MockServletInvocationTest;
import org.apache.wink.test.mock.MockRequestConstructor;
-import org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider;
-import org.codehaus.jackson.map.SerializationConfig.Feature;
import org.json.JSONArray;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
@@ -154,11 +153,7 @@ public class JAXBCollectionJSONTest exte
@Override
protected Object[] getSingletons() {
- JacksonJaxbJsonProvider jacksonProvider = new JacksonJaxbJsonProvider();
- jacksonProvider.configure(Feature.WRITE_NULL_MAP_VALUES, Boolean.FALSE);
- jacksonProvider.configure(Feature.WRITE_NULL_PROPERTIES, Boolean.FALSE);
- jacksonProvider.configure(Feature.WRITE_DATES_AS_TIMESTAMPS, Boolean.TRUE);
- return new Object[] {jacksonProvider};
+ return new Object[] {new WinkJacksonJaxbJsonProvider()};
}
@Path("/test/person")
Modified: incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonJAXBTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonJAXBTest.java?rev=1001822&r1=1001821&r2=1001822&view=diff
==============================================================================
--- incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonJAXBTest.java (original)
+++ incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonJAXBTest.java Mon Sep 27 17:21:16 2010
@@ -32,12 +32,11 @@ import javax.xml.bind.JAXBElement;
import org.apache.wink.common.model.atom.AtomEntry;
import org.apache.wink.common.model.synd.SyndEntry;
+import org.apache.wink.providers.jackson.WinkJacksonJaxbJsonProvider;
import org.apache.wink.providers.jackson.internal.jaxb.Person;
import org.apache.wink.providers.json.JSONUtils;
import org.apache.wink.server.internal.servlet.MockServletInvocationTest;
import org.apache.wink.test.mock.MockRequestConstructor;
-import org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider;
-import org.codehaus.jackson.map.SerializationConfig.Feature;
import org.json.JSONObject;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
@@ -54,9 +53,7 @@ public class JacksonJAXBTest extends Moc
@Override
protected Object[] getSingletons() {
- JacksonJaxbJsonProvider jacksonProvider = new JacksonJaxbJsonProvider();
- jacksonProvider.configure(Feature.WRITE_NULL_PROPERTIES, Boolean.FALSE);
- return new Object[] {jacksonProvider};
+ return new Object[] {new WinkJacksonJaxbJsonProvider()};
}
@Path("/test/person")
@@ -168,8 +165,6 @@ public class JacksonJAXBTest extends Moc
"application/json");
MockHttpServletResponse response = invoke(request);
assertEquals(200, response.getStatus());
- System.out.println(new JSONObject(ENTRY_JSON).toString(4));
- System.out.println(new JSONObject(response.getContentAsString()).toString(4));
assertTrue(JSONUtils.equals(JSONUtils.objectForString(ENTRY_JSON), JSONUtils
.objectForString(response.getContentAsString())));
}
Modified: incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonJSON4JBattleTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonJSON4JBattleTest.java?rev=1001822&r1=1001821&r2=1001822&view=diff
==============================================================================
--- incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonJSON4JBattleTest.java (original)
+++ incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonJSON4JBattleTest.java Mon Sep 27 17:21:16 2010
@@ -26,11 +26,11 @@ import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
+import org.apache.wink.providers.jackson.WinkJacksonJaxbJsonProvider;
import org.apache.wink.providers.json.JSONUtils;
import org.apache.wink.providers.json.JsonProvider;
import org.apache.wink.server.internal.servlet.MockServletInvocationTest;
import org.apache.wink.test.mock.MockRequestConstructor;
-import org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider;
import org.json.JSONObject;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
@@ -48,7 +48,7 @@ public class JacksonJSON4JBattleTest ext
// last one listed takes priority
// (note: this test relies on consistent behavior in MockServletInvocationTest.getSingletons() -- if this
// method re-orders the data return from here, test results may change)
- return new Object[] {new JacksonJaxbJsonProvider(), new JsonProvider()};
+ return new Object[] { new WinkJacksonJaxbJsonProvider(), new JsonProvider(),};
}
@Path("/json4j")
Modified: incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonPOJOTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonPOJOTest.java?rev=1001822&r1=1001821&r2=1001822&view=diff
==============================================================================
--- incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonPOJOTest.java (original)
+++ incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonPOJOTest.java Mon Sep 27 17:21:16 2010
@@ -29,10 +29,10 @@ import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
+import org.apache.wink.providers.jackson.WinkJacksonJaxbJsonProvider;
import org.apache.wink.providers.json.JSONUtils;
import org.apache.wink.server.internal.servlet.MockServletInvocationTest;
import org.apache.wink.test.mock.MockRequestConstructor;
-import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.mock.web.MockHttpServletRequest;
@@ -47,8 +47,7 @@ public class JacksonPOJOTest extends Moc
@Override
protected Object[] getSingletons() {
- JacksonJsonProvider jacksonProvider = new JacksonJsonProvider();
- return new Object[] {jacksonProvider};
+ return new Object[] {new WinkJacksonJaxbJsonProvider()};
}
@Path("/jackson/pojo")
Modified: incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/PolymorphicTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/PolymorphicTest.java?rev=1001822&r1=1001821&r2=1001822&view=diff
==============================================================================
--- incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/PolymorphicTest.java (original)
+++ incubator/wink/trunk/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/PolymorphicTest.java Mon Sep 27 17:21:16 2010
@@ -29,6 +29,7 @@ import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
+import org.apache.wink.providers.jackson.WinkJacksonJaxbJsonProvider;
import org.apache.wink.providers.jackson.internal.jaxb.polymorphic.MyJAXBObject;
import org.apache.wink.providers.jackson.internal.jaxb.polymorphic.MyProperties;
import org.apache.wink.providers.jackson.internal.pojo.polymorphic.Animal;
@@ -45,7 +46,7 @@ import org.springframework.mock.web.Mock
public class PolymorphicTest extends MockServletInvocationTest {
- JacksonJsonProvider jacksonProvider;
+ WinkJacksonJaxbJsonProvider winkJacksonProvider = new WinkJacksonJaxbJsonProvider();
@Override
protected Class<?>[] getClasses() {
@@ -54,7 +55,7 @@ public class PolymorphicTest extends Moc
@Override
protected Object[] getSingletons() {
- return new Object[]{new JacksonJsonProvider(), new JacksonJaxbJsonProvider()};
+ return new Object[] {winkJacksonProvider};
}
@Path("/test/myproperties")
@@ -99,7 +100,7 @@ public class PolymorphicTest extends Moc
// call the provider as though the wink-client was in use on the client side
InputStream is = new ByteArrayInputStream(response.getContentAsByteArray());
- MyJAXBObject myJAXBObject = (MyJAXBObject)new JacksonJaxbJsonProvider().readFrom(Object.class, MyJAXBObject.class, null, MediaType.APPLICATION_JSON_TYPE, null, is);
+ MyJAXBObject myJAXBObject = (MyJAXBObject)winkJacksonProvider.readFrom(Object.class, MyJAXBObject.class, null, MediaType.APPLICATION_JSON_TYPE, null, is);
// make sure the Jackson deserializer is using the 'type' property on the XmlElement annotation in MyJAXBObject
// confirm Jackson deserialized to expected object type -- support for this was added in Jackson 1.4