Fix polymorphism adapters

This commit is contained in:
Andrea Cavalli 2021-06-09 01:47:28 +02:00
parent 135d71bb44
commit 99c410c21c
1 changed files with 9 additions and 4 deletions

View File

@ -58,17 +58,22 @@ public abstract class MoshiPolymorphic<OBJ> {
for (Class<?> declaredClass : abstractClasses) {
var name = fixType(declaredClass.getSimpleName());
JsonAdapter<OBJ> adapter = new PolymorphicAdapter<>(name);
abstractClassesSerializers.put(declaredClass, adapter);
if (!extraClassesSerializers.containsKey(declaredClass)) {
abstractMoshiBuilder.add(declaredClass, adapter);
abstractClassesSerializers.put(declaredClass, adapter);
}
customAdapters.put(name, adapter);
abstractMoshiBuilder.add(declaredClass, adapter);
}
for (Class<?> declaredClass : concreteClasses) {
var name = fixType(declaredClass.getSimpleName());
JsonAdapter<OBJ> adapter = new NormalValueAdapter<>(name, declaredClass);
concreteClassesSerializers.put(declaredClass, adapter);
if (!extraClassesSerializers.containsKey(declaredClass)
&& !abstractClassesSerializers.containsKey(declaredClass)) {
concreteClassesSerializers.put(declaredClass, adapter);
abstractMoshiBuilder.add(declaredClass, adapter);
}
customAdapters.put(name, adapter);
abstractMoshiBuilder.add(declaredClass, adapter);
}
abstractMoshiBuilder.addLast(new RecordsJsonAdapterFactory());