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.*;
6 import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
7 import org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector;
8 import org.codehaus.jackson.xc.JaxbAnnotationIntrospector;
9
10 public class JacksonJsonProviderFactory
11 {
12 public JacksonJsonProvider create(Iterable<? extends Module> modules)
13 {
14 ObjectMapper mapper = new ObjectMapper();
15
16
17 AnnotationIntrospector intr = AnnotationIntrospector.pair(new JacksonAnnotationIntrospector(), new JaxbAnnotationIntrospector());
18 mapper.setDeserializationConfig(mapper.getDeserializationConfig().withAnnotationIntrospector(intr));
19 mapper.setSerializationConfig(mapper.getSerializationConfig().withAnnotationIntrospector(intr));
20
21
22 mapper.setSerializationInclusion(Inclusion.NON_NULL);
23
24 for (Module module : modules)
25 mapper.registerModule(module);
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 }