Skip to content

Migration Notes

From 0.14.x to 0.15.x

Breaking Changes

The most notable breaking change is ser/de operations. The framework was only relying on Jackson for serialization and deserialization. Now, it provides a way to use other serialization libraries. StoveSerde<TIn, TOut> is the new interface that you can implement to provide your own serialization and deserialization logic.

StoveSerde also provides the access to the other serializers that com-trendyol:stove-testing-e2e package has.

  • Jackson
  • Gson
  • Kotlinx

Also look at ser/de section: Serialization and Deserialization

Spring Kafka (com-trendyol:stove-spring-testing-e2e-kafka)

The TestSystemKafkaInterceptor now depends on StoveSerde to provide the serialization and deserialization logic instead of ObjectMapper.

You can of course use your default Jackson implementation by providing the ObjectMapperConfig.default() to the StoveSerde.jackson.anyByteArraySerde function.

class TestSystemInitializer : BaseApplicationContextInitializer({
  bean<TestSystemKafkaInterceptor<*, *>>(isPrimary = true)
  bean { StoveSerde.jackson.anyByteArraySerde(ObjectMapperConfig.default()) } // or any other serde that is <Any, ByteArray>
})

Standalone Kafka

kafka {
  KafkaSystemOptions(
    serde = StoveSerde.jackson.anyByteArraySerde(ObjectMapperConfig.default) // or any other serde that is <Any, ByteArray>
    //...
  )
}

Couchbase

couchbase {
  CouchbaseSystemOptions(
    clusterSerDe = JacksonJsonSerializer(CouchbaseConfiguration.objectMapper), // here you can provide your own serde
    //...
  )
}

Http

 httpClient {
  HttpClientSystemOptions(
    baseUrl = "http://localhost:8001",
    contentConverter = JacksonConverter(ObjectMapperConfig.default)
  )
}

Wiremock

wiremock {
  WireMockSystemOptions(
    port = 9090,
    serde = StoveSerde.jackson.anyByteArraySerde(ObjectMapperConfiguration.default)
  )

Elasticsearch

elasticsearch {
  ElasticsearchSystemOptions(
    jsonpMapper = JacksonJsonpMapper(StoveSerde.jackson.default), // or any JsonpMapper
  )
}

Mongodb

mongodb {
  MongoDbSystemOptions(
    serde = StoveSerde.jackson.default // or any other serde that you implement
  )
}

The default serde is:

  val serde: StoveSerde<Any, String> = StoveSerde.jackson.anyJsonStringSerde(
    StoveSerde.jackson.byConfiguring {
      disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
      enable(MapperFeature.DEFAULT_VIEW_INCLUSION)
      addModule(ObjectIdModule())
      addModule(KotlinModule.Builder().build())
    }
  ),