diff --git a/build.sbt b/build.sbt index 2a335cd79..6b1655678 100644 --- a/build.sbt +++ b/build.sbt @@ -117,7 +117,7 @@ lazy val utilCache = (project in internalPath / "util-cache"). settings( commonSettings, name := "Util Cache", - libraryDependencies ++= Seq(datatypeCodecs, sbtSerialization, scalaReflect.value, sbtIO) ++ scalaXml.value, + libraryDependencies ++= Seq(sjsonnew, scalaReflect.value, sbtIO) ++ scalaXml.value, libraryDependencies += sjsonnewScalaJson % Test ) diff --git a/internal/util-cache/src/main/scala/sbt/internal/util/AdditionalFormats.scala b/internal/util-cache/src/main/scala/sbt/internal/util/AdditionalFormats.scala index 79c90e9e4..00fc195ef 100644 --- a/internal/util-cache/src/main/scala/sbt/internal/util/AdditionalFormats.scala +++ b/internal/util-cache/src/main/scala/sbt/internal/util/AdditionalFormats.scala @@ -1,27 +1,30 @@ package sbt.internal.util -import sbt.datatype.{ ArrayFormat, ByteFormat, StringFormat } import sbt.internal.util.Types.:+: import sjsonnew.{ Builder, deserializationError, JsonFormat, Unbuilder } -import sjsonnew.BasicJsonProtocol.{ wrap, asSingleton } +import sjsonnew.BasicJsonProtocol, BasicJsonProtocol.asSingleton import java.io.{ ByteArrayInputStream, ByteArrayOutputStream, File, InputStream, OutputStream } import java.net.{ URI, URL } -trait URIFormat { self: StringFormat => +trait URIFormat { self: BasicJsonProtocol => implicit def URIFormat: JsonFormat[URI] = wrap(_.toString, new URI(_: String)) } -trait URLFormat { self: StringFormat => +trait URLFormat { self: BasicJsonProtocol => implicit def URLFormat: JsonFormat[URL] = wrap(_.toString, new URL(_: String)) } -trait FileFormat { self: StringFormat => +trait FileFormat { self: BasicJsonProtocol => implicit def FileFormat: JsonFormat[File] = wrap(_.toString, new File(_: String)) } +trait SetFormat { self: BasicJsonProtocol => + implicit def SetFormat[T: JsonFormat]: JsonFormat[Set[T]] = wrap(_.toSeq, (_: Seq[T]).toSet) +} + trait HListFormat { implicit def HConsFormat[H: JsonFormat, T <: HList: JsonFormat]: JsonFormat[H :+: T] = new JsonFormat[H :+: T] { @@ -51,7 +54,7 @@ trait HListFormat { } -trait StreamFormat { self: ArrayFormat with ByteFormat => +trait StreamFormat { self: BasicJsonProtocol => def streamFormat[T](write: (T, OutputStream) => Unit, read: InputStream => T): JsonFormat[T] = { lazy val byteArrayFormat = implicitly[JsonFormat[Array[Byte]]] val toBytes = (t: T) => { val bos = new ByteArrayOutputStream(); write(t, bos); bos.toByteArray } diff --git a/internal/util-cache/src/main/scala/sbt/internal/util/BasicCacheImplicits.scala b/internal/util-cache/src/main/scala/sbt/internal/util/BasicCacheImplicits.scala index 7829e8e22..1d1ebe16d 100644 --- a/internal/util-cache/src/main/scala/sbt/internal/util/BasicCacheImplicits.scala +++ b/internal/util-cache/src/main/scala/sbt/internal/util/BasicCacheImplicits.scala @@ -1,13 +1,10 @@ package sbt.internal.util -import sbt.datatype.{ ArrayFormat, BooleanFormat, ByteFormat, IntFormat } - import java.net.{ URI, URL } -import sjsonnew.JsonFormat -import sjsonnew.BasicJsonProtocol.asSingleton +import sjsonnew.{ BasicJsonProtocol, JsonFormat } -trait BasicCacheImplicits { self: ArrayFormat with BooleanFormat with ByteFormat with IntFormat => +trait BasicCacheImplicits { self: BasicJsonProtocol => implicit def basicCache[I: JsonFormat: Equiv, O: JsonFormat]: Cache[I, O] = new BasicCache[I, O]() diff --git a/internal/util-cache/src/main/scala/sbt/internal/util/CacheImplicits.scala b/internal/util-cache/src/main/scala/sbt/internal/util/CacheImplicits.scala index 9e45b90c6..0ebdf134b 100644 --- a/internal/util-cache/src/main/scala/sbt/internal/util/CacheImplicits.scala +++ b/internal/util-cache/src/main/scala/sbt/internal/util/CacheImplicits.scala @@ -1,19 +1,11 @@ package sbt.internal.util -import sbt.datatype.{ ArrayFormat, BooleanFormat, ByteFormat, IntFormat, LongFormat, StringFormat } -import sjsonnew.{ CollectionFormats, TupleFormats } +import sjsonnew.BasicJsonProtocol object CacheImplicits extends BasicCacheImplicits - with ArrayFormat - with BooleanFormat - with ByteFormat + with BasicJsonProtocol with FileFormat - with IntFormat with HListFormat - with LongFormat - with StringFormat with URIFormat with URLFormat with StreamFormat - with TupleFormats - with CollectionFormats \ No newline at end of file diff --git a/internal/util-cache/src/main/scala/sbt/internal/util/StampedFormat.scala b/internal/util-cache/src/main/scala/sbt/internal/util/StampedFormat.scala index 1d3a6d9fc..1e11214bd 100644 --- a/internal/util-cache/src/main/scala/sbt/internal/util/StampedFormat.scala +++ b/internal/util-cache/src/main/scala/sbt/internal/util/StampedFormat.scala @@ -2,11 +2,9 @@ package sbt.internal.util import scala.reflect.Manifest -import sbt.datatype.IntFormat +import sjsonnew.{ BasicJsonProtocol, Builder, deserializationError, JsonFormat, Unbuilder } -import sjsonnew.{ Builder, deserializationError, JsonFormat, Unbuilder } - -object StampedFormat extends IntFormat { +object StampedFormat extends BasicJsonProtocol { def apply[T](format: JsonFormat[T])(implicit mf: Manifest[JsonFormat[T]]): JsonFormat[T] = { withStamp(stamp(format))(format) diff --git a/internal/util-cache/src/test/scala/CacheSpec.scala b/internal/util-cache/src/test/scala/CacheSpec.scala index 8e2ebd12a..7b9924b6e 100644 --- a/internal/util-cache/src/test/scala/CacheSpec.scala +++ b/internal/util-cache/src/test/scala/CacheSpec.scala @@ -5,7 +5,7 @@ import sbt.io.syntax._ import CacheImplicits._ -import sjsonnew.{ Builder, deserializationError, IsoString, JsonFormat, Unbuilder } +import sjsonnew.IsoString import sjsonnew.support.scalajson.unsafe.{ CompactPrinter, Converter, FixedParser } import scala.json.ast.unsafe.JValue diff --git a/internal/util-tracking/src/main/scala/sbt/internal/util/Tracked.scala b/internal/util-tracking/src/main/scala/sbt/internal/util/Tracked.scala index 5aaf42e10..47f0b0f00 100644 --- a/internal/util-tracking/src/main/scala/sbt/internal/util/Tracked.scala +++ b/internal/util-tracking/src/main/scala/sbt/internal/util/Tracked.scala @@ -13,7 +13,7 @@ import sjsonnew.JsonFormat object Tracked { - import CacheImplicits.LongFormat + import CacheImplicits.LongJsonFormat /** * Creates a tracker that provides the last time it was evaluated. diff --git a/internal/util-tracking/src/test/scala/sbt/internal/util/TrackedSpec.scala b/internal/util-tracking/src/test/scala/sbt/internal/util/TrackedSpec.scala index b23c191dc..3c38a2c4a 100644 --- a/internal/util-tracking/src/test/scala/sbt/internal/util/TrackedSpec.scala +++ b/internal/util-tracking/src/test/scala/sbt/internal/util/TrackedSpec.scala @@ -5,7 +5,7 @@ import sbt.io.syntax._ import CacheImplicits._ -import sjsonnew.{ Builder, deserializationError, IsoString, JsonFormat, Unbuilder } +import sjsonnew.IsoString import sjsonnew.support.scalajson.unsafe.{ CompactPrinter, Converter, FixedParser } import scala.json.ast.unsafe.JValue diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 3db532055..4777365c4 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -7,7 +7,6 @@ object Dependencies { lazy val sbtIO = "org.scala-sbt" %% "io" % "1.0.0-M6" lazy val jline = "jline" % "jline" % "2.13" - lazy val sbtSerialization = "org.scala-sbt" %% "serialization" % "0.1.2" lazy val scalaCompiler = Def.setting { "org.scala-lang" % "scala-compiler" % scalaVersion.value } lazy val scalaReflect = Def.setting { "org.scala-lang" % "scala-reflect" % scalaVersion.value } @@ -27,6 +26,7 @@ object Dependencies { lazy val parserCombinator211 = "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4" - lazy val datatypeCodecs = "org.scala-sbt" %% "datatype-codecs" % "1.0.0-SNAPSHOT" - lazy val sjsonnewScalaJson = "com.eed3si9n" %% "sjson-new-scalajson" % "0.4.0" + lazy val sjsonnewVersion = "0.4.0" + lazy val sjsonnew = "com.eed3si9n" %% "sjson-new-core" % sjsonnewVersion + lazy val sjsonnewScalaJson = "com.eed3si9n" %% "sjson-new-scalajson" % sjsonnewVersion }