Skip to content

Commit 91a7090

Browse files
authored
Merge pull request #413 from ProjectMapK/develop
Release 2026-02-22 08:21:23 +0000
2 parents e55726b + 0c1da54 commit 91a7090

5 files changed

Lines changed: 22 additions & 4 deletions

File tree

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ val jacksonVersion = libs.versions.jackson.get()
1818
val generatedSrcPath = "${layout.buildDirectory.get()}/generated/kotlin"
1919

2020
group = groupStr
21-
version = "${jacksonVersion}-beta32"
21+
version = "${jacksonVersion}-beta33"
2222

2323
repositories {
2424
mavenCentral()

gradle/libs.versions.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
[versions]
22
kotlin = "2.1.21" # Mainly for CI, it can be rewritten by environment variable.
3-
jackson = "2.20.1"
3+
jackson = "2.20.2"
44

55
# test libs
6-
junit = "5.14.1"
6+
junit = "5.14.3"
77

88
[libraries]
99
kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib" }
@@ -16,7 +16,7 @@ jackson-annotations = { module = "com.fasterxml.jackson.core:jackson-annotations
1616
# test libs
1717
kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect" }
1818
junit-bom = { module = "org.junit:junit-bom", version.ref = "junit" }
19-
mockk = "io.mockk:mockk:1.14.6"
19+
mockk = "io.mockk:mockk:1.14.9"
2020
jackson-xml = { module = "com.fasterxml.jackson.dataformat:jackson-dataformat-xml" }
2121
jackson-csv = { module = "com.fasterxml.jackson.dataformat:jackson-dataformat-csv" }
2222
jackson-jsr310 = { module = "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" }

src/main/kotlin/io/github/projectmapk/jackson/module/kogera/Extensions.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.fasterxml.jackson.databind.Module
1111
import com.fasterxml.jackson.databind.ObjectMapper
1212
import com.fasterxml.jackson.databind.ObjectReader
1313
import com.fasterxml.jackson.databind.RuntimeJsonMappingException
14+
import com.fasterxml.jackson.databind.cfg.MapperBuilder
1415
import com.fasterxml.jackson.databind.cfg.MutableConfigOverride
1516
import com.fasterxml.jackson.databind.json.JsonMapper
1617
import com.fasterxml.jackson.databind.module.SimpleModule
@@ -200,6 +201,7 @@ public inline fun <reified T, reified U> JsonMapper.Builder.addMixIn(): JsonMapp
200201
T::class.java,
201202
U::class.java,
202203
)
204+
public inline fun <M : MapperBuilder<*, M>, reified T, reified U> M.addMixIn(): M = this.addMixIn(T::class.java, U::class.java)
203205

204206
public operator fun ArrayNode.plus(element: Boolean) {
205207
add(element)

src/main/kotlin/io/github/projectmapk/jackson/module/kogera/KotlinClassIntrospector.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ internal class KotlinBeanDescription(coll: POJOPropertiesCollector) : BasicBeanD
3737
internal object KotlinClassIntrospector : BasicClassIntrospector() {
3838
private fun readResolve(): Any = KotlinClassIntrospector
3939

40+
override fun copy(): KotlinClassIntrospector = this
41+
4042
override fun forSerialization(
4143
config: SerializationConfig,
4244
type: JavaType,

src/test/kotlin/io/github/projectmapk/jackson/module/kogera/zPorted/test/ExtensionMethodsTests.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.ObjectMapper
55
import com.fasterxml.jackson.databind.SerializationFeature
66
import com.fasterxml.jackson.databind.json.JsonMapper
77
import com.fasterxml.jackson.databind.node.JsonNodeFactory
8+
import com.fasterxml.jackson.dataformat.csv.CsvMapper
89
import io.github.projectmapk.jackson.module.kogera.addMixIn
910
import io.github.projectmapk.jackson.module.kogera.contains
1011
import io.github.projectmapk.jackson.module.kogera.convertValue
@@ -101,4 +102,17 @@ private class TestExtensionMethods {
101102

102103
assertEquals("{}", serializedPerson)
103104
}
105+
106+
@Test fun mixInExtensionForGenericMapperBuilderTest() {
107+
data class Person(val name: String)
108+
abstract class PersonMixIn { @JsonIgnore var name: String = "" }
109+
110+
// Assigned to a temporary variable to ensure that addMixIn returns a builder with the proper type
111+
val mapperBuilder: CsvMapper.Builder = CsvMapper.builder()
112+
.addMixIn<_, Person, PersonMixIn>()
113+
val mapper: CsvMapper = mapperBuilder.build()
114+
val serializedPerson: String = mapper.writeValueAsString(Person("test"))
115+
116+
assertEquals("", serializedPerson)
117+
}
104118
}

0 commit comments

Comments
 (0)