Я пытаюсь понять, как объяснить Джерси и Джексону, как десериализовать Будущее, которое я передаю как байт [].
Я создаю свой собственный ContextResolver
public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> {
private static ObjectMapper mapper = null;
public ObjectMapperContextResolver() {
mapper = ObjectMapperFactory.getObjectMapper();
}
@Override
public ObjectMapper getContext(Class<?> type) {
return mapper;
}
}
Иреализация ObjectMapper
public static ObjectMapper getObjectMapper() {
ObjectMapper defaultObjectMapper = new ObjectMapper();
SimpleModule futureModule = new SimpleModule("FutureModule");
futureModule.<Future>addDeserializer(Future.class, new FutureDeserializer<String>());
defaultObjectMapper.registerModule(futureModule);
return defaultObjectMapper;
}
И, наконец, в реализации моего FutureDeserializer
public class FutureDeserializer<T> extends StdDeserializer<Future<T>>{
public FutureDeserializer() {
super(Future.class);
}
@Override
public Future<T> deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException {
ObjectMapper mapper=(ObjectMapper)jp.getCodec();
//TODO: Breakpoint never stop here
return null;
}
}
Затем я регистрируюсь в моем ResourceConfig
перед запуском JerseyTest
ResourceConfig rc = new ResourceConfig();
rc.register(SpringLifecycleListener.class);
rc.register(RequestContextFilter.class);
rc.register(new JacksonFeature());
rc.register(new ObjectMapperContextResolver());
Но когда я запускаю тест, ObjectMapperContextResolver вызывается и картограф возвращается в Джерси, но он никогда не использует FutureDeserializer.
Есть идеи, что я делаю неправильно?