Skip to content
Merged

2.19 #994

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 @@ -26,7 +26,11 @@ class JacksonInjectTest {
@get:JacksonInject("noNNn")
val noNNn: NullableObject?,
@get:JacksonInject("noNN")
val noNN: NullableObject?
val noNN: NullableObject?,
@get:JacksonInject("tupNn")
val tupNn: TwoUnitPrimitive,
@get:JacksonInject("tupN")
val tupN: TwoUnitPrimitive?
)

@Test
Expand All @@ -39,7 +43,9 @@ class JacksonInjectTest {
"noNnNn" to NullableObject("noNnNn"),
"noNnN" to NullableObject(null),
"noNNn" to NullableObject("noNNn"),
"noNN" to NullableObject(null)
"noNN" to NullableObject(null),
"tupNn" to TwoUnitPrimitive(3),
"tupN" to TwoUnitPrimitive(4)
)

val reader = jacksonObjectMapper()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,14 @@ value class NullableObject(val v: String?) {
override fun deserializeKey(key: String, ctxt: DeserializationContext) = NullableObject("$key-deser")
}
}

@JvmInline
value class TwoUnitPrimitive(val v: Long) {
class Deserializer : StdDeserializer<TwoUnitPrimitive>(TwoUnitPrimitive::class.java) {
override fun deserialize(p: JsonParser, ctxt: DeserializationContext): TwoUnitPrimitive = TwoUnitPrimitive(p.longValue + 100)
}

class KeyDeserializer : JacksonKeyDeserializer() {
override fun deserializeKey(key: String, ctxt: DeserializationContext) = TwoUnitPrimitive(key.toLong() + 100)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@ class WithoutCustomDeserializeMethodTest {
assertNotEquals(NullableObject(null), result, "kogera #209 has been fixed.")
}
}

@Test
fun twoUnitPrimitive() {
val result = defaultMapper.readValue<TwoUnitPrimitive>("1")
assertEquals(TwoUnitPrimitive(1), result)
}
}

