diff --git a/pom.xml b/pom.xml index bbf5c42..863ac8c 100644 --- a/pom.xml +++ b/pom.xml @@ -10,12 +10,12 @@ com.codahale jerkson_2.9.1 - 0.6.0-SNAPSHOT + 0.6.0 Jerkson for Scala 2.9.1 - 2.0.2 + 2.0.4 @@ -68,6 +68,16 @@ jackson-databind ${jackson.version} + + com.fasterxml.jackson.datatype + jackson-datatype-joda + ${jackson.version} + + + org.joda + joda-convert + 1.2 + com.codahale simplespec_${scala.version} diff --git a/src/main/scala/com/codahale/jerkson/Json.scala b/src/main/scala/com/codahale/jerkson/Json.scala index 1448f36..128185b 100644 --- a/src/main/scala/com/codahale/jerkson/Json.scala +++ b/src/main/scala/com/codahale/jerkson/Json.scala @@ -2,6 +2,7 @@ package com.codahale.jerkson import com.fasterxml.jackson.databind.{MappingJsonFactory, ObjectMapper} import com.fasterxml.jackson.core.{JsonGenerator, JsonParser => JacksonParser} +import com.fasterxml.jackson.datatype.joda.JodaModule object Json extends Json @@ -10,6 +11,7 @@ trait Json extends Parser with Generator { protected val mapper = new ObjectMapper mapper.registerModule(new ScalaModule(classLoader)) + mapper.registerModule(new JodaModule) protected val factory = new MappingJsonFactory(mapper) factory.enable(JsonGenerator.Feature.AUTO_CLOSE_JSON_CONTENT) diff --git a/src/test/scala/com/codahale/jerkson/tests/FancyTypeSupportSpec.scala b/src/test/scala/com/codahale/jerkson/tests/FancyTypeSupportSpec.scala index 9d94e74..46892f9 100644 --- a/src/test/scala/com/codahale/jerkson/tests/FancyTypeSupportSpec.scala +++ b/src/test/scala/com/codahale/jerkson/tests/FancyTypeSupportSpec.scala @@ -3,6 +3,7 @@ package com.codahale.jerkson.tests import java.net.URI import com.codahale.simplespec.Spec import org.junit.Test +import org.joda.time.DateTime import com.codahale.jerkson.Json._ import java.util.UUID @@ -28,4 +29,16 @@ class FancyTypeSupportSpec extends Spec { parse[UUID]("\"a62047e4-bfb5-4d71-aad7-1a6b338eee63\"").must(be(uuid)) } } + + class `A Joda DateTime` { + val ts = new DateTime("1883-07-03") + + @Test def `Generates a JSON int` { + generate(ts).must(be("-2729606822000")) + } + + @Test def `Is parsable from a JSON string` = { + parse[DateTime]("-2729606822000").compareTo(ts).must(be(0)) + } + } }