Skip to content

Commit e1c18af

Browse files
author
Arne Georg Gleditsch
committed
Bump jackson-core-asl dependency to avoid ArrayIndexOutOfBoundsException when pretty-printing certain structures. Move generator instantiation outwards to allow pretty-printing to maintain correct indentation prefix for nested structures.
1 parent f2fa4bf commit e1c18af

File tree

4 files changed

+12
-12
lines changed

4 files changed

+12
-12
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ http://maven.apache.org/maven-v4_0_0.xsd">
2929
<dependency>
3030
<groupId>org.codehaus.jackson</groupId>
3131
<artifactId>jackson-core-asl</artifactId>
32-
<version>1.6.2</version>
32+
<version>1.9.12</version>
3333
<scope>provided</scope>
3434
</dependency>
3535
<dependency>

protobuf-codec-json/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ http://maven.apache.org/maven-v4_0_0.xsd">
2121
<dependency>
2222
<groupId>org.codehaus.jackson</groupId>
2323
<artifactId>jackson-core-asl</artifactId>
24-
<version>1.6.2</version>
24+
<version>1.9.12</version>
2525
</dependency>
2626
</dependencies>
2727
<build>

protobuf-codec-json/src/main/java/protobuf/codec/json/JacksonJsonWriter.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,6 @@ public class JacksonJsonWriter {
2828

2929
public static void generateJSONFields(Message message, JsonGenerator generator, Map<Feature, Object> featureMap) throws IOException {
3030

31-
generator.configure(org.codehaus.jackson.JsonGenerator.Feature.AUTO_CLOSE_TARGET, (Boolean) featureMap.get(Feature.CLOSE_STREAM));
32-
33-
if (AbstractCodec.prettyPrint(featureMap)) {
34-
generator.useDefaultPrettyPrinter();
35-
}
36-
if (!AbstractCodec.closeStream(featureMap)) {
37-
generator.configure(org.codehaus.jackson.JsonGenerator.Feature.AUTO_CLOSE_TARGET, false);
38-
}
39-
4031
generator.writeStartObject();
4132
Iterator<Map.Entry<FieldDescriptor, Object>> iterator = message.getAllFields().entrySet().iterator(); // Get all set fields
4233
while (iterator.hasNext()) {

protobuf-codec-json/src/main/java/protobuf/codec/json/JsonCodec.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,16 @@ protected Message readFromStream(Builder builder, Reader reader, ExtensionRegist
6969
protected void writeToStream(Message message, Writer writer) throws IOException {
7070
JsonFactory jsonFactory = new JsonFactory();
7171
JsonGenerator generator = jsonFactory.createJsonGenerator(writer);
72-
JacksonJsonWriter.generateJSONFields(message, generator, getAllFeaturesSet());
72+
73+
Map<Feature, Object> featureMap = getAllFeaturesSet();
74+
generator.configure(org.codehaus.jackson.JsonGenerator.Feature.AUTO_CLOSE_TARGET, (Boolean) featureMap.get(Feature.CLOSE_STREAM));
75+
if (AbstractCodec.prettyPrint(featureMap)) {
76+
generator.useDefaultPrettyPrinter();
77+
}
78+
if (!AbstractCodec.closeStream(featureMap)) {
79+
generator.configure(org.codehaus.jackson.JsonGenerator.Feature.AUTO_CLOSE_TARGET, false);
80+
}
81+
JacksonJsonWriter.generateJSONFields(message, generator, featureMap);
7382
generator.close();
7483
}
7584

0 commit comments

Comments
 (0)