@@ -112,32 +112,38 @@ public String toFieldName(String field, NameStyle overriddenFieldNameStyle, Name
112112 overriddenNodeNameStyle = this .nodeNameStyle ;
113113 }
114114
115- return overriddenFieldNameStyle == overriddenNodeNameStyle
116- ? field
117- : overriddenFieldNameStyle .fromMacroCase (overriddenNodeNameStyle .toMacroCase (field ));
115+ return overriddenFieldNameStyle == overriddenNodeNameStyle ? field : overriddenFieldNameStyle .fromMacroCase (overriddenNodeNameStyle .toMacroCase (field ));
118116 }
119117
120- public PlaceholderReplacer <?, ?> getAndCacheReplacer (Class <? extends PlaceholderReplacer <?, ?>> replacerClass ) throws ReflectiveOperationException {
121- PlaceholderReplacer <?, ?> replacer = this .cachedReplacers .get (replacerClass );
118+ public PlaceholderReplacer <?, ?> getAndCacheReplacer (Class <? extends PlaceholderReplacer <?, ?>> clazz ) throws ReflectiveOperationException {
119+ PlaceholderReplacer <?, ?> replacer = this .cachedReplacers .get (clazz );
122120 if (replacer == null ) {
123- Constructor <? extends PlaceholderReplacer <?, ?>> constructor = replacerClass .getDeclaredConstructor ();
121+ replacer = this .registeredReplacers .get (clazz );
122+ }
123+
124+ if (replacer == null ) {
125+ Constructor <? extends PlaceholderReplacer <?, ?>> constructor = clazz .getDeclaredConstructor ();
124126 constructor .setAccessible (true );
125127 replacer = constructor .newInstance ();
126- this .cachedReplacers .put (replacerClass , replacer );
128+ this .cachedReplacers .put (clazz , replacer );
127129 }
128130
129131 return replacer ;
130132 }
131133
132134 @ SuppressWarnings ("unchecked" )
133135 public <T , F > ClassSerializer <T , F > getAndCacheSerializer (Serializer serializer ) throws ReflectiveOperationException {
134- Class <? extends ClassSerializer <?, ?>> serializerClass = serializer .value ();
135- var configSerializer = (ClassSerializer <T , F >) this .cachedSerializers .get (serializerClass );
136+ Class <? extends ClassSerializer <?, ?>> clazz = serializer .value ();
137+ var configSerializer = (ClassSerializer <T , F >) this .cachedSerializers .get (clazz );
138+ if (configSerializer == null ) {
139+ configSerializer = (ClassSerializer <T , F >) this .registeredSerializers .get (clazz );
140+ }
141+
136142 if (configSerializer == null ) {
137- Constructor <? extends ClassSerializer <?, ?>> constructor = serializerClass .getDeclaredConstructor ();
143+ Constructor <? extends ClassSerializer <?, ?>> constructor = clazz .getDeclaredConstructor ();
138144 constructor .setAccessible (true );
139145 configSerializer = (ClassSerializer <T , F >) constructor .newInstance ();
140- this .cachedSerializers .put (serializerClass , configSerializer );
146+ this .cachedSerializers .put (clazz , configSerializer );
141147 }
142148
143149 return configSerializer ;
@@ -250,16 +256,6 @@ public static class Builder {
250256 private boolean backupOnErrors = true ;
251257 private int commentValueIndent = 0 ;
252258
253- public Builder registerSerializer (Collection <ClassSerializer <?, ?>> serializers ) {
254- serializers .forEach (serializer -> this .registeredSerializers .put (serializer .getToType (), serializer ));
255- return this ;
256- }
257-
258- public Builder registerSerializer (ClassSerializer <?, ?> serializer ) {
259- this .registeredSerializers .put (serializer .getToType (), serializer );
260- return this ;
261- }
262-
263259 public Builder registerReplacer (Collection <PlaceholderReplacer <?, ?>> replacers ) {
264260 replacers .forEach (this ::registerReplacer );
265261 return this ;
@@ -275,9 +271,7 @@ public Builder registerReplacer(PlaceholderReplacer<?, ?> serializer) {
275271 }
276272
277273 if (valueClass == null ) {
278- throw new IllegalStateException (
279- "Failed to determine value class, please use SerializerConfig.Builder#registerPlaceholder(Class, PlaceholderReplacer)"
280- );
274+ throw new IllegalStateException ("Failed to determine value class, please use SerializerConfig.Builder#registerPlaceholder(Class, PlaceholderReplacer)" );
281275 }
282276
283277 return this .registerReplacer (valueClass , serializer );
@@ -293,6 +287,16 @@ public Builder registerReplacer(Class<?> valueClass, PlaceholderReplacer<?, ?> s
293287 return this ;
294288 }
295289
290+ public Builder registerSerializer (Collection <ClassSerializer <?, ?>> serializers ) {
291+ serializers .forEach (this ::registerSerializer );
292+ return this ;
293+ }
294+
295+ public Builder registerSerializer (ClassSerializer <?, ?> serializer ) {
296+ this .registeredSerializers .put (serializer .getToType (), serializer );
297+ return this ;
298+ }
299+
296300 public Builder setFieldNameStyle (NameStyle fieldNameStyle ) {
297301 this .fieldNameStyle = fieldNameStyle ;
298302 return this ;
0 commit comments