akka/akka-http

Jackson Marshallers / Unmarshallers should be configurable / use akka.serialization.jackson.JacksonObjectMapperProvider

Open

#3.379 aberto em 20 de jul. de 2020

Ver no GitHub
 (1 comment) (2 reactions) (0 assignees)Scala (598 forks)batch import
1 - triagedhelp wantedt:marshalling

Métricas do repositório

Stars
 (1.311 stars)
Métricas de merge de PR
 (Mesclagem média 1h 17m) (1 fundiu PR em 30d)

Description

Currently the Jackson ObjectMapper in the akka.http.javadsl.marshallers.jackson.Jackson class creates a default object mapper which is not configurable. The only way to override its behaviour is by supplying a custom ObjectMapper everytime the marshaller/unmarshaller is used.

Akka already provides a way to customise Jackson configuration + retrieving a ObjectMapper through akka.serialization.jackson.JacksonObjectMapperProvider and the

akka.serialization.jackson {
    jackson-modules += "com.acme.MyJacksonModule"
}

configuration. The marshallers/unmarshallers should honour this configuration way. Ideally, we'd have a built-in

  public static Route extractObjectMapper(Function<ObjectMapper, Route> inner) {
    return extractActorSystem(sys -> {
      ObjectMapper objectMapper = JacksonObjectMapperProvider
          .get(sys)
          .getOrCreate("akka-http",
          Optional.empty());
      return provide(objectMapper, inner);
    });
  }

or similar.

Guia do colaborador