Advertisement
Guest User

Untitled

a guest
Jul 15th, 2019
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.48 KB | None | 0 0
  1. package com.comarch.iaa.bd.servicescore.utils
  2.  
  3. import akka.http.javadsl.marshallers.jackson.Jackson
  4. import akka.http.javadsl.model.{StatusCode, StatusCodes}
  5. import akka.http.javadsl.server.Directives.complete
  6. import akka.http.javadsl.server.directives.RouteAdapter
  7. import akka.http.scaladsl.server.Route
  8. import akka.http.scaladsl.unmarshalling.{FromEntityUnmarshaller, PredefinedFromEntityUnmarshallers}
  9. import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility
  10. import com.fasterxml.jackson.annotation.PropertyAccessor
  11. import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper}
  12. import com.fasterxml.jackson.datatype.guava.GuavaModule
  13. import com.fasterxml.jackson.datatype.jdk8.Jdk8Module
  14.  
  15. trait JavaObjectMarshaller {
  16.   val DefaultMapper: ObjectMapper = new ObjectMapper()
  17.     .registerModule(new Jdk8Module())
  18.     .registerModule(new GuavaModule())
  19.     .setVisibility(PropertyAccessor.FIELD, Visibility.ANY)
  20.     .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
  21.  
  22.   def completeWithJavaObject[T](inputObject: T, statusCode: StatusCode = StatusCodes.OK, mapper: ObjectMapper = DefaultMapper): Route = {
  23.     val function: Function[T, RouteAdapter] = value => complete(statusCode, value, Jackson.marshaller[T](mapper))
  24.     function(inputObject).delegate
  25.   }
  26.  
  27.   def unmarshaller[T](cl: Class[T]): FromEntityUnmarshaller[T] =
  28.     PredefinedFromEntityUnmarshallers.stringUnmarshaller map { str =>
  29.       DefaultMapper.readValue(str, cl)
  30.     }
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement