Использовать объектную карту Spring с котлиновым топливом - PullRequest
0 голосов
/ 14 декабря 2018

Я использую топливо для интеграции http в моем приложении kotlin spring, есть способ использовать Джексона для сериализации / десериализации JSON.Но картограф - это val в FuelJackson.kt.Есть ли способ переопределить это с помощью сконфигурированного Springson Jackma Objectmapper, определенного как bean-компонент?

1 Ответ

0 голосов
/ 14 марта 2019

Иметь класс, принимающий инициализированный пружиной объектный картограф Джексона:

class FuelDeserializer(val objectMapper: ObjectMapper) {
inline fun <reified T : Any> deserialize() = object : ResponseDeserializable<T> 
{
        override fun deserialize(inputStream: InputStream): T? {
            return objectMapper.readValue(inputStream)
        }

        override fun deserialize(reader: Reader): T? {
            return objectMapper.readValue(reader)
        }

        override fun deserialize(bytes: ByteArray): T? {
            return objectMapper.readValue(bytes)
        }

        override fun deserialize(content: String): T? {
            return objectMapper.readValue(content)
        }
    }
}

Этот класс может быть добавлен к вам.

@Controller
class PdfGeneratorApi( 
    val fuelDeserializer: FuelDeserializer
) {

    fun postSomething(): ResponseEntity<?> {
        "http://exampl.com"
            .httpPost()
            .body("Something to post")
            .responseObject<MyObject>(fuelDeserializer.deserialize()) {_, _, result -> 
            when (result) {
                is Result.Failure -> logger.warn(result.getException()) { "Failure while posting" }
                is Result.Success -> ResponseEntity.ok(result.get())
            }
       }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...