Как предоставить некоторые значения для сериализатора объекта Mapper и сделать этот сериализатор асинхронным - PullRequest
0 голосов
/ 23 мая 2019

Весной встречается проблема с сериализатором / десериализатором WebFlux.
Мне нужно предоставить сериализатору значение «часовой пояс», которое я могу получить, например, от зарегистрированного пользователя или от текущих заголовков запросов.Как я могу ввести эти значения в сериализатор?
Кстати, может, мне не стоит использовать объектный картограф с реактором?(Похоже, у него нет возможности работать с моно и потоком)

public class LocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {

    private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm");

    @Override
    public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        ReactiveSecurityContextHolder.getContext()
                .subscribe(c -> {
                            // some magic will be here
                            gen.writeString(value.format(FORMATTER));
                        });

    }
}

Но
1. Здесь контекст безопасности пуст (но он не пуст в начале контроллера)
2. Даже если позвонит абонент, я получу исключение

...