Skip to content

Commit 629c376

Browse files
authored
Close xcontent parsers (partial) (#31513)
Partial pass at closing XContentParsers in server. This mostly involved adding try-with-resources statements around the usage of XContentParsers.
1 parent 9efb0fe commit 629c376

File tree

53 files changed

+1197
-1036
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+1197
-1036
lines changed

server/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -558,9 +558,10 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
558558
builder.startObject("mappings");
559559
for (Map.Entry<String, String> entry : mappings.entrySet()) {
560560
builder.field(entry.getKey());
561-
XContentParser parser = JsonXContent.jsonXContent.createParser(NamedXContentRegistry.EMPTY,
562-
DeprecationHandler.THROW_UNSUPPORTED_OPERATION, entry.getValue());
563-
builder.copyCurrentStructure(parser);
561+
try (XContentParser parser = JsonXContent.jsonXContent.createParser(NamedXContentRegistry.EMPTY,
562+
DeprecationHandler.THROW_UNSUPPORTED_OPERATION, entry.getValue())) {
563+
builder.copyCurrentStructure(parser);
564+
}
564565
}
565566
builder.endObject();
566567

server/src/test/java/org/elasticsearch/action/admin/cluster/settings/ClusterUpdateSettingsRequestTests.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,13 @@ private void doFromXContentTestWithRandomFields(boolean addRandomFields) throws
5858
assertThat(iae.getMessage(),
5959
containsString("[cluster_update_settings_request] unknown field [" + unsupportedField + "], parser not found"));
6060
} else {
61-
XContentParser parser = createParser(xContentType.xContent(), originalBytes);
62-
ClusterUpdateSettingsRequest parsedRequest = ClusterUpdateSettingsRequest.fromXContent(parser);
61+
try (XContentParser parser = createParser(xContentType.xContent(), originalBytes)) {
62+
ClusterUpdateSettingsRequest parsedRequest = ClusterUpdateSettingsRequest.fromXContent(parser);
6363

64-
assertNull(parser.nextToken());
65-
assertThat(parsedRequest.transientSettings(), equalTo(request.transientSettings()));
66-
assertThat(parsedRequest.persistentSettings(), equalTo(request.persistentSettings()));
64+
assertNull(parser.nextToken());
65+
assertThat(parsedRequest.transientSettings(), equalTo(request.transientSettings()));
66+
assertThat(parsedRequest.persistentSettings(), equalTo(request.persistentSettings()));
67+
}
6768
}
6869
}
6970

