1 package eu.scape_project.watch.rest.resource;
2
3 import javax.ws.rs.Produces;
4 import javax.ws.rs.core.MediaType;
5 import javax.ws.rs.ext.Provider;
6
7 import org.codehaus.jackson.map.AnnotationIntrospector;
8 import org.codehaus.jackson.map.DeserializationConfig.Feature;
9 import org.codehaus.jackson.map.ObjectMapper;
10 import org.codehaus.jackson.map.SerializationConfig;
11 import org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector;
12 import org.codehaus.jackson.xc.JaxbAnnotationIntrospector;
13
14
15
16
17
18
19
20
21 @Provider
22 @Produces(MediaType.APPLICATION_JSON)
23 public class JSONContextResolver extends org.codehaus.jackson.jaxrs.JacksonJsonProvider {
24
25
26
27
28 @SuppressWarnings("deprecation")
29 private static final class ObjectMapperHolder {
30
31
32
33 private ObjectMapperHolder() {
34 }
35
36
37
38
39 public static final ObjectMapper COMMON_MAPPER = new ObjectMapper();
40
41 static {
42 AnnotationIntrospector jackson = new JacksonAnnotationIntrospector();
43 AnnotationIntrospector jaxb = new JaxbAnnotationIntrospector();
44 AnnotationIntrospector pair = new AnnotationIntrospector.Pair(jaxb, jackson);
45 COMMON_MAPPER.getSerializationConfig().setAnnotationIntrospector(jaxb);
46 COMMON_MAPPER.getDeserializationConfig().setAnnotationIntrospector(pair);
47 COMMON_MAPPER.getDeserializationConfig().set(Feature.AUTO_DETECT_SETTERS, true);
48 COMMON_MAPPER.configure(Feature.AUTO_DETECT_SETTERS, true);
49 COMMON_MAPPER.configure(SerializationConfig.Feature.WRITE_NULL_PROPERTIES, false);
50 COMMON_MAPPER.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
51 COMMON_MAPPER.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
52 }
53 }
54
55
56
57
58
59
60 public static ObjectMapper getCommonMapper() {
61 return ObjectMapperHolder.COMMON_MAPPER;
62 }
63
64 public JSONContextResolver() {
65 super.setMapper(getCommonMapper());
66 }
67 }