Skip to content

Commit

Permalink
bump jackson-module-scala for all scala versions. Tests passing
Browse files Browse the repository at this point in the history
  • Loading branch information
Hugh Simpson committed Jun 18, 2021
1 parent 727d12c commit 1490990
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 12 deletions.
6 changes: 3 additions & 3 deletions project/Build.scala
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ object ScalaMeterBuild {
"org.scala-sbt" % "test-interface" % "1.0",
"org.scala-lang.modules" %% "scala-xml" % "1.2.0",
"org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.2",
"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.11.3",
"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.13.0-SNAPSHOT",
"commons-io" % "commons-io" % "2.4",
"io.spray" %% "spray-json" % "1.3.5",
"org.jline" % "jline" % "3.10.0"
Expand All @@ -139,7 +139,7 @@ object ScalaMeterBuild {
"org.scala-sbt" % "test-interface" % "1.0",
"org.scala-lang.modules" % "scala-xml_2.12" % "1.0.5",
"org.scala-lang.modules" % "scala-parser-combinators_2.12" % "1.0.4",
"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.11.3",
"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.13.0-SNAPSHOT",
"commons-io" % "commons-io" % "2.4",
"io.spray" % "spray-json_2.12" % "1.3.2",
"org.jline" % "jline" % "3.10.0"
Expand All @@ -152,7 +152,7 @@ object ScalaMeterBuild {
"org.scala-sbt" % "test-interface" % "1.0",
"org.scala-lang.modules" %% "scala-xml" % "1.0.1",
"org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.1",
"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.11.3",
"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.13.0-SNAPSHOT",
"commons-io" % "commons-io" % "2.4",
"io.spray" %% "spray-json" % "1.3.2",
"org.jline" % "jline" % "3.10.0"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package org.scalameter.persistence

import java.io.InputStream

import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.scala.DefaultScalaModule
import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper

import org.scalameter.History


package object json {
/** Jackson ObjectMapper that maps concrete class instances to JSON, and vice versa.
Expand Down Expand Up @@ -33,7 +37,9 @@ package object json {
* }}}
*/
private[persistence] lazy val jsonMapper = {
val mapper = new ObjectMapper with ScalaObjectMapper
val mapper = new ObjectMapper with ScalaObjectMapper with HistoryReader {
def readHistory[T](is: InputStream): History[T] = readValue[History[_]](is).asInstanceOf[History[T]]
}
mapper.registerModules(DefaultScalaModule, ScalaMeterModule)
mapper
}
Expand Down
23 changes: 19 additions & 4 deletions src/main/scala-3/org/scalameter/persistence/json/package.scala
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
package org.scalameter.persistence

import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.scala.DefaultScalaModule
import com.fasterxml.jackson.module.scala.ClassTagExtensions
import java.io.InputStream

import scala.reflect.ClassTag

import com.fasterxml.jackson.core.JsonParser
import com.fasterxml.jackson.databind.`type`.TypeFactory
import com.fasterxml.jackson.databind.{JavaType, ObjectMapper}
import com.fasterxml.jackson.module.scala.{ClassTagExtensions, DefaultScalaModule, JavaTypeable}
import org.scalameter.History


package object json {
Expand Down Expand Up @@ -33,7 +39,16 @@ package object json {
* }}}
*/
private[persistence] lazy val jsonMapper = {
val mapper = new ObjectMapper with ClassTagExtensions
val mapper = new ObjectMapper with ClassTagExtensions with HistoryReader {
def readHistory[T](src: InputStream): History[T] = {
val javaTypeable: JavaTypeable[History[T]] = new JavaTypeable[History[T]] {
override def asJavaType(typeFactory: TypeFactory): JavaType = {
typeFactory.constructParametricType(classOf[History[_]], JavaTypeable.anyJavaTypeable.asJavaType(typeFactory))
}
}
readValue(src, javaTypeable.asJavaType(getTypeFactory))
}
}
mapper.registerModules(DefaultScalaModule, ScalaMeterModule)
mapper
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ case class GZIPJSONSerializationPersistor(path: File)
new GZIPOutputStream(new FileOutputStream(file))

protected def loadFrom[T](is: GZIPInputStream): History[T] = {
jsonMapper.readValue[History[_]](is).asInstanceOf[History[T]]
jsonMapper.readHistory[T](is)
}

protected def saveTo[T](history: History[T], os: GZIPOutputStream): Unit = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ case class JSONSerializationPersistor(path: File)
protected def outputStream(file: File): FileOutputStream = new FileOutputStream(file)

protected def loadFrom[T](is: FileInputStream): History[T] = {
jsonMapper.readValue[History[_]](is).asInstanceOf[History[T]]
jsonMapper.readHistory[T](is)
}

protected def saveTo[T](history: History[T], os: FileOutputStream): Unit = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@ package persistence.json



import com.fasterxml.jackson.core.{JsonToken, JsonParser, JsonGenerator}
import java.io.InputStream

import com.fasterxml.jackson.core.{JsonGenerator, JsonParser, JsonToken}
import com.fasterxml.jackson.databind._
import com.fasterxml.jackson.databind.deser.Deserializers
import com.fasterxml.jackson.databind.deser.std.StdDeserializer
import com.fasterxml.jackson.databind.jsontype.{TypeSerializer, TypeDeserializer}
import com.fasterxml.jackson.databind.jsontype.{TypeDeserializer, TypeSerializer}
import com.fasterxml.jackson.databind.Module.SetupContext
import com.fasterxml.jackson.databind.module.SimpleModule
import com.fasterxml.jackson.databind.ser.Serializers
Expand Down Expand Up @@ -240,3 +242,7 @@ object ScalaMeterModule extends SimpleModule {
super.setupModule(context)
}
}

trait HistoryReader {
def readHistory[T](src: InputStream): History[T]
}

0 comments on commit 1490990

Please sign in to comment.