diff --git a/src/main/kotlin/io/github/projectmapk/jackson/module/kogera/Extensions.kt b/src/main/kotlin/io/github/projectmapk/jackson/module/kogera/Extensions.kt index e64a50f..08286c7 100644 --- a/src/main/kotlin/io/github/projectmapk/jackson/module/kogera/Extensions.kt +++ b/src/main/kotlin/io/github/projectmapk/jackson/module/kogera/Extensions.kt @@ -11,6 +11,7 @@ import com.fasterxml.jackson.databind.Module import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.ObjectReader import com.fasterxml.jackson.databind.RuntimeJsonMappingException +import com.fasterxml.jackson.databind.cfg.MapperBuilder import com.fasterxml.jackson.databind.cfg.MutableConfigOverride import com.fasterxml.jackson.databind.json.JsonMapper import com.fasterxml.jackson.databind.module.SimpleModule @@ -200,6 +201,7 @@ public inline fun JsonMapper.Builder.addMixIn(): JsonMapp T::class.java, U::class.java, ) +public inline fun , reified T, reified U> M.addMixIn(): M = this.addMixIn(T::class.java, U::class.java) public operator fun ArrayNode.plus(element: Boolean) { add(element) diff --git a/src/test/kotlin/io/github/projectmapk/jackson/module/kogera/zPorted/test/ExtensionMethodsTests.kt b/src/test/kotlin/io/github/projectmapk/jackson/module/kogera/zPorted/test/ExtensionMethodsTests.kt index 35adb65..d933d61 100644 --- a/src/test/kotlin/io/github/projectmapk/jackson/module/kogera/zPorted/test/ExtensionMethodsTests.kt +++ b/src/test/kotlin/io/github/projectmapk/jackson/module/kogera/zPorted/test/ExtensionMethodsTests.kt @@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.SerializationFeature import com.fasterxml.jackson.databind.json.JsonMapper import com.fasterxml.jackson.databind.node.JsonNodeFactory +import com.fasterxml.jackson.dataformat.csv.CsvMapper import io.github.projectmapk.jackson.module.kogera.addMixIn import io.github.projectmapk.jackson.module.kogera.contains import io.github.projectmapk.jackson.module.kogera.convertValue @@ -101,4 +102,17 @@ private class TestExtensionMethods { assertEquals("{}", serializedPerson) } + + @Test fun mixInExtensionForGenericMapperBuilderTest() { + data class Person(val name: String) + abstract class PersonMixIn { @JsonIgnore var name: String = "" } + + // Assigned to a temporary variable to ensure that addMixIn returns a builder with the proper type + val mapperBuilder: CsvMapper.Builder = CsvMapper.builder() + .addMixIn<_, Person, PersonMixIn>() + val mapper: CsvMapper = mapperBuilder.build() + val serializedPerson: String = mapper.writeValueAsString(Person("test")) + + assertEquals("", serializedPerson) + } }