Skip to content

Commit ae9915f

Browse files
authored
Merge pull request #206 from ProjectMapK/refactors
Refactors and add tests
2 parents 25ed35d + 414789a commit ae9915f

File tree

12 files changed

+3902
-96
lines changed

12 files changed

+3902
-96
lines changed

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ dependencies {
3232
api(libs.jackson.annotations)
3333

3434
// test libs
35+
testImplementation("${libs.kotlin.reflect.get()}:${kotlinVersion}")
3536
testImplementation(libs.junit.api)
3637
testImplementation(libs.junit.params)
3738
testRuntimeOnly(libs.junit.engine)

gradle/libs.versions.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ jackson-databind = { module = "com.fasterxml.jackson.core:jackson-databind", ver
1212
jackson-annotations = { module = "com.fasterxml.jackson.core:jackson-annotations", version.ref = "jackson" }
1313

1414
# test libs
15+
kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect" }
1516
junit-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "junit" }
1617
junit-params = { module = "org.junit.jupiter:junit-jupiter-params", version.ref = "junit" }
1718
junit-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit" }

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import java.lang.reflect.Method
1212
internal typealias JavaDuration = java.time.Duration
1313
internal typealias KotlinDuration = kotlin.time.Duration
1414

15-
internal fun Class<*>.isUnboxableValueClass() = this.getAnnotation(JvmInline::class.java) != null
15+
internal fun Class<*>.isUnboxableValueClass() = this.isAnnotationPresent(JvmInline::class.java)
1616

1717
// JmClass must be value class.
1818
internal fun JmClass.wrapsNullValueClass() = inlineClassUnderlyingType!!.isNullable

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ internal object KotlinClassIntrospector : BasicClassIntrospector() {
5050
?: run {
5151
val coll = collectProperties(config, type, r, true)
5252

53-
if (type.rawClass.annotations.any { it is Metadata }) {
53+
if (type.rawClass.isAnnotationPresent(Metadata::class.java)) {
5454
KotlinBeanDescription(coll)
5555
} else {
5656
BasicBeanDescription.forDeserialization(coll)
@@ -71,7 +71,7 @@ internal object KotlinClassIntrospector : BasicClassIntrospector() {
7171
?: run {
7272
val coll = collectProperties(config, type, r, false)
7373

74-
if (type.rawClass.annotations.any { it is Metadata }) {
74+
if (type.rawClass.isAnnotationPresent(Metadata::class.java)) {
7575
KotlinBeanDescription(coll)
7676
} else {
7777
BasicBeanDescription.forDeserialization(coll)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ internal class KotlinFallbackAnnotationIntrospector(
8282
}
8383
} else {
8484
// If JsonUnbox is specified, the unboxed getter is used as is.
85-
if (a.hasAnnotation(JsonKUnbox::class.java) || it.getAnnotation(JsonKUnbox::class.java) != null) {
85+
if (a.hasAnnotation(JsonKUnbox::class.java) || it.isAnnotationPresent(JsonKUnbox::class.java)) {
8686
null
8787
} else {
8888
cache.getValueClassBoxConverter(a.rawReturnType, it)

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import com.fasterxml.jackson.core.util.DefaultIndenter
44
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter
55
import com.fasterxml.jackson.databind.ObjectMapper
66
import com.fasterxml.jackson.databind.ObjectWriter
7+
import org.junit.jupiter.api.Assertions.assertEquals
8+
import kotlin.reflect.full.memberProperties
9+
import kotlin.reflect.full.primaryConstructor
710

811
// This `printer` is used to match the output from Jackson to the newline char of the source code.
912
// If this is removed, comparisons will fail in a Windows-like platform.
@@ -13,3 +16,17 @@ internal val LF_PRINTER: DefaultPrettyPrinter =
1316
internal fun ObjectMapper.testPrettyWriter(): ObjectWriter = this.writer(LF_PRINTER)
1417

1518
internal fun Class<*>.isKotlinClass() = declaredAnnotations.any { it is Metadata }
19+
20+
internal val defaultMapper = jacksonObjectMapper()
21+
22+
internal inline fun <reified T : Any> callPrimaryConstructorByParamName(): T = T::class.primaryConstructor!!.run {
23+
val args = parameters.associateWith { it.name }
24+
return callBy(args)
25+
}
26+
27+
// Function for comparing non-data classes.
28+
internal inline fun <reified T : Any> assertReflectEquals(expected: T, actual: T) {
29+
T::class.memberProperties.forEach {
30+
assertEquals(it.get(expected), it.get(actual))
31+
}
32+
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package io.github.projectmapk.jackson.module.kogera.zIntegration
22

33
import com.fasterxml.jackson.databind.ObjectMapper
4+
import org.junit.jupiter.api.Assertions.assertTrue
45
import org.junit.jupiter.api.Test
56
import org.junit.jupiter.api.assertDoesNotThrow
67

78
class InitModuleTest {
89
@Test
910
fun findAndRegisterModulesTest() {
10-
assertDoesNotThrow { ObjectMapper().findAndRegisterModules() }
11+
val mapper = assertDoesNotThrow { ObjectMapper().findAndRegisterModules() }
12+
assertTrue(mapper.registeredModuleIds.contains("io.github.projectmapk.jackson.module.kogera.KotlinModule"))
1113
}
1214
}

0 commit comments

Comments
 (0)