diff --git a/build.sbt b/build.sbt index 6cb092c9b..b0f7f82d5 100644 --- a/build.sbt +++ b/build.sbt @@ -27,14 +27,14 @@ scalacOptions += "-target:jvm-1.6" libraryDependencies ++= Seq( "org.scala-lang" % "scala-reflect" % scalaVersion.value, - "com.fasterxml.jackson.core" % "jackson-core" % "2.6.4", - "com.fasterxml.jackson.core" % "jackson-annotations" % "2.6.4", - "com.fasterxml.jackson.core" % "jackson-databind" % "2.6.4", - "com.fasterxml.jackson.module" % "jackson-module-paranamer" % "2.6.4", + "com.fasterxml.jackson.core" % "jackson-core" % "2.6.5", + "com.fasterxml.jackson.core" % "jackson-annotations" % "2.6.5", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.6.5", + "com.fasterxml.jackson.module" % "jackson-module-paranamer" % "2.6.5", // test dependencies - "com.fasterxml.jackson.datatype" % "jackson-datatype-joda" % "2.6.4" % "test", - "com.fasterxml.jackson.datatype" % "jackson-datatype-guava" % "2.6.4" % "test", - "com.fasterxml.jackson.module" % "jackson-module-jsonSchema" % "2.6.4" % "test", + "com.fasterxml.jackson.datatype" % "jackson-datatype-joda" % "2.6.5" % "test", + "com.fasterxml.jackson.datatype" % "jackson-datatype-guava" % "2.6.5" % "test", + "com.fasterxml.jackson.module" % "jackson-module-jsonSchema" % "2.6.5" % "test", "org.scalatest" %% "scalatest" % "2.2.1" % "test", "junit" % "junit" % "4.11" % "test" ) diff --git a/src/main/scala/com/fasterxml/jackson/module/scala/introspect/ScalaAnnotationIntrospectorModule.scala b/src/main/scala/com/fasterxml/jackson/module/scala/introspect/ScalaAnnotationIntrospectorModule.scala index b727e1695..32a6c9c31 100644 --- a/src/main/scala/com/fasterxml/jackson/module/scala/introspect/ScalaAnnotationIntrospectorModule.scala +++ b/src/main/scala/com/fasterxml/jackson/module/scala/introspect/ScalaAnnotationIntrospectorModule.scala @@ -91,9 +91,14 @@ object ScalaAnnotationIntrospector extends NopAnnotationIntrospector } } - override def findCreatorBinding(a: Annotated): JsonCreator.Mode = - if (isScala(a) && hasCreatorAnnotation(a)) JsonCreator.Mode.PROPERTIES else null - + override def findCreatorBinding(a: Annotated): JsonCreator.Mode = { + val ann = _findAnnotation(a, classOf[JsonCreator]) + if (ann != null) { + ann.mode() + } else if (isScala(a) && hasCreatorAnnotation(a)) { + JsonCreator.Mode.PROPERTIES + } else null + } } trait ScalaAnnotationIntrospectorModule extends JacksonModule { 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 deleted file mode 100755 index 47a5c6252..000000000 --- a/src/test/java/com/fasterxml/jackson/module/scala/deser/UserOfValueHolder.java +++ /dev/null @@ -1,17 +0,0 @@ -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 index ca4dbe0d6..f59ec5f2e 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 @@ -3,7 +3,6 @@ import com.fasterxml.jackson.annotation.JsonCreator; public class ValueHolder { - public final long internalValue; private ValueHolder(long internalValue) { @@ -14,5 +13,4 @@ private ValueHolder(long internalValue) { 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 index 4b3df30ed..0fb827005 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 @@ -48,16 +48,16 @@ class CreatorTest extends DeserializationFixture { } it should "work with static method creator" in { f => - val json = """{"valueHolder": "2"}""" + val json = "\"2\"" val regularObjectMapper = new ObjectMapper() // Using regular objectMapper - val bean1 = regularObjectMapper.readValue(json, classOf[UserOfValueHolder]) - bean1.getValueHolder.internalValue shouldEqual 2L + val v1 = regularObjectMapper.readValue(json, classOf[ValueHolder]) + v1.internalValue shouldEqual 2L // Using objectMapper with DefaultScalaModule - val bean2 = f.readValue[UserOfValueHolder](json) - bean2.getValueHolder.internalValue shouldEqual 2L + val v2 = f.readValue[ValueHolder](json) + v2.internalValue shouldEqual 2L } } diff --git a/src/test/scala/com/fasterxml/jackson/module/scala/ser/CaseClassSerializerTest.scala b/src/test/scala/com/fasterxml/jackson/module/scala/ser/CaseClassSerializerTest.scala index 17fe8ed37..4b59dc264 100644 --- a/src/test/scala/com/fasterxml/jackson/module/scala/ser/CaseClassSerializerTest.scala +++ b/src/test/scala/com/fasterxml/jackson/module/scala/ser/CaseClassSerializerTest.scala @@ -106,7 +106,10 @@ class CaseClassSerializerTest extends SerializerTest { } it should "serialize a case class with unicode name properties" in { - serialize(UnicodeNameCaseClass(23, "the name of this")) should equal( """{"name":"the name of this","winning-id":23}""") + serialize(UnicodeNameCaseClass(23, "the name of this")) should ( + equal( """{"name":"the name of this","winning-id":23}""") or + equal( """{"winning-id":23,"name":"the name of this"}""") + ) } it should "seralize a generic case class" in {