Skip to content

Commit

Permalink
Merge pull request #432 from bursauxa/feature/remove-joda
Browse files Browse the repository at this point in the history
Removed Joda functions and dependency from base play-json library.
  • Loading branch information
mergify[bot] authored May 26, 2020
2 parents 73357b8 + 601d25e commit 6de5243
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 113 deletions.
3 changes: 1 addition & 2 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -216,8 +216,7 @@ lazy val `play-jsonJS` = `play-json`.js

lazy val `play-jsonJVM` = `play-json`.jvm.settings(
libraryDependencies ++=
joda ++ // TODO: remove joda after 2.6.0
jacksons ++ specs2 :+ (
jacksons ++ specs2 :+ (
"ch.qos.logback" % "logback-classic" % "1.2.3" % Test
),
unmanagedSourceDirectories in Test ++= (baseDirectory.value.getParentFile.getParentFile / "docs/manual/working/scalaGuide" ** "code").get
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# deprecated and synthetic methods and classes
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.Writes.DefaultJodaLocalTimeWrites")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.Writes.DefaultJodaLocalDateWrites")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.Writes.DefaultJodaDateWrites")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.Writes.jodaLocalTimeWrites")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.Writes.jodaLocalDateWrites")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.Writes.jodaDateWrites")

ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.Reads.jodaDateReads")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.Reads.jodaLocalDateReads")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.Reads.jodaLocalTimeReads")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.Reads.jodaDateReads$default$2")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.Reads.jodaLocalDateReads$default$2")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.Reads.jodaLocalTimeReads$default$2")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.Reads.DefaultJodaDateReads")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.Reads.DefaultJodaLocalDateReads")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.Reads.DefaultJodaLocalTimeReads")

ProblemFilters.exclude[MissingClassProblem]("play.api.libs.json.EnvWrites$DefaultJodaDateWrites$")
ProblemFilters.exclude[MissingClassProblem]("play.api.libs.json.EnvWrites$DefaultJodaLocalTimeWrites$")
ProblemFilters.exclude[MissingClassProblem]("play.api.libs.json.EnvWrites$DefaultJodaLocalDateWrites$")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.EnvWrites.DefaultJodaDateWrites")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.EnvWrites.DefaultJodaLocalDateWrites")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.EnvWrites.DefaultJodaLocalTimeWrites")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.EnvWrites.jodaDateWrites")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.EnvWrites.jodaLocalDateWrites")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.EnvWrites.jodaLocalTimeWrites")

ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.EnvReads.jodaDateReads")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.EnvReads.jodaDateReads$default$2")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.EnvReads.DefaultJodaDateReads")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.EnvReads.jodaLocalDateReads")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.EnvReads.jodaLocalDateReads$default$2")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.EnvReads.DefaultJodaLocalDateReads")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.EnvReads.jodaLocalTimeReads")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.EnvReads.jodaLocalTimeReads$default$2")
ProblemFilters.exclude[DirectMissingMethodProblem]("play.api.libs.json.EnvReads.DefaultJodaLocalTimeReads")
71 changes: 0 additions & 71 deletions play-json/jvm/src/main/scala/play/api/libs/json/EnvReads.scala
Original file line number Diff line number Diff line change
Expand Up @@ -712,77 +712,6 @@ trait EnvReads {

case js => javaPeriodDaysReads.reads(js)
}

// TODO: remove joda after 2.6.0
import org.joda.time.format.DateTimeFormat
import org.joda.time.format.ISODateTimeFormat
import org.joda.time.DateTime
import org.joda.time.LocalDate
import org.joda.time.LocalTime

@deprecated("Include play-json-joda as a dependency and use JodaReads.jodaDateReads", "2.6.0")
def jodaDateReads(pattern: String, corrector: String => String = identity): Reads[DateTime] = new Reads[DateTime] {
val df = DateTimeFormat.forPattern(pattern)

def reads(json: JsValue): JsResult[DateTime] = json match {
case n: JsNumber => n.validate[Long].map(l => new DateTime(l))
case JsString(s) =>
parseDate(corrector(s)) match {
case Some(d) => JsSuccess(d)
case _ => JsError(Seq(JsPath() -> Seq(JsonValidationError("error.expected.jodadate.format", pattern))))
}
case _ => JsError(Seq(JsPath() -> Seq(JsonValidationError("error.expected.date"))))
}

private def parseDate(input: String): Option[DateTime] =
scala.util.control.Exception.allCatch[DateTime].opt(DateTime.parse(input, df))
}

@deprecated("Include play-json-joda as a dependency and use JodaReads.DefaultJodaDateTimeReads", "2.6.0")
val DefaultJodaDateReads = jodaDateReads("yyyy-MM-dd")

