Skip to content

Commit 8ad051a

Browse files
committed
Fix #19
1 parent d8dcc0b commit 8ad051a

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

guava/src/main/java/com/fasterxml/jackson/datatype/guava/ser/MultimapSerializer.java

+20-4
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
import com.fasterxml.jackson.core.*;
1010
import com.fasterxml.jackson.databind.*;
1111
import com.fasterxml.jackson.databind.introspect.AnnotatedMember;
12+
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonArrayFormatVisitor;
13+
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatTypes;
14+
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitable;
1215
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
1316
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonMapFormatVisitor;
1417
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
@@ -385,12 +388,25 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t
385388
if (v2 != null) {
386389
v2.keyFormat(_keySerializer, _type.getKeyType());
387390
JsonSerializer<?> valueSer = _valueSerializer;
388-
JavaType vt = _type.getContentType();
391+
final JavaType vt = _type.getContentType();
392+
final SerializerProvider prov = visitor.getProvider();
389393
if (valueSer == null) {
390-
valueSer = _findAndAddDynamic(_dynamicValueSerializers,
391-
vt, visitor.getProvider());
394+
valueSer = _findAndAddDynamic(_dynamicValueSerializers, vt, prov);
392395
}
393-
v2.valueFormat(valueSer, vt);
396+
final JsonSerializer<?> valueSer2 = valueSer;
397+
v2.valueFormat(new JsonFormatVisitable() {
398+
final JavaType arrayType = prov.getTypeFactory().constructArrayType(vt);
399+
@Override
400+
public void acceptJsonFormatVisitor(
401+
JsonFormatVisitorWrapper v3, JavaType hint3)
402+
throws JsonMappingException
403+
{
404+
JsonArrayFormatVisitor v4 = v3.expectArrayFormat(arrayType);
405+
if (v4 != null) {
406+
v4.itemsFormat(valueSer2, vt);
407+
}
408+
}
409+
}, vt);
394410
}
395411
}
396412

release-notes/VERSION

+4
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ Modules:
77
=== Releases ===
88
------------------------------------------------------------------------
99

10+
2.8.10 (not yet released)
11+
12+
#19: Multimap serializer produces wrong Schema structure
13+
1014
2.8.9 (12-Jun-2017)
1115

1216
No changes since 2.8.8

0 commit comments

Comments
 (0)