Skip to content

Commit 1d6a21a

Browse files
committed
Restructure dependencies
1 parent 654d36f commit 1d6a21a

File tree

6 files changed

+157
-74
lines changed

6 files changed

+157
-74
lines changed

.scalafix.conf

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
rules = [
2+
DisableSyntax,
3+
LeakingImplicitClassVal,
4+
NoAutoTupling,
5+
NoValInForComprehension,
6+
ProcedureSyntax,
7+
RedundantSyntax,
8+
RemoveUnused,
9+
10+
CheckIsEmpty,
11+
NonCaseException,
12+
SingleConditionMatch
13+
UnifiedArrow,
14+
UnnecessarySemicolon,
15+
]

.scalafmt.conf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
version = 3.9.2
2+
runner.dialect = scala213

app/controllers/JsonoidController.scala

Lines changed: 69 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package controllers
33
import scala.collection.mutable.Map
44

55
import javax.inject._
6-
import play.api._
76
import play.api.libs.json._
87
import play.api.mvc._
98

@@ -14,35 +13,41 @@ import io.github.dataunitylab.jsonoid.discovery.schemas.{
1413
ZeroSchema
1514
}
1615

17-
import play.api.libs.{ json => pjson }
18-
import org.{ json4s => j4s }
16+
import play.api.libs.{json => pjson}
17+
import org.{json4s => j4s}
1918

2019
object Conversions {
21-
def toJson4s(json: play.api.libs.json.JsValue):org.json4s.JValue = json match {
22-
case pjson.JsString(str) => j4s.JString(str)
23-
case pjson.JsNull => j4s.JNull
24-
case pjson.JsBoolean(value) => j4s.JBool(value)
25-
case pjson.JsNumber(value) => j4s.JDecimal(value)
26-
case pjson.JsArray(items) => j4s.JArray(items.map(toJson4s(_)).toList)
27-
case pjson.JsObject(items) => j4s.JObject(items.map { case (k, v) => k -> toJson4s(v)}.toList)
28-
}
20+
def toJson4s(json: play.api.libs.json.JsValue): org.json4s.JValue =
21+
json match {
22+
case pjson.JsString(str) => j4s.JString(str)
23+
case pjson.JsNull => j4s.JNull
24+
case pjson.JsBoolean(value) => j4s.JBool(value)
25+
case pjson.JsTrue => j4s.JBool(true)
26+
case pjson.JsFalse => j4s.JBool(false)
27+
case pjson.JsNumber(value) => j4s.JDecimal(value)
28+
case pjson.JsArray(items) => j4s.JArray(items.map(toJson4s(_)).toList)
29+
case pjson.JsObject(items) =>
30+
j4s.JObject(items.map { case (k, v) => k -> toJson4s(v) }.toList)
31+
}
2932

30-
def toPlayJson(json: org.json4s.JValue): play.api.libs.json.JsValue = json match {
31-
case j4s.JString(str) => pjson.JsString(str)
32-
case j4s.JNothing => pjson.JsNull
33-
case j4s.JNull => pjson.JsNull
34-
case j4s.JDecimal(value) => pjson.JsNumber(value)
35-
case j4s.JDouble(value) => pjson.JsNumber(value)
36-
case j4s.JInt(value) => pjson.JsNumber(BigDecimal(value))
37-
case j4s.JLong(value) => pjson.JsNumber(BigDecimal(value))
38-
case j4s.JBool(value) => pjson.JsBoolean(value)
39-
case j4s.JSet(fields) => pjson.JsArray(fields.toList.map(toPlayJson(_)))
40-
case j4s.JArray(fields) => pjson.JsArray(fields.map(toPlayJson(_)))
41-
case j4s.JObject(fields) => pjson.JsObject(fields.map { case (k, v) => k -> toPlayJson(v)}.toMap)
42-
}
33+
def toPlayJson(json: org.json4s.JValue): play.api.libs.json.JsValue =
34+
json match {
35+
case j4s.JString(str) => pjson.JsString(str)
36+
case j4s.JNothing => pjson.JsNull
37+
case j4s.JNull => pjson.JsNull
38+
case j4s.JDecimal(value) => pjson.JsNumber(value)
39+
case j4s.JDouble(value) => pjson.JsNumber(value)
40+
case j4s.JInt(value) => pjson.JsNumber(BigDecimal(value))
41+
case j4s.JLong(value) => pjson.JsNumber(BigDecimal(value))
42+
case j4s.JBool(value) => pjson.JsBoolean(value)
43+
case j4s.JSet(fields) => pjson.JsArray(fields.toList.map(toPlayJson(_)))
44+
case j4s.JArray(fields) => pjson.JsArray(fields.map(toPlayJson(_)))
45+
case j4s.JObject(fields) =>
46+
pjson.JsObject(fields.map { case (k, v) => k -> toPlayJson(v) }.toMap)
47+
}
4348

44-
def toPlayJson(json: org.json4s.JObject): play.api.libs.json.JsObject =
45-
pjson.JsObject(json.obj.map { case (k, v) => k -> toPlayJson(v)}.toMap)
49+
def toPlayJson(json: org.json4s.JObject): play.api.libs.json.JsObject =
50+
pjson.JsObject(json.obj.map { case (k, v) => k -> toPlayJson(v) }.toMap)
4651
}
4752

