Skip to content

Commit 2cd88ee

Browse files
committed
Migrate from deprecated scala.util.parsing.json in scala-parser-combinators (see scala/scala-parser-combinators#99) to jackson-module-scala
1 parent b825adb commit 2cd88ee

File tree

3 files changed

+44
-19
lines changed

3 files changed

+44
-19
lines changed

pom.xml

+15-9
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@
5353
<flink-shaded-jackson.version>2.7.9-5.0</flink-shaded-jackson.version>
5454
<scopt.version>3.7.1</scopt.version>
5555
<scalaj-http.version>2.4.1</scalaj-http.version>
56-
<scala-parser-combinators.version>1.1.0</scala-parser-combinators.version>
5756
<scalatest.version>3.0.5</scalatest.version>
5857
<scalamock.version>4.1.0</scalamock.version>
5958
<scalactic.version>3.0.5</scalactic.version>
@@ -86,8 +85,10 @@
8685
<paranamer.version>2.8</paranamer.version>
8786
<codehaus.jackson.version>1.9.13</codehaus.jackson.version>
8887
<fasterxml.jackson.version>2.6.7</fasterxml.jackson.version>
88+
<fasterxml.jackson-module-scala.version>2.6.7.1</fasterxml.jackson-module-scala.version>
8989
<fasterxml.jackson-databind.version>2.6.7.1</fasterxml.jackson-databind.version>
9090
<scala-xml.version>1.0.5</scala-xml.version>
91+
<scala-parser-combinators.version>1.1.0</scala-parser-combinators.version>
9192
<commons-compress.version>1.8.1</commons-compress.version>
9293
<commons-io.version>2.6</commons-io.version>
9394
<!--json4s version is dictated by Spark-->
@@ -271,9 +272,14 @@
271272
<version>${scalaj-http.version}</version>
272273
</dependency>
273274
<dependency>
274-
<groupId>org.scala-lang.modules</groupId>
275-
<artifactId>scala-parser-combinators_${compiler.scala.compat.version}</artifactId>
276-
<version>${scala-parser-combinators.version}</version>
275+
<groupId>com.fasterxml.jackson.module</groupId>
276+
<artifactId>jackson-module-scala_${compiler.scala.compat.version}</artifactId>
277+
<version>${fasterxml.jackson-module-scala.version}</version>
278+
</dependency>
279+
<dependency>
280+
<groupId>com.fasterxml.jackson.core</groupId>
281+
<artifactId>jackson-databind</artifactId>
282+
<version>${fasterxml.jackson-databind.version}</version>
277283
</dependency>
278284
<dependency>
279285
<groupId>org.slf4j</groupId>
@@ -483,11 +489,6 @@
483489
<artifactId>jackson-core</artifactId>
484490
<version>${fasterxml.jackson.version}</version>
485491
</dependency>
486-
<dependency>
487-
<groupId>com.fasterxml.jackson.core</groupId>
488-
<artifactId>jackson-databind</artifactId>
489-
<version>${fasterxml.jackson-databind.version}</version>
490-
</dependency>
491492
<dependency>
492493
<groupId>com.fasterxml.jackson.core</groupId>
493494
<artifactId>jackson-annotations</artifactId>
@@ -503,6 +504,11 @@
503504
<artifactId>scala-xml_${compiler.scala.compat.version}</artifactId>
504505
<version>${scala-xml.version}</version>
505506
</dependency>
507+
<dependency>
508+
<groupId>org.scala-lang.modules</groupId>
509+
<artifactId>scala-parser-combinators_${compiler.scala.compat.version}</artifactId>
510+
<version>${scala-parser-combinators.version}</version>
511+
</dependency>
506512
<dependency>
507513
<groupId>org.lz4</groupId>
508514
<artifactId>lz4-java</artifactId>

shared-resources/pom.xml

+7-2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@
2323
<artifactId>spark-catalyst_${compiler.scala.compat.version}</artifactId>
2424
<scope>provided</scope>
2525
</dependency>
26+
<dependency>
27+
<groupId>com.fasterxml.jackson.core</groupId>
28+
<artifactId>jackson-databind</artifactId>
29+
<scope>provided</scope>
30+
</dependency>
2631
<dependency>
2732
<groupId>org.scala-lang</groupId>
2833
<artifactId>scala-reflect</artifactId>
@@ -105,8 +110,8 @@
105110
<scope>test</scope>
106111
</dependency>
107112
<dependency>
108-
<groupId>org.scala-lang.modules</groupId>
109-
<artifactId>scala-parser-combinators_${compiler.scala.compat.version}</artifactId>
113+
<groupId>com.fasterxml.jackson.module</groupId>
114+
<artifactId>jackson-module-scala_${compiler.scala.compat.version}</artifactId>
110115
<scope>test</scope>
111116
</dependency>
112117
</dependencies>

shared-resources/src/test/scala/com/github/tashoyan/telecom/spark/DataFramesTest.scala

+22-8
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
package com.github.tashoyan.telecom.spark
22

3+
import java.io.StringWriter
34
import java.sql.Timestamp
45
import java.time.{ZoneId, ZonedDateTime}
56

7+
import com.fasterxml.jackson.databind.ObjectMapper
8+
import com.fasterxml.jackson.module.scala.DefaultScalaModule
69
import com.github.tashoyan.telecom.spark.DataFrames.RichDataFrame
710
import com.github.tashoyan.telecom.test.SparkTestHarness
811
import org.apache.spark.sql.types._
912
import org.scalatest.FunSuite
1013

11-
import scala.util.parsing.json.{JSON, JSONObject}
12-
1314
class DataFramesTest extends FunSuite with SparkTestHarness {
1415

1516
test("withJsonColumn") {
@@ -31,9 +32,8 @@ class DataFramesTest extends FunSuite with SparkTestHarness {
3132
val jsonStr = resultDf.select("json_column")
3233
.as[String]
3334
.head()
34-
val parsedResult = JSON.parseFull(jsonStr)
35-
.get
36-
.asInstanceOf[Map[String, Any]]
35+
36+
val parsedResult = jsonToMap(jsonStr)
3737
assert(parsedResult("int_column") === 1)
3838
assert(parsedResult("long_column") === 10L)
3939
assert(parsedResult("double_column") === 2.5)
@@ -56,15 +56,14 @@ class DataFramesTest extends FunSuite with SparkTestHarness {
5656
StructField("string_column", StringType),
5757
StructField("timestamp_column", TimestampType)
5858
))
59-
val sampleStr = Map[String, Any](
59+
val sample = Map[String, Any](
6060
"int_column" -> 1,
6161
"long_column" -> 10L,
6262
"double_column" -> 2.5,
6363
"string_column" -> "one",
6464
"timestamp_column" -> "1970-01-01T00:00:01.001Z"
6565
)
66-
val sampleJson = JSONObject(sampleStr)
67-
.toString()
66+
val sampleJson = mapToJson(sample)
6867

6968
val sampleDf = Seq(
7069
("something", sampleJson)
@@ -85,4 +84,19 @@ class DataFramesTest extends FunSuite with SparkTestHarness {
8584
assert(result.getAs[Timestamp]("timestamp_column") === new Timestamp(1001L))
8685
}
8786

87+
private val mapper: ObjectMapper = {
88+
new ObjectMapper()
89+
.registerModule(DefaultScalaModule)
90+
}
91+
92+
private def jsonToMap(json: String): Map[String, Any] = {
93+
mapper.readValue(json, classOf[Map[String, Any]])
94+
}
95+
96+
private def mapToJson(map: Map[String, Any]): String = {
97+
val out = new StringWriter()
98+
mapper.writeValue(out, map)
99+
out.toString
100+
}
101+
88102
}

0 commit comments

Comments
 (0)