server/src/test/java/org/elasticsearch/action/admin/indices/create/CreateIndexRequestTests.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,11 +134,12 @@ public static void assertMappingsEqual(Map<String, String> expected, Map<String,
134134
for (Map.Entry<String, String> expectedEntry : expected.entrySet()) {
135135
String expectedValue = expectedEntry.getValue();
136136
String actualValue = actual.get(expectedEntry.getKey());
137-
XContentParser expectedJson = JsonXContent.jsonXContent.createParser(NamedXContentRegistry.EMPTY,
137+
try (XContentParser expectedJson = JsonXContent.jsonXContent.createParser(NamedXContentRegistry.EMPTY,
138138
LoggingDeprecationHandler.INSTANCE, expectedValue);
139-
XContentParser actualJson = JsonXContent.jsonXContent.createParser(NamedXContentRegistry.EMPTY,
140-
LoggingDeprecationHandler.INSTANCE, actualValue);
141-
assertEquals(expectedJson.map(), actualJson.map());
139+
XContentParser actualJson = JsonXContent.jsonXContent.createParser(NamedXContentRegistry.EMPTY,
140+
LoggingDeprecationHandler.INSTANCE, actualValue)){
141+
assertEquals(expectedJson.map(), actualJson.map());
142+
}
142143
}
143144
}
144145

server/src/test/java/org/elasticsearch/action/admin/indices/mapping/put/PutMappingRequestTests.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,10 @@ public void testToAndFromXContent() throws IOException {
147147

148148
private void assertMappingsEqual(String expected, String actual) throws IOException {
149149

150-
XContentParser expectedJson = createParser(XContentType.JSON.xContent(), expected);
151-
XContentParser actualJson = createParser(XContentType.JSON.xContent(), actual);
152-
assertEquals(expectedJson.mapOrdered(), actualJson.mapOrdered());
150+
try (XContentParser expectedJson = createParser(XContentType.JSON.xContent(), expected);
151+
XContentParser actualJson = createParser(XContentType.JSON.xContent(), actual)) {
152+
assertEquals(expectedJson.mapOrdered(), actualJson.mapOrdered());
153+
}
153154
}
154155

155156
/**

server/src/test/java/org/elasticsearch/action/admin/indices/shrink/ResizeRequestTests.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.elasticsearch.common.Strings;
2626
import org.elasticsearch.common.bytes.BytesReference;
2727
import org.elasticsearch.common.settings.Settings;
28+
import org.elasticsearch.common.xcontent.XContentParser;
2829
import org.elasticsearch.common.xcontent.XContentType;
2930
import org.elasticsearch.index.RandomCreateIndexGenerator;
3031
import org.elasticsearch.test.ESTestCase;
@@ -93,7 +94,9 @@ public void testToAndFromXContent() throws IOException {
9394

9495
ResizeRequest parsedResizeRequest = new ResizeRequest(resizeRequest.getTargetIndexRequest().index(),
9596
resizeRequest.getSourceIndex());
96-
parsedResizeRequest.fromXContent(createParser(xContentType.xContent(), originalBytes));
97+
try (XContentParser xParser = createParser(xContentType.xContent(), originalBytes)) {
98+
parsedResizeRequest.fromXContent(xParser);
99+
}
97100

98101
assertEquals(resizeRequest.getSourceIndex(), parsedResizeRequest.getSourceIndex());
99102
assertEquals(resizeRequest.getTargetIndexRequest().index(), parsedResizeRequest.getTargetIndexRequest().index());

server/src/test/java/org/elasticsearch/action/get/MultiGetRequestTests.java

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,20 @@ public void testAddWithInvalidKey() throws IOException {
5454
builder.endArray();
5555
}
5656
builder.endObject();
57-
final XContentParser parser = createParser(builder);
58-
final MultiGetRequest mgr = new MultiGetRequest();
59-
final ParsingException e = expectThrows(
57+
try (XContentParser parser = createParser(builder)) {
58+
final MultiGetRequest mgr = new MultiGetRequest();
59+
final ParsingException e = expectThrows(
6060
ParsingException.class,
6161
() -> {
6262
final String defaultIndex = randomAlphaOfLength(5);
6363
final String defaultType = randomAlphaOfLength(3);
6464
final FetchSourceContext fetchSource = FetchSourceContext.FETCH_SOURCE;
6565
mgr.add(defaultIndex, defaultType, null, fetchSource, null, parser, true);
6666
});
67-
assertThat(
67+
assertThat(
6868
e.toString(),
6969
containsString("unknown key [doc] for a START_ARRAY, expected [docs] or [ids]"));
70+
}
7071
}
7172

7273
public void testUnexpectedField() throws IOException {
@@ -141,16 +142,17 @@ public void testXContentSerialization() throws IOException {
141142
MultiGetRequest expected = createTestInstance();
142143
XContentType xContentType = randomFrom(XContentType.values());
143144
BytesReference shuffled = toShuffledXContent(expected, xContentType, ToXContent.EMPTY_PARAMS, false);
144-
XContentParser parser = createParser(XContentFactory.xContent(xContentType), shuffled);
145-
MultiGetRequest actual = new MultiGetRequest();
146-
actual.add(null, null, null, null, null, parser, true);
147-
assertThat(parser.nextToken(), nullValue());
148-
149-
assertThat(actual.items.size(), equalTo(expected.items.size()));
150-
for (int i = 0; i < expected.items.size(); i++) {
151-
MultiGetRequest.Item expectedItem = expected.items.get(i);
152-
MultiGetRequest.Item actualItem = actual.items.get(i);
153-
assertThat(actualItem, equalTo(expectedItem));
145+
try (XContentParser parser = createParser(XContentFactory.xContent(xContentType), shuffled)) {
146+
MultiGetRequest actual = new MultiGetRequest();
147+
actual.add(null, null, null, null, null, parser, true);
148+
assertThat(parser.nextToken(), nullValue());
149+
150+
assertThat(actual.items.size(), equalTo(expected.items.size()));
151+
for (int i = 0; i < expected.items.size(); i++) {
152+
MultiGetRequest.Item expectedItem = expected.items.get(i);
153+
MultiGetRequest.Item actualItem = actual.items.get(i);
154+
assertThat(actualItem, equalTo(expectedItem));
155+
}
154156
}
155157
}
156158
}

server/src/test/java/org/elasticsearch/action/get/MultiGetResponseTests.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,11 @@ public void testFromXContent() throws IOException {
3939
MultiGetResponse expected = createTestInstance();
4040
XContentType xContentType = randomFrom(XContentType.values());
4141
BytesReference shuffled = toShuffledXContent(expected, xContentType, ToXContent.EMPTY_PARAMS, false);
42-
43-
XContentParser parser = createParser(XContentFactory.xContent(xContentType), shuffled);
44-
MultiGetResponse parsed = MultiGetResponse.fromXContent(parser);
45-
assertNull(parser.nextToken());
42+
MultiGetResponse parsed;
43+
try (XContentParser parser = createParser(XContentFactory.xContent(xContentType), shuffled)) {
44+
parsed = MultiGetResponse.fromXContent(parser);
45+
assertNull(parser.nextToken());
46+
}
4647
assertNotSame(expected, parsed);
4748

4849
assertThat(parsed.getResponses().length, equalTo(expected.getResponses().length));
@@ -60,6 +61,7 @@ public void testFromXContent() throws IOException {
6061
assertThat(actualItem.getResponse(), equalTo(expectedItem.getResponse()));
6162
}
6263
}
64+
6365
}
6466
}
6567

server/src/test/java/org/elasticsearch/action/search/MultiSearchResponseTests.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,11 @@ public void testFromXContent() throws IOException {
4040
MultiSearchResponse expected = createTestInstance();
4141
XContentType xContentType = randomFrom(XContentType.values());
4242
BytesReference shuffled = toShuffledXContent(expected, xContentType, ToXContent.EMPTY_PARAMS, false);
43-
XContentParser parser = createParser(XContentFactory.xContent(xContentType), shuffled);
44-
MultiSearchResponse actual = MultiSearchResponse.fromXContext(parser);
45-
assertThat(parser.nextToken(), nullValue());
43+
MultiSearchResponse actual;
44+
try (XContentParser parser = createParser(XContentFactory.xContent(xContentType), shuffled)) {
45+
actual = MultiSearchResponse.fromXContext(parser);
46+
assertThat(parser.nextToken(), nullValue());
47+
}
4648

4749
assertThat(actual.getTook(), equalTo(expected.getTook()));
4850
assertThat(actual.getResponses().length, equalTo(expected.getResponses().length));

server/src/test/java/org/elasticsearch/cluster/metadata/MetaDataTests.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,7 @@ public void testUnknownFieldClusterMetaData() throws IOException {
181181
.field("random", "value")
182182
.endObject()
183183
.endObject());
184-
XContentParser parser = createParser(JsonXContent.jsonXContent, metadata);
185-
try {
184+
try (XContentParser parser = createParser(JsonXContent.jsonXContent, metadata)) {
186185
MetaData.Builder.fromXContent(parser);
187186
fail();
188187
} catch (IllegalArgumentException e) {
@@ -197,8 +196,7 @@ public void testUnknownFieldIndexMetaData() throws IOException {
197196
.field("random", "value")
198197
.endObject()
199198
.endObject());
200-
XContentParser parser = createParser(JsonXContent.jsonXContent, metadata);
201-
try {
199+
try (XContentParser parser = createParser(JsonXContent.jsonXContent, metadata)) {
202200
IndexMetaData.Builder.fromXContent(parser);
203201
fail();
204202
} catch (IllegalArgumentException e) {
@@ -225,9 +223,10 @@ public void testXContentWithIndexGraveyard() throws IOException {
225223
builder.startObject();
226224
originalMeta.toXContent(builder, ToXContent.EMPTY_PARAMS);
227225
builder.endObject();
228-
XContentParser parser = createParser(JsonXContent.jsonXContent, BytesReference.bytes(builder));
229-
final MetaData fromXContentMeta = MetaData.fromXContent(parser);
230-
assertThat(fromXContentMeta.indexGraveyard(), equalTo(originalMeta.indexGraveyard()));
226+
try (XContentParser parser = createParser(JsonXContent.jsonXContent, BytesReference.bytes(builder))) {
227+
final MetaData fromXContentMeta = MetaData.fromXContent(parser);
228+
assertThat(fromXContentMeta.indexGraveyard(), equalTo(originalMeta.indexGraveyard()));
229+
}
231230
}
232231

233232
public void testSerializationWithIndexGraveyard() throws IOException {

server/src/test/java/org/elasticsearch/common/geo/BaseGeoParsingTestCase.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,17 @@ abstract class BaseGeoParsingTestCase extends ESTestCase {
5050
public abstract void testParseGeometryCollection() throws IOException;
5151

5252
protected void assertValidException(XContentBuilder builder, Class expectedException) throws IOException {
53-
XContentParser parser = createParser(builder);
54-
parser.nextToken();
55-
ElasticsearchGeoAssertions.assertValidException(parser, expectedException);
53+
try (XContentParser parser = createParser(builder)) {
54+
parser.nextToken();
55+
ElasticsearchGeoAssertions.assertValidException(parser, expectedException);
56+
}
5657
}
5758

5859
protected void assertGeometryEquals(Shape expected, XContentBuilder geoJson) throws IOException {
59-
XContentParser parser = createParser(geoJson);
60-
parser.nextToken();
61-
ElasticsearchGeoAssertions.assertEquals(expected, ShapeParser.parse(parser).build());
60+
try (XContentParser parser = createParser(geoJson)) {
61+
parser.nextToken();
62+
ElasticsearchGeoAssertions.assertEquals(expected, ShapeParser.parse(parser).build());
63+
}
6264
}
6365

6466
protected ShapeCollection<Shape> shapeCollection(Shape... shapes) {

0 commit comments

Comments
 (0)