@@ -132,15 +132,19 @@ public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> typeToken) {
132
132
}
133
133
134
134
Type [] keyAndValueTypes = $Gson$Types .getMapKeyAndValueTypes (type , rawType );
135
- TypeAdapter <?> keyAdapter = getKeyAdapter (gson , keyAndValueTypes [0 ]);
136
- TypeAdapter <?> valueAdapter = gson .getAdapter (TypeToken .get (keyAndValueTypes [1 ]));
135
+ Type keyType = keyAndValueTypes [0 ];
136
+ Type valueType = keyAndValueTypes [1 ];
137
+ TypeAdapter <?> keyAdapter = getKeyAdapter (gson , keyType );
138
+ TypeAdapter <?> wrappedKeyAdapter =
139
+ new TypeAdapterRuntimeTypeWrapper <>(gson , keyAdapter , keyType );
140
+ TypeAdapter <?> valueAdapter = gson .getAdapter (TypeToken .get (valueType ));
141
+ TypeAdapter <?> wrappedValueAdapter =
142
+ new TypeAdapterRuntimeTypeWrapper <>(gson , valueAdapter , valueType );
137
143
ObjectConstructor <T > constructor = constructorConstructor .get (typeToken );
138
144
139
145
@ SuppressWarnings ({"unchecked" , "rawtypes" })
140
146
// we don't define a type parameter for the key or value types
141
- TypeAdapter <T > result =
142
- new Adapter (
143
- gson , keyAndValueTypes [0 ], keyAdapter , keyAndValueTypes [1 ], valueAdapter , constructor );
147
+ TypeAdapter <T > result = new Adapter (wrappedKeyAdapter , wrappedValueAdapter , constructor );
144
148
return result ;
145
149
}
146
150
@@ -157,15 +161,11 @@ private final class Adapter<K, V> extends TypeAdapter<Map<K, V>> {
157
161
private final ObjectConstructor <? extends Map <K , V >> constructor ;
158
162
159
163
public Adapter (
160
- Gson context ,
161
- Type keyType ,
162
164
TypeAdapter <K > keyTypeAdapter ,
163
- Type valueType ,
164
165
TypeAdapter <V > valueTypeAdapter ,
165
166
ObjectConstructor <? extends Map <K , V >> constructor ) {
166
- this .keyTypeAdapter = new TypeAdapterRuntimeTypeWrapper <>(context , keyTypeAdapter , keyType );
167
- this .valueTypeAdapter =
168
- new TypeAdapterRuntimeTypeWrapper <>(context , valueTypeAdapter , valueType );
167
+ this .keyTypeAdapter = keyTypeAdapter ;
168
+ this .valueTypeAdapter = valueTypeAdapter ;
169
169
this .constructor = constructor ;
170
170
}
171
171
0 commit comments