@deprecated("Include play-json-joda as a dependency and use JodaReads.jodaLocalDateReads", "2.6.0")
def jodaLocalDateReads(pattern: String, corrector: String => String = identity): Reads[org.joda.time.LocalDate] =
new Reads[org.joda.time.LocalDate] {
val df = if (pattern == "") ISODateTimeFormat.localDateParser else DateTimeFormat.forPattern(pattern)

def reads(json: JsValue): JsResult[LocalDate] = json match {
case JsString(s) =>
parseDate(corrector(s)) match {
case Some(d) => JsSuccess(d)
case _ => JsError(Seq(JsPath() -> Seq(JsonValidationError("error.expected.jodadate.format", pattern))))
}
case _ => JsError(Seq(JsPath() -> Seq(JsonValidationError("error.expected.date"))))
}

private def parseDate(input: String): Option[LocalDate] =
scala.util.control.Exception.allCatch[LocalDate].opt(LocalDate.parse(input, df))
}

@deprecated("Include play-json-joda as a dependency and use JodaReads.DefaultJodaLocalDateReads", "2.6.0")
val DefaultJodaLocalDateReads = jodaLocalDateReads("")

@deprecated("Include play-json-joda as a dependency and use JodaReads.jodaLocalTimeReads", "2.6.0")
def jodaLocalTimeReads(pattern: String, corrector: String => String = identity): Reads[LocalTime] =
new Reads[LocalTime] {
val df = if (pattern == "") ISODateTimeFormat.localTimeParser else DateTimeFormat.forPattern(pattern)

def reads(json: JsValue): JsResult[LocalTime] = json match {
case n: JsNumber => n.validate[Long].map(l => new LocalTime(l))
case JsString(s) =>
parseTime(corrector(s)) match {
case Some(d) => JsSuccess(d)
case None => JsError(Seq(JsPath() -> Seq(JsonValidationError("error.expected.jodatime.format", pattern))))
}
case _ => JsError(Seq(JsPath() -> Seq(JsonValidationError("error.expected.time"))))
}

private def parseTime(input: String): Option[LocalTime] =
scala.util.control.Exception.allCatch[LocalTime].opt(LocalTime.parse(input, df))
}

@deprecated("Include play-json-joda as a dependency and use JodaReads.DefaultJodaLocalTimeReads", "2.6.0")
val DefaultJodaLocalTimeReads = jodaLocalTimeReads("")
}

trait EnvKeyReads { _: KeyReads.type =>
Expand Down
40 changes: 0 additions & 40 deletions play-json/jvm/src/main/scala/play/api/libs/json/EnvWrites.scala
Original file line number Diff line number Diff line change
Expand Up @@ -351,46 +351,6 @@ trait EnvWrites {
Writes[Period] { d =>
JsString(d.toString)
}

// TODO: remove joda after 2.6.0
import org.joda.time.DateTime
import org.joda.time.LocalDate
import org.joda.time.LocalTime

@deprecated("Include play-json-joda as a dependency and use JodaWrites.jodaDateWrites", "2.6.0")
def jodaDateWrites(pattern: String): Writes[DateTime] = new Writes[DateTime] {
val df = org.joda.time.format.DateTimeFormat.forPattern(pattern)
def writes(d: DateTime): JsValue = JsString(d.toString(df))
}

@deprecated("Include play-json-joda as a dependency and use JodaWrites.JodaDateNumberWrites", "2.6.0")
object DefaultJodaDateWrites extends Writes[DateTime] {
def writes(d: DateTime): JsValue = JsNumber(d.getMillis)
}

@deprecated("Include play-json-joda as a dependency and use JodaWrites.jodaLocalDateWrites", "2.6.0")
def jodaLocalDateWrites(pattern: String): Writes[LocalDate] = {
val df = org.joda.time.format.DateTimeFormat.forPattern(pattern)
Writes[LocalDate] { d =>
JsString(d.toString(df))
}
}

@deprecated("Include play-json-joda as a dependency and use JodaWrites.DefaultJodaLocalDateWrites", "2.6.0")
object DefaultJodaLocalDateWrites extends Writes[LocalDate] {
def writes(d: LocalDate): JsValue = JsString(d.toString)
}

@deprecated("Include play-json-joda as a dependency and use JodaWrites.jodaLocalTimeWrites", "2.6.0")
def jodaLocalTimeWrites(pattern: String): Writes[LocalTime] =
Writes[LocalTime] { d =>
JsString(d.toString(pattern))
}

@deprecated("Include play-json-joda as a dependency and use JodaWrites.DefaultJodaLocalTimeWrites", "2.6.0")
object DefaultJodaLocalTimeWrites extends Writes[LocalTime] {
def writes(d: LocalTime): JsValue = JsString(d.toString)
}
}

trait EnvKeyWrites {
Expand Down

0 comments on commit 6de5243

Please sign in to comment.