diff --git a/moshi/src/main/java/com/squareup/moshi/Moshi.java b/moshi/src/main/java/com/squareup/moshi/Moshi.java index 50cf20e..8d39c47 100644 --- a/moshi/src/main/java/com/squareup/moshi/Moshi.java +++ b/moshi/src/main/java/com/squareup/moshi/Moshi.java @@ -92,6 +92,9 @@ public final class Moshi { @CheckReturnValue @SuppressWarnings("unchecked") // Factories are required to return only matching JsonAdapters. public JsonAdapter adapter(Type type, Set annotations) { + if (type == null) { + throw new NullPointerException("type == null"); + } if (annotations == null) { throw new NullPointerException("annotations == null"); } diff --git a/moshi/src/test/java/com/squareup/moshi/MoshiTest.java b/moshi/src/test/java/com/squareup/moshi/MoshiTest.java index b7976c7..f81d272 100644 --- a/moshi/src/test/java/com/squareup/moshi/MoshiTest.java +++ b/moshi/src/test/java/com/squareup/moshi/MoshiTest.java @@ -27,6 +27,7 @@ import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; @@ -725,6 +726,16 @@ public final class MoshiTest { .isEqualTo("{\"shout\":\"WHAT'S UP\",\"speak\":\"Yo dog\"}"); } + @Test public void adapterLookupDisallowsNullType() { + Moshi moshi = new Moshi.Builder().build(); + try { + moshi.adapter(null, Collections.emptySet()); + fail(); + } catch (NullPointerException expected) { + assertThat(expected).hasMessage("type == null"); + } + } + @Test public void adapterLookupDisallowsNullAnnotations() { Moshi moshi = new Moshi.Builder().build(); try {