diff --git a/src/test/scala/com/fasterxml/jackson/module/scala/deser/CreatorTest.scala b/src/test/scala/com/fasterxml/jackson/module/scala/deser/CreatorTest.scala index 15f2c7fdb..e62bdb781 100755 --- a/src/test/scala/com/fasterxml/jackson/module/scala/deser/CreatorTest.scala +++ b/src/test/scala/com/fasterxml/jackson/module/scala/deser/CreatorTest.scala @@ -1,7 +1,19 @@ package com.fasterxml.jackson.module.scala.deser import com.fasterxml.jackson.annotation.JsonCreator -import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.core.`type`.TypeReference +import com.fasterxml.jackson.databind.{JsonNode, ObjectMapper} +import com.fasterxml.jackson.databind.node.IntNode + +class PositiveLong private (val value: Long) { + override def toString() = s"PositiveLong($value)" +} +object PositiveLong { + @JsonCreator + def apply(long: Long): PositiveLong = new PositiveLong(long) + @JsonCreator + def apply(str: String): PositiveLong = new PositiveLong(str.toLong) +} object CreatorTest { @@ -50,7 +62,6 @@ object CreatorTest case class ConstructorWithOptionStruct(s: Option[Struct1] = None) } - class CreatorTest extends DeserializationFixture { import CreatorTest._ @@ -147,4 +158,9 @@ class CreatorTest extends DeserializationFixture { deser2.s shouldEqual Some(Struct1("name")) f.writeValueAsString(ConstructorWithOptionStruct()) shouldEqual """{"s":null}""" } + + it should "support multiple creator annotations" in { f => + val node: JsonNode = f.valueToTree[IntNode](10) + f.convertValue(node, new TypeReference[PositiveLong] {}).value shouldEqual node.asLong() + } }