Skip to content

Commit 99af0f1

Browse files
committed
just minor twiddling wrt map key serializers, still
1 parent 140641b commit 99af0f1

File tree

2 files changed

+13
-18
lines changed

2 files changed

+13
-18
lines changed

src/main/java/com/fasterxml/jackson/databind/SerializerProvider.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -264,10 +264,13 @@ protected SerializerProvider(SerializerProvider src)
264264
*/
265265

266266
/**
267-
* Method that can be used to specify serializer that will be
268-
* used to write JSON property names matching null keys for Java
269-
* Maps (which will throw an exception if try write such property
270-
* name)
267+
* Method that can be used to specify serializer to use for serializing
268+
* all non-null JSON property names, unless more specific key serializer
269+
* is found (i.e. if not custom key serializer has been registered for
270+
* Java type).
271+
*<p>
272+
* Note that key serializer registration are different from value serializer
273+
* registrations.
271274
*/
272275
public void setDefaultKeySerializer(JsonSerializer<Object> ks)
273276
{
@@ -295,13 +298,9 @@ public void setNullValueSerializer(JsonSerializer<Object> nvs)
295298
}
296299

297300
/**
298-
* Method that can be used to specify serializer to use for serializing
299-
* all non-null JSON property names, unless more specific key serializer
300-
* is found (i.e. if not custom key serializer has been registered for
301-
* Java type).
302-
*<p>
303-
* Note that key serializer registration are different from value serializer
304-
* registrations.
301+
* Method that can be used to specify serializer that will be
302+
* used to write JSON property names matching null keys for Java
303+
* Maps (which will otherwise throw an exception if try write such property name)
305304
*/
306305
public void setNullKeySerializer(JsonSerializer<Object> nks)
307306
{

src/main/java/com/fasterxml/jackson/databind/ser/BasicSerializerFactory.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -230,21 +230,17 @@ public JsonSerializer<Object> createKeySerializer(SerializerProvider ctxt,
230230
if (ser == null) {
231231
AnnotatedMember keyAm = beanDesc.findJsonKeyAccessor();
232232
if (keyAm != null) {
233-
final Class<?> rawType = keyAm.getRawType();
234-
JsonSerializer<?> delegate = createKeySerializer(ctxt, config.constructType(rawType), null);
233+
JsonSerializer<?> delegate = createKeySerializer(ctxt, keyAm.getType(), defaultImpl);
235234
if (config.canOverrideAccessModifiers()) {
236235
ClassUtil.checkAndFixAccess(keyAm.getMember(),
237236
config.isEnabled(MapperFeature.OVERRIDE_PUBLIC_ACCESS_MODIFIERS));
238237
}
239238
// null -> no TypeSerializer for key-serializer use case
240239
ser = new JsonValueSerializer(keyAm, null, delegate);
241-
}
242-
if (ser == null) {
240+
} else {
243241
AnnotatedMember am = beanDesc.findJsonValueAccessor();
244242
if (am != null) {
245-
final Class<?> rawType = am.getRawType();
246-
JsonSerializer<?> delegate = StdKeySerializers.getStdKeySerializer(config,
247-
rawType, true);
243+
JsonSerializer<?> delegate = createKeySerializer(ctxt, am.getType(), defaultImpl);
248244
if (config.canOverrideAccessModifiers()) {
249245
ClassUtil.checkAndFixAccess(am.getMember(),
250246
config.isEnabled(MapperFeature.OVERRIDE_PUBLIC_ACCESS_MODIFIERS));

0 commit comments

Comments
 (0)