Upgrade to the latest jackson version
git-svn-id: https://svn.apache.org/repos/asf/incubator/wink/trunk@1292070 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/wink-providers/wink-jackson-provider/pom.xml b/wink-providers/wink-jackson-provider/pom.xml
index 0702502..3688b97 100644
--- a/wink-providers/wink-jackson-provider/pom.xml
+++ b/wink-providers/wink-jackson-provider/pom.xml
@@ -31,22 +31,22 @@
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
- <version>1.8.0</version>
+ <version>1.9.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
- <version>1.8.0</version>
+ <version>1.9.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
- <version>1.8.0</version>
+ <version>1.9.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
- <version>1.8.0</version>
+ <version>1.9.4</version>
</dependency>
<dependency>
<groupId>org.apache.wink</groupId>
diff --git a/wink-providers/wink-jackson-provider/src/main/java/org/apache/wink/providers/jackson/WinkJacksonJaxbJsonProvider.java b/wink-providers/wink-jackson-provider/src/main/java/org/apache/wink/providers/jackson/WinkJacksonJaxbJsonProvider.java
index 72fc913..6181296 100644
--- a/wink-providers/wink-jackson-provider/src/main/java/org/apache/wink/providers/jackson/WinkJacksonJaxbJsonProvider.java
+++ b/wink-providers/wink-jackson-provider/src/main/java/org/apache/wink/providers/jackson/WinkJacksonJaxbJsonProvider.java
@@ -19,22 +19,16 @@
*******************************************************************************/
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.DeserializationConfig.Feature;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
import org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector;
@@ -43,72 +37,24 @@
@Provider
@Consumes( {MediaType.APPLICATION_JSON, "text/json"})
@Produces( {MediaType.APPLICATION_JSON, "text/json"})
-public class WinkJacksonJaxbJsonProvider implements MessageBodyReader<Object>, MessageBodyWriter<Object> {
-
- JacksonJaxbJsonProvider jacksonProvider;
+public class WinkJacksonJaxbJsonProvider extends JacksonJaxbJsonProvider implements MessageBodyReader<Object>, MessageBodyWriter<Object> {
public WinkJacksonJaxbJsonProvider() {
+ super(createObjectMapper(), BASIC_ANNOTATIONS);
+ }
+
+ private static ObjectMapper createObjectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().setSerializationInclusion(Inclusion.NON_NULL);
+ mapper.getDeserializationConfig().set(Feature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
+// mapper.getSerializationConfig().setDateFormat(StdDateFormat.getBlueprintISO8601Format());
+// mapper.getDeserializationConfig().setDateFormat(StdDateFormat.getBlueprintISO8601Format());
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);
+ return mapper;
}
}
diff --git a/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonDeserializationConfiguration2Test.java b/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonDeserializationConfiguration2Test.java
index 1bb2ee1..1919447 100644
--- a/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonDeserializationConfiguration2Test.java
+++ b/wink-providers/wink-jackson-provider/src/test/java/org/apache/wink/providers/jackson/internal/JacksonDeserializationConfiguration2Test.java
@@ -25,7 +25,6 @@
import java.util.ArrayList;
import java.util.List;
-import javax.servlet.ServletException;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
@@ -113,10 +112,9 @@
MediaType.APPLICATION_JSON);
request.setContentType(MediaType.APPLICATION_JSON);
request.setContent("{\"children\":[\"Joe\",\"Sally\",\"Steve\"]}".getBytes());
- try{
- invoke(request);
- fail("ServletException not thrown for missing setter method of children.");
- } catch(ServletException e) {}
+ // No jackson 1.9.x support the List without setter
+ MockHttpServletResponse response = invoke(request);
+ assertEquals(200, response.getStatus());
}
public void testPOSTPersonWithAgeWeight() throws Exception {