1 package com.atlassian.plugins.rest.common.json;
2
3 import org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider;
4 import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
5 import org.codehaus.jackson.map.AnnotationIntrospector;
6 import org.codehaus.jackson.map.DeserializationConfig;
7 import org.codehaus.jackson.map.ObjectMapper;
8 import org.codehaus.jackson.map.SerializationConfig;
9 import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
10 import org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector;
11 import org.codehaus.jackson.xc.JaxbAnnotationIntrospector;
12
13 public class JacksonJsonProviderFactory
14 {
15 public JacksonJsonProvider create()
16 {
17 ObjectMapper mapper = new ObjectMapper();
18
19
20 AnnotationIntrospector intr = AnnotationIntrospector.pair(new JacksonAnnotationIntrospector(), new JaxbAnnotationIntrospector());
21 mapper.setDeserializationConfig(mapper.getDeserializationConfig().withAnnotationIntrospector(intr));
22 mapper.setSerializationConfig(mapper.getSerializationConfig().withAnnotationIntrospector(intr));
23
24
25 mapper.setSerializationInclusion(Inclusion.NON_NULL);
26
27 JacksonJaxbJsonProvider provider = new JacksonJaxbJsonProvider(mapper, JacksonJaxbJsonProvider.DEFAULT_ANNOTATIONS);
28
29
30 provider.configure(SerializationConfig.Feature.AUTO_DETECT_GETTERS, false);
31 provider.configure(SerializationConfig.Feature.AUTO_DETECT_FIELDS, false);
32 provider.configure(DeserializationConfig.Feature.AUTO_DETECT_SETTERS, false);
33 provider.configure(DeserializationConfig.Feature.AUTO_DETECT_FIELDS, false);
34 return provider;
35 }
36 }