From 135d71bb44602127080f4b21114de8c8b10f8e20 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Tue, 8 Jun 2021 19:55:10 +0200 Subject: [PATCH] Fix adapters order --- .../org/warp/commonutils/moshi/MoshiPolymorphic.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/warp/commonutils/moshi/MoshiPolymorphic.java b/src/main/java/org/warp/commonutils/moshi/MoshiPolymorphic.java index 73e1001..60a6185 100644 --- a/src/main/java/org/warp/commonutils/moshi/MoshiPolymorphic.java +++ b/src/main/java/org/warp/commonutils/moshi/MoshiPolymorphic.java @@ -30,6 +30,7 @@ public abstract class MoshiPolymorphic { private Moshi abstractMoshi; private final Map, JsonAdapter> abstractClassesSerializers = new ConcurrentHashMap<>(); private final Map, JsonAdapter> concreteClassesSerializers = new ConcurrentHashMap<>(); + private final Map, JsonAdapter> extraClassesSerializers = new ConcurrentHashMap<>(); private final Map> customAdapters = new ConcurrentHashMap<>(); public MoshiPolymorphic() { @@ -49,14 +50,17 @@ public abstract class MoshiPolymorphic { var concreteClasses = getConcreteClasses(); var extraAdapters = getExtraAdapters(); - extraAdapters.forEach(abstractMoshiBuilder::addLast); + extraAdapters.forEach((extraClass, jsonAdapter) -> { + extraClassesSerializers.put(extraClass, jsonAdapter); + abstractMoshiBuilder.add(extraClass, jsonAdapter); + }); for (Class declaredClass : abstractClasses) { var name = fixType(declaredClass.getSimpleName()); JsonAdapter adapter = new PolymorphicAdapter<>(name); abstractClassesSerializers.put(declaredClass, adapter); customAdapters.put(name, adapter); - abstractMoshiBuilder.addLast(declaredClass, adapter); + abstractMoshiBuilder.add(declaredClass, adapter); } for (Class declaredClass : concreteClasses) { @@ -64,7 +68,7 @@ public abstract class MoshiPolymorphic { JsonAdapter adapter = new NormalValueAdapter<>(name, declaredClass); concreteClassesSerializers.put(declaredClass, adapter); customAdapters.put(name, adapter); - abstractMoshiBuilder.addLast(declaredClass, adapter); + abstractMoshiBuilder.add(declaredClass, adapter); } abstractMoshiBuilder.addLast(new RecordsJsonAdapterFactory()); @@ -85,6 +89,7 @@ public abstract class MoshiPolymorphic { public Moshi.Builder registerAdapters(Moshi.Builder moshiBuilder) { initialize(); + extraClassesSerializers.forEach(moshiBuilder::add); abstractClassesSerializers.forEach(moshiBuilder::add); concreteClassesSerializers.forEach(moshiBuilder::add); return moshiBuilder;