Skip to content

Commit 4a234d3

Browse files
committed
avoid jersey-media-json-jackson b/c of potential version conflicts
1 parent a157a2f commit 4a234d3

File tree

3 files changed

+39
-16
lines changed

3 files changed

+39
-16
lines changed

core/pom.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -229,11 +229,6 @@
229229
<version>1.9</version>
230230
<scope>${hadoop.deps.scope}</scope>
231231
</dependency>
232-
<dependency>
233-
<groupId>org.glassfish.jersey.media</groupId>
234-
<artifactId>jersey-media-json-jackson</artifactId>
235-
<version>2.15</version>
236-
</dependency>
237232
<dependency>
238233
<groupId>org.apache.mesos</groupId>
239234
<artifactId>mesos</artifactId>

core/src/main/scala/org/apache/spark/status/api/v1/CustomObjectMapper.scala renamed to core/src/main/scala/org/apache/spark/status/api/v1/JacksonMessageWriter.scala

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,22 @@
1616
*/
1717
package org.apache.spark.status.api.v1
1818

19+
import java.io.OutputStream
20+
import java.lang.annotation.Annotation
21+
import java.lang.reflect.Type
1922
import java.text.SimpleDateFormat
20-
import java.util.{Calendar, SimpleTimeZone}
23+
import java.util.{SimpleTimeZone, Calendar}
2124
import javax.ws.rs.Produces
22-
import javax.ws.rs.core.MediaType
23-
import javax.ws.rs.ext.{ContextResolver, Provider}
25+
import javax.ws.rs.core.{MultivaluedMap, MediaType}
26+
import javax.ws.rs.ext.{Provider, MessageBodyWriter}
2427

2528
import com.fasterxml.jackson.annotation.JsonInclude
26-
import com.fasterxml.jackson.databind.{ObjectMapper, SerializationFeature}
29+
import com.fasterxml.jackson.databind.{SerializationFeature, ObjectMapper}
2730

2831
@Provider
2932
@Produces(Array(MediaType.APPLICATION_JSON))
30-
private[v1] class CustomObjectMapper extends ContextResolver[ObjectMapper]{
33+
class JacksonMessageWriter extends MessageBodyWriter[Object]{
34+
3135
val mapper = new ObjectMapper() {
3236
override def writeValueAsString(t: Any): String = {
3337
super.writeValueAsString(t)
@@ -36,14 +40,38 @@ private[v1] class CustomObjectMapper extends ContextResolver[ObjectMapper]{
3640
mapper.registerModule(com.fasterxml.jackson.module.scala.DefaultScalaModule)
3741
mapper.enable(SerializationFeature.INDENT_OUTPUT)
3842
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL)
39-
mapper.setDateFormat(CustomObjectMapper.makeISODateFormat)
43+
mapper.setDateFormat(JacksonMessageWriter.makeISODateFormat)
44+
45+
override def isWriteable(
46+
aClass: Class[_],
47+
`type`: Type,
48+
annotations: Array[Annotation],
49+
mediaType: MediaType): Boolean = {
50+
true
51+
}
52+
53+
override def writeTo(
54+
t: Object,
55+
aClass: Class[_],
56+
`type`: Type,
57+
annotations: Array[Annotation],
58+
mediaType: MediaType,
59+
multivaluedMap: MultivaluedMap[String, AnyRef],
60+
outputStream: OutputStream): Unit = {
61+
mapper.writeValue(outputStream, t)
62+
}
4063

41-
override def getContext(tpe: Class[_]): ObjectMapper = {
42-
mapper
64+
override def getSize(
65+
t: Object,
66+
aClass: Class[_],
67+
`type`: Type,
68+
annotations: Array[Annotation],
69+
mediaType: MediaType): Long = {
70+
-1L
4371
}
4472
}
4573

46-
private[spark] object CustomObjectMapper {
74+
private[spark] object JacksonMessageWriter {
4775
def makeISODateFormat: SimpleDateFormat = {
4876
val iso8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'GMT'")
4977
val cal = Calendar.getInstance(new SimpleTimeZone(0, "GMT"))

core/src/test/scala/org/apache/spark/ui/UISeleniumSuite.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import org.apache.spark._
3737
import org.apache.spark.api.java.StorageLevels
3838
import org.apache.spark.deploy.history.HistoryServerSuite
3939
import org.apache.spark.shuffle.FetchFailedException
40-
import org.apache.spark.status.api.v1.{StageStatus, CustomObjectMapper}
40+
import org.apache.spark.status.api.v1.{JacksonMessageWriter, StageStatus}
4141

4242
/**
4343
* Selenium tests for the Spark Web UI.
@@ -580,7 +580,7 @@ class UISeleniumSuite extends FunSuite with WebBrowser with Matchers with Before
580580
}
581581

582582
def parseDate(json: JValue): Long = {
583-
CustomObjectMapper.makeISODateFormat.parse(json.extract[String]).getTime
583+
JacksonMessageWriter.makeISODateFormat.parse(json.extract[String]).getTime
584584
}
585585

586586
def getJson(ui: SparkUI, path: String): JValue = {

0 commit comments

Comments
 (0)