From 472ce1ed1e7d25587a5b68ef55e7926dab83c04d Mon Sep 17 00:00:00 2001 From: Morten Kjetland Date: Mon, 2 Nov 2015 12:36:05 +0100 Subject: [PATCH 1/2] Adds test that asserts that Static @JsonCreator method does work - refs #229 --- .../module/scala/deser/UserOfValueHolder.java | 17 +++++++++++++++ .../module/scala/deser/ValueHolder.java | 21 +++++++++++++++++++ .../module/scala/deser/CreatorTest.scala | 17 +++++++++++++++ 3 files changed, 55 insertions(+) create mode 100755 src/test/java/com/fasterxml/jackson/module/scala/deser/UserOfValueHolder.java create mode 100755 src/test/java/com/fasterxml/jackson/module/scala/deser/ValueHolder.java mode change 100644 => 100755 src/test/scala/com/fasterxml/jackson/module/scala/deser/CreatorTest.scala diff --git a/src/test/java/com/fasterxml/jackson/module/scala/deser/UserOfValueHolder.java b/src/test/java/com/fasterxml/jackson/module/scala/deser/UserOfValueHolder.java new file mode 100755 index 000000000..47a5c6252 --- /dev/null +++ b/src/test/java/com/fasterxml/jackson/module/scala/deser/UserOfValueHolder.java @@ -0,0 +1,17 @@ +package com.fasterxml.jackson.module.scala.deser; + +public class UserOfValueHolder { + + private ValueHolder valueHolder; + + public UserOfValueHolder() { + } + + public ValueHolder getValueHolder() { + return valueHolder; + } + + public void setValueHolder(ValueHolder valueHolder) { + this.valueHolder = valueHolder; + } +} diff --git a/src/test/java/com/fasterxml/jackson/module/scala/deser/ValueHolder.java b/src/test/java/com/fasterxml/jackson/module/scala/deser/ValueHolder.java new file mode 100755 index 000000000..7c0c4a255 --- /dev/null +++ b/src/test/java/com/fasterxml/jackson/module/scala/deser/ValueHolder.java @@ -0,0 +1,21 @@ +package com.fasterxml.jackson.module.scala.deser; + +import com.fasterxml.jackson.annotation.JsonCreator; + +import java.util.Objects; + + +public class ValueHolder { + + public final long internalValue; + + private ValueHolder(long internalValue) { + this.internalValue = internalValue; + } + + @JsonCreator + public static ValueHolder parse(String value) { + return new ValueHolder(Long.parseLong(value)); + } + +} 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 old mode 100644 new mode 100755 index 2f30479b9..4b3df30ed --- 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,6 +1,9 @@ package com.fasterxml.jackson.module.scala.deser +import java.util.concurrent.TimeUnit + import com.fasterxml.jackson.annotation.JsonCreator +import com.fasterxml.jackson.databind.ObjectMapper import org.junit.runner.RunWith import org.scalatest.junit.JUnitRunner import org.scalatest.matchers.ShouldMatchers @@ -43,4 +46,18 @@ class CreatorTest extends DeserializationFixture { val bean = f.readValue[CreatorModeWrapper]("""{"a":"foo"}""") bean.a.s shouldEqual "foo" } + + it should "work with static method creator" in { f => + val json = """{"valueHolder": "2"}""" + + val regularObjectMapper = new ObjectMapper() + + // Using regular objectMapper + val bean1 = regularObjectMapper.readValue(json, classOf[UserOfValueHolder]) + bean1.getValueHolder.internalValue shouldEqual 2L + + // Using objectMapper with DefaultScalaModule + val bean2 = f.readValue[UserOfValueHolder](json) + bean2.getValueHolder.internalValue shouldEqual 2L + } } From 9843de71c4ea0842c9178ade420accf2f04f8b22 Mon Sep 17 00:00:00 2001 From: Morten Kjetland Date: Fri, 19 Feb 2016 11:06:31 +0100 Subject: [PATCH 2/2] Removed unused import --- .../com/fasterxml/jackson/module/scala/deser/ValueHolder.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/test/java/com/fasterxml/jackson/module/scala/deser/ValueHolder.java b/src/test/java/com/fasterxml/jackson/module/scala/deser/ValueHolder.java index 7c0c4a255..ca4dbe0d6 100755 --- a/src/test/java/com/fasterxml/jackson/module/scala/deser/ValueHolder.java +++ b/src/test/java/com/fasterxml/jackson/module/scala/deser/ValueHolder.java @@ -2,9 +2,6 @@ import com.fasterxml.jackson.annotation.JsonCreator; -import java.util.Objects; - - public class ValueHolder { public final long internalValue;