Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -200,6 +201,7 @@ public inline fun <reified T, reified U> JsonMapper.Builder.addMixIn(): JsonMapp
T::class.java,
U::class.java,
)
public inline fun <M : MapperBuilder<*, M>, reified T, reified U> M.addMixIn(): M = this.addMixIn(T::class.java, U::class.java)

public operator fun ArrayNode.plus(element: Boolean) {
add(element)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
}
}
Loading