4853
final case class SchemaParams(name: String, propSet: Option[String] = None)
@@ -51,12 +56,12 @@ object SchemaParams {
5156
}
5257
import SchemaParams._
5358

54-
/**
55-
* This controller creates an `Action` to handle HTTP requests to the
56-
* application's home page.
57-
*/
59+
/** This controller creates an `Action` to handle HTTP requests to the
60+
* application's home page.
61+
*/
5862
@Singleton
59-
class JsonoidController @Inject()(val cc: ControllerComponents) extends AbstractController(cc) {
63+
class JsonoidController @Inject() (val cc: ControllerComponents)
64+
extends AbstractController(cc) {
6065
private val schemas = Map.empty[String, JsonSchema[_]]
6166
private val jsonoidParams = Map.empty[String, JsonoidParams]
6267

@@ -68,35 +73,37 @@ class JsonoidController @Inject()(val cc: ControllerComponents) extends Abstract
6873
val schemaParamsResult = request.body.validate[SchemaParams]
6974
schemaParamsResult.fold(
7075
errors => {
71-
BadRequest(Json.obj("status" -> "error", "error" -> JsError.toJson(errors)))
76+
BadRequest(
77+
Json.obj("status" -> "error", "error" -> JsError.toJson(errors))
78+
)
7279
},
7380
schemaParams => {
7481
if (schemas.contains(schemaParams.name)) {
7582
Conflict(Json.obj("error" -> "Schema already exists"))
7683
} else {
77-
val maybePropSet = schemaParams.propSet match {
78-
case Some("All") =>
79-
Some(PropertySets.AllProperties)
80-
case Some("Simple") =>
81-
Some(PropertySets.SimpleProperties)
82-
case Some("Min") =>
83-
Some(PropertySets.MinProperties)
84-
case Some(_) =>
85-
None
86-
case None =>
87-
Some(PropertySets.AllProperties)
88-
}
89-
maybePropSet match {
90-
case Some(propSet) =>
91-
schemas.put(schemaParams.name, ZeroSchema())
92-
jsonoidParams.put(
93-
schemaParams.name,
94-
JsonoidParams().withPropertySet(propSet)
95-
)
96-
Created(Json.obj("status" -> "ok"))
97-
case None =>
98-
BadRequest(Json.obj("error" -> "Invalid property set"))
99-
}
84+
val maybePropSet = schemaParams.propSet match {
85+
case Some("All") =>
86+
Some(PropertySets.AllProperties)
87+
case Some("Simple") =>
88+
Some(PropertySets.SimpleProperties)
89+
case Some("Min") =>
90+
Some(PropertySets.MinProperties)
91+
case Some(_) =>
92+
None
93+
case None =>
94+
Some(PropertySets.AllProperties)
95+
}
96+
maybePropSet match {
97+
case Some(propSet) =>
98+
schemas.put(schemaParams.name, ZeroSchema())
99+
jsonoidParams.put(
100+
schemaParams.name,
101+
JsonoidParams().withPropertySet(propSet)
102+
)
103+
Created(Json.obj("status" -> "ok"))
104+
case None =>
105+
BadRequest(Json.obj("error" -> "Invalid property set"))
106+
}
100107
}
101108
}
102109
)
@@ -113,8 +120,9 @@ class JsonoidController @Inject()(val cc: ControllerComponents) extends Abstract
113120

114121
def getSchema(name: String) = Action { implicit request =>
115122
schemas.get(name) match {
116-
case Some(schema) => Ok(Json.obj("schema" -> Conversions.toPlayJson(schema.toJson())))
117-
case None => NotFound(Json.obj("error" -> "Schema not found"))
123+
case Some(schema) =>
124+
Ok(Json.obj("schema" -> Conversions.toPlayJson(schema.toJson())))
125+
case None => NotFound(Json.obj("error" -> "Schema not found"))
118126
}
119127
}
120128

@@ -123,15 +131,17 @@ class JsonoidController @Inject()(val cc: ControllerComponents) extends Abstract
123131
case Some(schema) =>
124132
assert(jsonoidParams.contains(name))
125133
val p = jsonoidParams.get(name).get
126-
val newSchema = DiscoverSchema.discoverFromValue(Conversions.toJson4s(request.body))(p)
134+
val newSchema = DiscoverSchema.discoverFromValue(
135+
Conversions.toJson4s(request.body)
136+
)(p)
127137
newSchema match {
128138
case Some(newSchema) =>
129139
schemas.put(name, schema.merge(newSchema)(p))
130140
Ok(Json.obj("status" -> "ok"))
131141
case None =>
132142
BadRequest(Json.obj("error" -> "Invalid schema"))
133143
}
134-
case None => NotFound(Json.obj("error" -> "Schema not found"))
144+
case None => NotFound(Json.obj("error" -> "Schema not found"))
135145
}
136146
}
137147
}

