mirror of
https://github.com/fankes/moshi.git
synced 2025-10-18 23:49:21 +08:00
Implement reflective support for Java Records (#1381)
* Standardize around JDK 8 * Update GJF to support newer JDKs * Fix misc java 8 issues in tests * Prepare java 16/records checking at runtime * Implement real RecordJsonAdapter * Spotless * Prepare build for JDK 16+ * Fix property name for kapt * Small cleanup * Make FallbackEnum java-8 happy * Remove animalsniffer * Fix format * Add opens for ExtendsPlatformClassWithProtectedFields * Return null every time in shim for main tests * Use JDK 16 + release 8 to replace animalsniffer * Simplify accessor accessible handling * Remove manifest attrs * Fix typo * Fix KCT tests + upgrade it * Cover another * Try explicit kotlin daemon args for java 17? * Disable 17-ea for now until kotlin 1.5.30 * Add JsonQualifier and Json(name) tests + fix qualifiers * Ensure constructor is accessible * GJF it properly * GJF 1.11 * Unwrap InvocationTargetException * Use MethodHandle for constructor * Use MethodHandle for accessor too * Revert "Remove manifest attrs" This reverts commit 3eb768fd6904bb5c979aa01c3c182e0fb9329d62. * Proper MR jar * *actually* fix GJF, which wasn't getting applied before We can just enable this everywhere now since we require JDK 16 anyway * Make IDE happy about modules access * Fixup records tests to play nice with modules Gotta be public * Add complex smoke test * Remove comment Not a regression test in this case
This commit is contained in:
@@ -58,9 +58,9 @@ final class FallbackEnum {
|
||||
if (!(annotation instanceof Fallback)) {
|
||||
return null;
|
||||
}
|
||||
Class<Enum> enumType = (Class<Enum>) rawType;
|
||||
Enum<?> fallback = Enum.valueOf(enumType, ((Fallback) annotation).value());
|
||||
return new FallbackEnumJsonAdapter<>(enumType, fallback);
|
||||
//noinspection rawtypes
|
||||
return new FallbackEnumJsonAdapter<>(
|
||||
(Class<? extends Enum>) rawType, ((Fallback) annotation).value());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -70,9 +70,9 @@ final class FallbackEnum {
|
||||
final JsonReader.Options options;
|
||||
final T defaultValue;
|
||||
|
||||
FallbackEnumJsonAdapter(Class<T> enumType, T defaultValue) {
|
||||
FallbackEnumJsonAdapter(Class<T> enumType, String fallbackName) {
|
||||
this.enumType = enumType;
|
||||
this.defaultValue = defaultValue;
|
||||
this.defaultValue = Enum.valueOf(enumType, fallbackName);
|
||||
try {
|
||||
constants = enumType.getEnumConstants();
|
||||
nameStrings = new String[constants.length];
|
||||
|
Reference in New Issue
Block a user