Джексон десериализует Scala Future - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь понять, как объяснить Джерси и Джексону, как десериализовать Будущее, которое я передаю как байт [].

Я создаю свой собственный 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.

Есть идеи, что я делаю неправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...