Я использую Джерси для предоставления сервиса, который использует аннотированные классы jaxb для настройки внешнего вида json.
Я пытаюсь включить директиву type в каждый элемент json. Я делаю это, предоставляя Поставщика как такового:
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;
}
}
И этот провайдер определенно подбирается.
10 May 2011 3:53:18 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Provider classes found:
class com.afrozaar.cms.service.CmsContextResolver
Но это не имеет значения. Формат json не изменяется.
Насколько я могу судить, проблема связана с тем фактом, что Джерси не использует Джексона для сериализации? или эта майка игнорирует мои изменения конфигурации Джексона ...