I use jersey to open a service that uses jaxb annotated classes to customize the look of json.
I am trying to include a type directive in every json element. I do this by providing the Provider as such:
import org.codehaus.jackson.JsonParser.Feature; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.ObjectMapper.DefaultTyping; @Provider @Produces(MediaType.APPLICATION_JSON) public class CmsContextResolver implements ContextResolver<ObjectMapper> { ObjectMapper mapper; public CmsContextResolver() { mapper = new ObjectMapper(); // @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = // JsonTypeInfo.As.WRAPPER_OBJECT, property = "@type") mapper.configure(Feature.INTERN_FIELD_NAMES, true); mapper.enableDefaultTypingAsProperty(DefaultTyping.NON_FINAL, "@type"); } @Override public ObjectMapper getContext(Class<?> arg0) { return mapper; } }
And this provider is definitely matched.
10 May 2011 3:53:18 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses INFO: Provider classes found: class com.afrozaar.cms.service.CmsContextResolver
But it does not matter. The json format does not change.
As far as I can tell, the problem is that Jersey doesn't use Jackson for serialization? or that jersey ignores my jackson configuration settings ...
source share