Make generated adapters null-safe.

This is in alignment with the lookup for Java and Kotlin reflective adapters.
This commit is contained in:
Eric Cochran
2018-09-10 16:31:24 -07:00
parent d1c2cf9c6c
commit e7c745aac8
3 changed files with 20 additions and 5 deletions

View File

@@ -1075,6 +1075,13 @@ class GeneratedAdaptersTest {
.isEqualTo(HasNullableBoolean(null))
assertThat(adapter.toJson(HasNullableBoolean(null))).isEqualTo("""{"boolean":null}""")
}
@Test fun adaptersAreNullSafe() {
val moshi = Moshi.Builder().build()
val adapter = moshi.adapter(HasNonNullConstructorParameter::class.java)
assertThat(adapter.fromJson("null")).isNull()
assertThat(adapter.toJson(null)).isEqualTo("null")
}
}
// Has to be outside to avoid Types seeing an owning class

View File

@@ -860,10 +860,11 @@ class KotlinJsonAdapterTest {
val generatedAdapter = moshi.adapter(UsesGeneratedAdapter::class.java)
val reflectionAdapter = moshi.adapter(UsesReflectionAdapter::class.java)
assertThat(generatedAdapter.javaClass.name)
.contains("KotlinJsonAdapterTest_UsesGeneratedAdapterJsonAdapter")
assertThat(reflectionAdapter.javaClass.name)
.doesNotContain("KotlinJsonAdapterTest_UsesReflectionAdapterJsonAdapter")
assertThat(generatedAdapter.toString())
.isEqualTo("GeneratedJsonAdapter(KotlinJsonAdapterTest.UsesGeneratedAdapter).nullSafe()")
assertThat(reflectionAdapter.toString())
.isEqualTo("KotlinJsonAdapter(com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterTest" +
".UsesReflectionAdapter).nullSafe()")
}
@JsonClass(generateAdapter = true)
@@ -913,4 +914,11 @@ class KotlinJsonAdapterTest {
.isEqualTo(HasNullableBoolean(null))
assertThat(adapter.toJson(HasNullableBoolean(null))).isEqualTo("""{"boolean":null}""")
}
@Test fun adaptersAreNullSafe() {
val moshi = Moshi.Builder().build()
val adapter = moshi.adapter(HasNonNullConstructorParameter::class.java)
assertThat(adapter.fromJson("null")).isNull()
assertThat(adapter.toJson(null)).isEqualTo("null")
}
}