data class Dst(
Expand All @@ -53,7 +59,9 @@ class WithoutCustomDeserializeMethodTest {
val nnoNn: NonNullObject,
val nnoN: NonNullObject?,
val noNn: NullableObject,
val noN: NullableObject?
val noN: NullableObject?,
val tupNn: TwoUnitPrimitive,
val tupN: TwoUnitPrimitive?
)

@Test
Expand All @@ -64,7 +72,9 @@ class WithoutCustomDeserializeMethodTest {
NonNullObject("foo"),
NonNullObject("bar"),
NullableObject("baz"),
NullableObject("qux")
NullableObject("qux"),
TwoUnitPrimitive(3),
TwoUnitPrimitive(4)
)
val src = defaultMapper.writeValueAsString(expected)
val result = defaultMapper.readValue<Dst>(src)
Expand All @@ -80,6 +90,8 @@ class WithoutCustomDeserializeMethodTest {
NonNullObject("foo"),
null,
NullableObject(null),
null,
TwoUnitPrimitive(3),
null
)
val src = defaultMapper.writeValueAsString(expected)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.defaultArgument

import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.module.kotlin.defaultMapper
import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.TwoUnitPrimitive
import com.fasterxml.jackson.module.kotlin.readValue
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test

class TwoUnitPrimitiveTest {
data class ByConstructor(
val nn: TwoUnitPrimitive = TwoUnitPrimitive(1),
val nNn: TwoUnitPrimitive? = TwoUnitPrimitive(2),
val nN: TwoUnitPrimitive? = null
)

@Test
fun byConstructorTest() {
assertEquals(ByConstructor(), defaultMapper.readValue<ByConstructor>("{}"))
}

data class ByFactory(val nn: TwoUnitPrimitive, val nNn: TwoUnitPrimitive?, val nN: TwoUnitPrimitive?) {
companion object {
@JvmStatic
@JsonCreator
fun creator(
nn: TwoUnitPrimitive = TwoUnitPrimitive(1),
nNn: TwoUnitPrimitive? = TwoUnitPrimitive(2),
nN: TwoUnitPrimitive? = null
) = ByFactory(nn, nNn, nN)
}
}

@Test
fun byFactoryTest() {
assertEquals(ByFactory.creator(), defaultMapper.readValue<ByFactory>("{}"))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.NonNullObject
import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.NullableObject
import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.Primitive
import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.TwoUnitPrimitive
import com.fasterxml.jackson.module.kotlin.readValue
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Nested
Expand All @@ -18,6 +19,7 @@ class SpecifiedForObjectMapperTest {
this.addDeserializer(Primitive::class.java, Primitive.Deserializer())
this.addDeserializer(NonNullObject::class.java, NonNullObject.Deserializer())
this.addDeserializer(NullableObject::class.java, NullableObject.DeserializerWrapsNullable())
this.addDeserializer(TwoUnitPrimitive::class.java, TwoUnitPrimitive.Deserializer())
}
this.registerModule(module)
}
Expand Down Expand Up @@ -50,9 +52,15 @@ class SpecifiedForObjectMapperTest {
@Test
fun nullString() {
val result = mapper.readValue<NullableObject?>("null")
assertNotEquals(NullableObject("null-value-deser"), result, "kogera #209 has been fixed.")
assertNotEquals(NullableObject("null-value-deser"), result, "#209 has been fixed.")
}
}

@Test
fun twoUnitPrimitive() {
val result = mapper.readValue<TwoUnitPrimitive>("1")
assertEquals(TwoUnitPrimitive(101), result)
}
}

data class Dst(
Expand All @@ -61,7 +69,9 @@ class SpecifiedForObjectMapperTest {
val nnoNn: NonNullObject,
val nnoN: NonNullObject?,
val noNn: NullableObject,
val noN: NullableObject?
val noN: NullableObject?,
val tupNn: TwoUnitPrimitive,
val tupN: TwoUnitPrimitive?
)

@Test
Expand All @@ -72,7 +82,9 @@ class SpecifiedForObjectMapperTest {
NonNullObject("foo"),
NonNullObject("bar"),
NullableObject("baz"),
NullableObject("qux")
NullableObject("qux"),
TwoUnitPrimitive(3),
TwoUnitPrimitive(4)
)
val src = mapper.writeValueAsString(base)
val result = mapper.readValue<Dst>(src)
Expand All @@ -83,7 +95,9 @@ class SpecifiedForObjectMapperTest {
NonNullObject("foo-deser"),
NonNullObject("bar-deser"),
NullableObject("baz-deser"),
NullableObject("qux-deser")
NullableObject("qux-deser"),
TwoUnitPrimitive(103),
TwoUnitPrimitive(104)
)
assertEquals(expected, result)
}
Expand All @@ -96,6 +110,8 @@ class SpecifiedForObjectMapperTest {
NonNullObject("foo"),
null,
NullableObject(null),
null,
TwoUnitPrimitive(3),
null
)
val src = mapper.writeValueAsString(base)
Expand All @@ -107,6 +123,8 @@ class SpecifiedForObjectMapperTest {
NonNullObject("foo-deser"),
null,
NullableObject("null-value-deser"),
null,
TwoUnitPrimitive(103),
null
)
assertEquals(expected, result)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.deserializer.byAnnotation.specifiedForProperty

import com.fasterxml.jackson.databind.annotation.JsonDeserialize
import com.fasterxml.jackson.module.kotlin.defaultMapper
import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.TwoUnitPrimitive
import com.fasterxml.jackson.module.kotlin.readValue
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test

class TwoUnitPrimitiveTest {
data class NonNull(
@get:JsonDeserialize(using = TwoUnitPrimitive.Deserializer::class)
val getterAnn: TwoUnitPrimitive,
@field:JsonDeserialize(using = TwoUnitPrimitive.Deserializer::class)
val fieldAnn: TwoUnitPrimitive
)

@Test
fun nonNull() {
val result = defaultMapper.readValue<NonNull>(
"""
{
"getterAnn" : 1,
"fieldAnn" : 2
}
""".trimIndent()
)
assertEquals(NonNull(TwoUnitPrimitive(101), TwoUnitPrimitive(102)), result)
}

data class Nullable(
@get:JsonDeserialize(using = TwoUnitPrimitive.Deserializer::class)
val getterAnn: TwoUnitPrimitive?,
@field:JsonDeserialize(using = TwoUnitPrimitive.Deserializer::class)
val fieldAnn: TwoUnitPrimitive?
)

@Nested
inner class NullableTest {
@Test
fun nonNullInput() {
val result = defaultMapper.readValue<Nullable>(
"""
{
"getterAnn" : 1,
"fieldAnn" : 2
}
""".trimIndent()
)
assertEquals(Nullable(TwoUnitPrimitive(101), TwoUnitPrimitive(102)), result)
}

@Test
fun nullInput() {
val result = defaultMapper.readValue<Nullable>(
"""
{
"getterAnn" : null,
"fieldAnn" : null
}
""".trimIndent()
)
assertEquals(Nullable(null, null), result)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@ import com.fasterxml.jackson.module.kotlin.defaultMapper
import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.NonNullObject
import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.NullableObject
import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.Primitive
import com.fasterxml.jackson.module.kotlin.kogeraIntegration.deser.valueClass.TwoUnitPrimitive
import com.fasterxml.jackson.module.kotlin.readValue
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test

private fun Primitive.modify(): Primitive = Primitive(v + 100)
private fun NonNullObject.modify(): NonNullObject = NonNullObject("$v-creator")
private fun NullableObject.modify(): NullableObject = NullableObject(v!! + "-creator")
private fun TwoUnitPrimitive.modify(): TwoUnitPrimitive = TwoUnitPrimitive(v + 100)

class InCreatorArgumentTest {
data class Dst(
Expand All @@ -20,7 +22,9 @@ class InCreatorArgumentTest {
val nnoNn: NonNullObject,
val nnoN: NonNullObject?,
val noNn: NullableObject,
val noN: NullableObject?
val noN: NullableObject?,
val tupNn: TwoUnitPrimitive,
val tupN: TwoUnitPrimitive?
) {
companion object {
@JvmStatic
Expand All @@ -31,14 +35,18 @@ class InCreatorArgumentTest {
nnoNn: NonNullObject,
nnoN: NonNullObject?,
noNn: NullableObject,
noN: NullableObject?
noN: NullableObject?,
tupNn: TwoUnitPrimitive,
tupN: TwoUnitPrimitive?
) = Dst(
pNn.modify(),
pN?.modify(),
nnoNn.modify(),
nnoN?.modify(),
noNn.modify(),
noN?.modify()
noN?.modify(),
tupNn.modify(),
tupN?.modify()
)
}
}
Expand All @@ -51,7 +59,9 @@ class InCreatorArgumentTest {
NonNullObject("nnoNn"),
NonNullObject("nnoN"),
NullableObject("noNn"),
NullableObject("noN")
NullableObject("noN"),
TwoUnitPrimitive(3),
TwoUnitPrimitive(4)
)
val result = defaultMapper.readValue<Dst>(defaultMapper.writeValueAsString(base))

Expand All @@ -62,7 +72,9 @@ class InCreatorArgumentTest {
nnoNn = base.nnoNn.modify(),
nnoN = base.nnoN?.modify(),
noNn = base.noNn.modify(),
noN = base.noN?.modify()
noN = base.noN?.modify(),
tupNn = base.tupNn.modify(),
tupN = base.tupN?.modify()
),
result
)
Expand Down
Loading