Skip to content

Commit 4e58127

Browse files
authored
Fixing a scala compilation problem (elastic#1855) (elastic#1857)
Fixing a scala compilation problem that happened with certain scala compilers.
1 parent fbbe64e commit 4e58127

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

spark/core/src/main/scala/org/elasticsearch/spark/serialization/ScalaValueWriter.scala

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,13 @@ class ScalaValueWriter(writeUnknownTypes: Boolean = false) extends JdkValueWrite
6161
generator.writeBeginObject()
6262
for ((k, v) <- m) {
6363
if (shouldKeep(parentField, k.toString)) {
64-
if (v != None && v!= null && v != () || hasWriteNullValues) {
64+
val hasValue = Option(v) match {
65+
case Some(()) => false
66+
case Some(None) => false
67+
case Some(_) => true
68+
case None => true
69+
}
70+
if (hasValue || hasWriteNullValues) {
6571
generator.writeFieldName(k.toString)
6672
val result = doWrite(v, generator, k.toString)
6773
if (!result.isSuccesful) {

spark/core/src/test/scala/org/elasticsearch/spark/serialization/ScalaValueWriterTest.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -196,14 +196,14 @@ class ScalaValueWriterTest {
196196
@Test
197197
def testCaseClassWithInnerObjectAndNullSetting(): Unit = {
198198

199-
case class TestCaseClass(option1: Option[String], option2: Option[TestCaseClassInner])
199+
case class TestCaseClass(option1: Option[String], option2: Option[TestCaseClassInner], option3: Any)
200200
case class TestCaseClassInner(option1: Option[String], option2: Option[String])
201-
val caseClass = TestCaseClass(None, Some(TestCaseClassInner(option1 = Some("value1"), option2 = None)))
201+
val caseClass = TestCaseClass(None, Some(TestCaseClassInner(option1 = Some("value1"), option2 = None)), ())
202202

203203
val settings = new TestSettings()
204204
settings.setProperty(ConfigurationOptions.ES_SPARK_DATAFRAME_WRITE_NULL_VALUES, "true")
205205

206-
assertEquals("""{"option1":null,"option2":{"option1":"value1","option2":null}}""", serialize(caseClass, settings))
206+
assertEquals("""{"option1":null,"option2":{"option1":"value1","option2":null},"option3":null}""", serialize(caseClass, settings))
207207
}
208208

209209
@Test

0 commit comments

Comments
 (0)