Merge pull request #876 from ZacSweers/z/rawTypeMessage

Pass raw type rather than possibly-generic type in platform type error
This commit is contained in:
Jake Wharton
2019-09-04 14:16:56 -04:00
committed by GitHub
2 changed files with 11 additions and 7 deletions

View File

@@ -56,8 +56,12 @@ final class ClassJsonAdapter<T> extends JsonAdapter<T> {
if (rawType.isInterface() || rawType.isEnum()) return null;
if (!annotations.isEmpty()) return null;
if (Util.isPlatformType(rawType)) {
String messagePrefix = "Platform " + rawType;
if (type instanceof ParameterizedType) {
messagePrefix += " in " + type;
}
throw new IllegalArgumentException(
"Platform " + type + " requires explicit JsonAdapter to be registered");
messagePrefix + " requires explicit JsonAdapter to be registered");
}
if (rawType.isAnonymousClass()) {

View File

@@ -973,14 +973,14 @@ public final class MoshiTest {
fail();
} catch (IllegalArgumentException e) {
assertThat(e).hasMessage(
"Platform java.util.ArrayList<java.lang.String> requires explicit "
"Platform class java.util.ArrayList in java.util.ArrayList<java.lang.String> requires explicit "
+ "JsonAdapter to be registered"
+ "\nfor java.util.ArrayList<java.lang.String> strings"
+ "\nfor class com.squareup.moshi.MoshiTest$HasPlatformType"
+ "\nfor java.util.Map<java.lang.String, "
+ "com.squareup.moshi.MoshiTest$HasPlatformType>");
assertThat(e).hasCauseExactlyInstanceOf(IllegalArgumentException.class);
assertThat(e.getCause()).hasMessage("Platform java.util.ArrayList<java.lang.String> "
assertThat(e.getCause()).hasMessage("Platform class java.util.ArrayList in java.util.ArrayList<java.lang.String> "
+ "requires explicit JsonAdapter to be registered");
}
}
@@ -992,13 +992,13 @@ public final class MoshiTest {
fail();
} catch (IllegalArgumentException e) {
assertThat(e).hasMessage(
"Platform java.util.ArrayList<java.lang.String> requires explicit "
"Platform class java.util.ArrayList in java.util.ArrayList<java.lang.String> requires explicit "
+ "JsonAdapter to be registered"
+ "\nfor java.util.ArrayList<java.lang.String> strings"
+ "\nfor class com.squareup.moshi.MoshiTest$HasPlatformType hasPlatformType"
+ "\nfor class com.squareup.moshi.MoshiTest$HasPlatformType$Wrapper");
assertThat(e).hasCauseExactlyInstanceOf(IllegalArgumentException.class);
assertThat(e.getCause()).hasMessage("Platform java.util.ArrayList<java.lang.String> "
assertThat(e.getCause()).hasMessage("Platform class java.util.ArrayList in java.util.ArrayList<java.lang.String> "
+ "requires explicit JsonAdapter to be registered");
}
}
@@ -1010,14 +1010,14 @@ public final class MoshiTest {
fail();
} catch (IllegalArgumentException e) {
assertThat(e).hasMessage(
"Platform java.util.ArrayList<java.lang.String> requires explicit "
"Platform class java.util.ArrayList in java.util.ArrayList<java.lang.String> requires explicit "
+ "JsonAdapter to be registered"
+ "\nfor java.util.ArrayList<java.lang.String> strings"
+ "\nfor class com.squareup.moshi.MoshiTest$HasPlatformType"
+ "\nfor java.util.List<com.squareup.moshi.MoshiTest$HasPlatformType> platformTypes"
+ "\nfor class com.squareup.moshi.MoshiTest$HasPlatformType$ListWrapper");
assertThat(e).hasCauseExactlyInstanceOf(IllegalArgumentException.class);
assertThat(e.getCause()).hasMessage("Platform java.util.ArrayList<java.lang.String> "
assertThat(e.getCause()).hasMessage("Platform class java.util.ArrayList in java.util.ArrayList<java.lang.String> "
+ "requires explicit JsonAdapter to be registered");
}
}