Fix adapters order
This commit is contained in:
parent
74593538dc
commit
135d71bb44
@ -30,6 +30,7 @@ public abstract class MoshiPolymorphic<OBJ> {
|
|||||||
private Moshi abstractMoshi;
|
private Moshi abstractMoshi;
|
||||||
private final Map<Class<?>, JsonAdapter<OBJ>> abstractClassesSerializers = new ConcurrentHashMap<>();
|
private final Map<Class<?>, JsonAdapter<OBJ>> abstractClassesSerializers = new ConcurrentHashMap<>();
|
||||||
private final Map<Class<?>, JsonAdapter<OBJ>> concreteClassesSerializers = new ConcurrentHashMap<>();
|
private final Map<Class<?>, JsonAdapter<OBJ>> concreteClassesSerializers = new ConcurrentHashMap<>();
|
||||||
|
private final Map<Class<?>, JsonAdapter<?>> extraClassesSerializers = new ConcurrentHashMap<>();
|
||||||
private final Map<String, JsonAdapter<OBJ>> customAdapters = new ConcurrentHashMap<>();
|
private final Map<String, JsonAdapter<OBJ>> customAdapters = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
public MoshiPolymorphic() {
|
public MoshiPolymorphic() {
|
||||||
@ -49,14 +50,17 @@ public abstract class MoshiPolymorphic<OBJ> {
|
|||||||
var concreteClasses = getConcreteClasses();
|
var concreteClasses = getConcreteClasses();
|
||||||
var extraAdapters = getExtraAdapters();
|
var extraAdapters = getExtraAdapters();
|
||||||
|
|
||||||
extraAdapters.forEach(abstractMoshiBuilder::addLast);
|
extraAdapters.forEach((extraClass, jsonAdapter) -> {
|
||||||
|
extraClassesSerializers.put(extraClass, jsonAdapter);
|
||||||
|
abstractMoshiBuilder.add(extraClass, jsonAdapter);
|
||||||
|
});
|
||||||
|
|
||||||
for (Class<?> declaredClass : abstractClasses) {
|
for (Class<?> declaredClass : abstractClasses) {
|
||||||
var name = fixType(declaredClass.getSimpleName());
|
var name = fixType(declaredClass.getSimpleName());
|
||||||
JsonAdapter<OBJ> adapter = new PolymorphicAdapter<>(name);
|
JsonAdapter<OBJ> adapter = new PolymorphicAdapter<>(name);
|
||||||
abstractClassesSerializers.put(declaredClass, adapter);
|
abstractClassesSerializers.put(declaredClass, adapter);
|
||||||
customAdapters.put(name, adapter);
|
customAdapters.put(name, adapter);
|
||||||
abstractMoshiBuilder.addLast(declaredClass, adapter);
|
abstractMoshiBuilder.add(declaredClass, adapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Class<?> declaredClass : concreteClasses) {
|
for (Class<?> declaredClass : concreteClasses) {
|
||||||
@ -64,7 +68,7 @@ public abstract class MoshiPolymorphic<OBJ> {
|
|||||||
JsonAdapter<OBJ> adapter = new NormalValueAdapter<>(name, declaredClass);
|
JsonAdapter<OBJ> adapter = new NormalValueAdapter<>(name, declaredClass);
|
||||||
concreteClassesSerializers.put(declaredClass, adapter);
|
concreteClassesSerializers.put(declaredClass, adapter);
|
||||||
customAdapters.put(name, adapter);
|
customAdapters.put(name, adapter);
|
||||||
abstractMoshiBuilder.addLast(declaredClass, adapter);
|
abstractMoshiBuilder.add(declaredClass, adapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
abstractMoshiBuilder.addLast(new RecordsJsonAdapterFactory());
|
abstractMoshiBuilder.addLast(new RecordsJsonAdapterFactory());
|
||||||
@ -85,6 +89,7 @@ public abstract class MoshiPolymorphic<OBJ> {
|
|||||||
|
|
||||||
public Moshi.Builder registerAdapters(Moshi.Builder moshiBuilder) {
|
public Moshi.Builder registerAdapters(Moshi.Builder moshiBuilder) {
|
||||||
initialize();
|
initialize();
|
||||||
|
extraClassesSerializers.forEach(moshiBuilder::add);
|
||||||
abstractClassesSerializers.forEach(moshiBuilder::add);
|
abstractClassesSerializers.forEach(moshiBuilder::add);
|
||||||
concreteClassesSerializers.forEach(moshiBuilder::add);
|
concreteClassesSerializers.forEach(moshiBuilder::add);
|
||||||
return moshiBuilder;
|
return moshiBuilder;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user