Skip to content

Commit d538f0d

Browse files
committed
Add FilterPath implementation that uses Jackson 2.6 streaming filtering feature
1 parent 8b961bc commit d538f0d

19 files changed

+831
-821
lines changed

core/src/main/java/org/elasticsearch/common/xcontent/XContentBuilder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -930,8 +930,8 @@ public XContentBuilder rawField(String fieldName, byte[] content, int offset, in
930930
return this;
931931
}
932932

933-
public XContentBuilder rawField(String fieldName, InputStream content) throws IOException {
934-
generator.writeRawField(fieldName, content, bos);
933+
public XContentBuilder rawField(String fieldName, InputStream content, XContentType contentType) throws IOException {
934+
generator.writeRawField(fieldName, content, bos, contentType);
935935
return this;
936936
}
937937

core/src/main/java/org/elasticsearch/common/xcontent/XContentGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public interface XContentGenerator extends Closeable {
116116

117117
void writeRawField(String fieldName, byte[] content, int offset, int length, OutputStream bos) throws IOException;
118118

119-
void writeRawField(String fieldName, InputStream content, OutputStream bos) throws IOException;
119+
void writeRawField(String fieldName, InputStream content, OutputStream bos, XContentType contentType) throws IOException;
120120

121121
void writeRawField(String fieldName, BytesReference content, OutputStream bos) throws IOException;
122122

core/src/main/java/org/elasticsearch/common/xcontent/XContentHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ public static void writeRawField(String field, BytesReference source, XContentBu
423423
}
424424
XContentType contentType = XContentFactory.xContentType(compressedStreamInput);
425425
if (contentType == builder.contentType()) {
426-
builder.rawField(field, compressedStreamInput);
426+
builder.rawField(field, compressedStreamInput, contentType);
427427
} else {
428428
try (XContentParser parser = XContentFactory.xContent(contentType).createParser(compressedStreamInput)) {
429429
parser.nextToken();

core/src/main/java/org/elasticsearch/common/xcontent/cbor/CborXContent.java

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,11 @@
2020
package org.elasticsearch.common.xcontent.cbor;
2121

2222
import com.fasterxml.jackson.core.JsonEncoding;
23-
import com.fasterxml.jackson.core.JsonGenerator;
2423
import com.fasterxml.jackson.dataformat.cbor.CBORFactory;
2524
import org.elasticsearch.ElasticsearchParseException;
2625
import org.elasticsearch.common.bytes.BytesReference;
2726
import org.elasticsearch.common.io.FastStringReader;
28-
import org.elasticsearch.common.util.CollectionUtils;
2927
import org.elasticsearch.common.xcontent.*;
30-
import org.elasticsearch.common.xcontent.json.BaseJsonGenerator;
31-
import org.elasticsearch.common.xcontent.support.filtering.FilteringJsonGenerator;
3228

3329
import java.io.*;
3430

@@ -63,27 +59,19 @@ public byte streamSeparator() {
6359
throw new ElasticsearchParseException("cbor does not support stream parsing...");
6460
}
6561

66-
private XContentGenerator newXContentGenerator(JsonGenerator jsonGenerator) {
67-
return new CborXContentGenerator(new BaseJsonGenerator(jsonGenerator));
68-
}
69-
7062
@Override
7163
public XContentGenerator createGenerator(OutputStream os) throws IOException {
72-
return newXContentGenerator(cborFactory.createGenerator(os, JsonEncoding.UTF8));
64+
return new CborXContentGenerator(cborFactory.createGenerator(os, JsonEncoding.UTF8));
7365
}
7466

7567
@Override
7668
public XContentGenerator createGenerator(OutputStream os, String[] filters) throws IOException {
77-
if (CollectionUtils.isEmpty(filters)) {
78-
return createGenerator(os);
79-
}
80-
FilteringJsonGenerator cborGenerator = new FilteringJsonGenerator(cborFactory.createGenerator(os, JsonEncoding.UTF8), filters);
81-
return new CborXContentGenerator(cborGenerator);
69+
return new CborXContentGenerator(cborFactory.createGenerator(os, JsonEncoding.UTF8), filters);
8270
}
8371

8472
@Override
8573
public XContentGenerator createGenerator(Writer writer) throws IOException {
86-
return newXContentGenerator(cborFactory.createGenerator(writer));
74+
return new CborXContentGenerator(cborFactory.createGenerator(writer));
8775
}
8876

8977
@Override

core/src/main/java/org/elasticsearch/common/xcontent/cbor/CborXContentGenerator.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919

2020
package org.elasticsearch.common.xcontent.cbor;
2121

22+
import com.fasterxml.jackson.core.JsonGenerator;
2223
import com.fasterxml.jackson.dataformat.cbor.CBORParser;
2324
import org.elasticsearch.common.bytes.BytesReference;
2425
import org.elasticsearch.common.xcontent.XContentType;
25-
import org.elasticsearch.common.xcontent.json.BaseJsonGenerator;
2626
import org.elasticsearch.common.xcontent.json.JsonXContentGenerator;
2727

2828
import java.io.IOException;
@@ -34,8 +34,8 @@
3434
*/
3535
public class CborXContentGenerator extends JsonXContentGenerator {
3636

37-
public CborXContentGenerator(BaseJsonGenerator generator) {
38-
super(generator);
37+
public CborXContentGenerator(JsonGenerator jsonGenerator, String... filters) {
38+
super(jsonGenerator, filters);
3939
}
4040

4141
@Override
@@ -49,7 +49,7 @@ public void usePrintLineFeedAtEnd() {
4949
}
5050

5151
@Override
52-
public void writeRawField(String fieldName, InputStream content, OutputStream bos) throws IOException {
52+
public void writeRawField(String fieldName, InputStream content, OutputStream bos, XContentType contentType) throws IOException {
5353
writeFieldName(fieldName);
5454
try (CBORParser parser = CborXContent.cborFactory.createParser(content)) {
5555
parser.nextToken();

core/src/main/java/org/elasticsearch/common/xcontent/json/BaseJsonGenerator.java

Lines changed: 0 additions & 80 deletions
This file was deleted.

core/src/main/java/org/elasticsearch/common/xcontent/json/JsonXContent.java

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,7 @@
2525
import com.fasterxml.jackson.core.JsonParser;
2626
import org.elasticsearch.common.bytes.BytesReference;
2727
import org.elasticsearch.common.io.FastStringReader;
28-
import org.elasticsearch.common.util.CollectionUtils;
2928
import org.elasticsearch.common.xcontent.*;
30-
import org.elasticsearch.common.xcontent.support.filtering.FilteringJsonGenerator;
3129

3230
import java.io.*;
3331

@@ -65,27 +63,19 @@ public byte streamSeparator() {
6563
return '\n';
6664
}
6765

68-
private XContentGenerator newXContentGenerator(JsonGenerator jsonGenerator) {
69-
return new JsonXContentGenerator(new BaseJsonGenerator(jsonGenerator));
70-
}
71-
7266
@Override
7367
public XContentGenerator createGenerator(OutputStream os) throws IOException {
74-
return newXContentGenerator(jsonFactory.createGenerator(os, JsonEncoding.UTF8));
68+
return new JsonXContentGenerator(jsonFactory.createGenerator(os, JsonEncoding.UTF8));
7569
}
7670

7771
@Override
7872
public XContentGenerator createGenerator(OutputStream os, String[] filters) throws IOException {
79-
if (CollectionUtils.isEmpty(filters)) {
80-
return createGenerator(os);
81-
}
82-
FilteringJsonGenerator jsonGenerator = new FilteringJsonGenerator(jsonFactory.createGenerator(os, JsonEncoding.UTF8), filters);
83-
return new JsonXContentGenerator(jsonGenerator);
73+
return new JsonXContentGenerator(jsonFactory.createGenerator(os, JsonEncoding.UTF8), filters);
8474
}
8575

8676
@Override
8777
public XContentGenerator createGenerator(Writer writer) throws IOException {
88-
return newXContentGenerator(jsonFactory.createGenerator(writer));
78+
return new JsonXContentGenerator(jsonFactory.createGenerator(writer));
8979
}
9080

9181
@Override

0 commit comments

Comments
 (0)