build.sbt

Lines changed: 53 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,59 @@
1-
name := """jsonoid-server"""
2-
organization := "io.github.dataunitylab.jsonoid"
1+
import Dependencies._
32

4-
version := "1.0-SNAPSHOT"
3+
ThisBuild / scalaVersion := "2.13.16"
4+
ThisBuild / versionScheme := Some("early-semver")
5+
ThisBuild / organization := "io.github.dataunitylab"
6+
ThisBuild / organizationName := "Rochester Institute of Technology"
57

6-
lazy val root = (project in file(".")).enablePlugins(PlayScala)
8+
inThisBuild(
9+
List(
10+
organization := "io.github.dataunitylab",
11+
homepage := Some(url("https://github.com/dataunitylab/jsonoid-server")),
12+
licenses := List("MIT" -> url("http://opensource.org/licenses/MIT")),
13+
developers := List(
14+
Developer(
15+
"michaelmior",
16+
"Michael Mior",
17+
18+
url("https://michael.mior.ca")
19+
)
20+
),
21+
semanticdbEnabled := true,
22+
semanticdbVersion := scalafixSemanticdb.revision
23+
)
24+
)
725

8-
scalaVersion := "2.13.16"
26+
scalafixOnCompile := true
27+
ThisBuild / scalafixDependencies += "net.pixiv" %% "scalafix-pixiv-rule" % "4.5.3"
928

10-
libraryDependencies += guice
11-
libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "7.0.1" % Test
12-
libraryDependencies += "io.github.dataunitylab" %% "jsonoid-discovery" % "0.30.1"
13-
libraryDependencies += "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.17.1"
14-
libraryDependencies += "com.fasterxml.jackson.core" % "jackson-databind" % "2.17.1"
29+
Global / onChangedBuildSource := ReloadOnSourceChanges
1530

16-
// Adds additional packages into Twirl
17-
//TwirlKeys.templateImports += "io.github.dataunitylab.jsonoid.controllers._"
31+
val nonConsoleCompilerOptions = Seq(
32+
"-feature",
33+
"-Xfatal-warnings",
34+
"-Ywarn-unused:imports",
35+
"-Wconf:cat=unused-imports&site=<empty>:s", // Silence import warnings on Play `routes` files
36+
"-Wconf:cat=unused-imports&site=router:s", // Silence import warnings on Play `routes` files
37+
"-Wconf:cat=unused-imports&site=v1:s", // Silence import warnings on Play `v1.routes` files
38+
"-Wconf:cat=unused-imports&site=v2:s", // Silence import warnings on Play `v2.routes` files
39+
"-deprecation",
40+
"-release:8"
41+
)
1842

19-
// Adds additional packages into conf/routes
20-
// play.sbt.routes.RoutesKeys.routesImport += "io.github.dataunitylab.jsonoid.binders._"
43+
lazy val root = (project in file("."))
44+
.settings(
45+
name := "jsonoid-server",
46+
libraryDependencies ++= Seq(
47+
guice,
48+
jacksonModule,
49+
jacksonDatabind,
50+
jsonoid,
51+
testPlusPlay % Test,
52+
),
53+
javacOptions ++= Seq("-source", "11", "-target", "11"),
54+
scalacOptions ++= nonConsoleCompilerOptions,
55+
buildInfoKeys := Seq[BuildInfoKey](version),
56+
buildInfoPackage := "io.github.dataunitylab.jsonoid.server"
57+
)
58+
59+
enablePlugins(PlayScala)

project/Dependencies.scala

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import sbt._
2+
3+
object Dependencies {
4+
// Runtime
5+
lazy val jacksonModule = "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.17.1"
6+
lazy val jacksonDatabind = "com.fasterxml.jackson.core" % "jackson-databind" % "2.17.1"
7+
lazy val jsonoid = "io.github.dataunitylab" %% "jsonoid-discovery" % "0.30.1"
8+
9+
// Test
10+
lazy val testPlusPlay = "org.scalatestplus.play" %% "scalatestplus-play" % "7.0.1"
11+
}

project/plugins.sbt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,8 @@
1+
addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.14.2")
2+
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.13.1")
3+
addSbtPlugin("com.github.sbt" % "sbt-dynver" % "5.1.0")
4+
addSbtPlugin("com.github.sbt" % "sbt-git" % "2.1.0")
15
addSbtPlugin("org.playframework" % "sbt-plugin" % "3.0.6")
2-
addSbtPlugin("org.foundweekends.giter8" % "sbt-giter8-scaffold" % "0.17.0")
6+
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.4")
7+
addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.3.1")
8+
addSbtPlugin("org.wartremover" % "sbt-wartremover" % "3.3.0")

0 commit comments

Comments
 (0)