summaryrefslogtreecommitdiff
path: root/core/src/main/java
diff options
context:
space:
mode:
authorChristoph Büscher <christoph@elastic.co>2016-04-18 15:24:08 +0200
committerChristoph Büscher <christoph@elastic.co>2016-04-18 16:13:56 +0200
commite06e122f9fa2363b67b3162406717b4356efbf77 (patch)
tree56aa8cc8ddb74800cedcec8f8a585fa57b585e44 /core/src/main/java
parentcdb36a2b0c106cd00a362e6b3528754557c3271a (diff)
Wrap xcontent parser creation in try-with-resource statement where possible
Diffstat (limited to 'core/src/main/java')
-rw-r--r--core/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexRequest.java6
-rw-r--r--core/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequest.java9
-rw-r--r--core/src/main/java/org/elasticsearch/cluster/ClusterState.java13
-rw-r--r--core/src/main/java/org/elasticsearch/cluster/metadata/AliasMetaData.java8
-rw-r--r--core/src/main/java/org/elasticsearch/cluster/metadata/AliasValidator.java6
-rw-r--r--core/src/main/java/org/elasticsearch/cluster/metadata/IndexMetaData.java9
-rw-r--r--core/src/main/java/org/elasticsearch/cluster/metadata/IndexTemplateMetaData.java7
-rw-r--r--core/src/main/java/org/elasticsearch/gateway/MetaDataStateFormat.java6
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/GeoShapeQueryBuilder.java8
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java9
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/PercolatorQueryBuilder.java9
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/functionscore/DecayFunctionBuilder.java12
-rw-r--r--core/src/main/java/org/elasticsearch/rest/action/admin/indices/validate/template/RestRenderSearchTemplateAction.java53
-rw-r--r--core/src/main/java/org/elasticsearch/script/ScriptService.java3
-rw-r--r--core/src/main/java/org/elasticsearch/search/SearchService.java4
-rw-r--r--core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java7
-rw-r--r--core/src/main/java/org/elasticsearch/search/suggest/completion/CompletionSuggestionBuilder.java7
17 files changed, 95 insertions, 81 deletions
diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexRequest.java b/core/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexRequest.java
index 39e3673868..43d45672ae 100644
--- a/core/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexRequest.java
+++ b/core/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexRequest.java
@@ -21,7 +21,6 @@ package org.elasticsearch.action.admin.indices.create;
import org.elasticsearch.ElasticsearchGenerationException;
import org.elasticsearch.ElasticsearchParseException;
-import org.elasticsearch.action.ActionRequest;
import org.elasticsearch.action.ActionRequestValidationException;
import org.elasticsearch.action.IndicesRequest;
import org.elasticsearch.action.admin.indices.alias.Alias;
@@ -49,9 +48,9 @@ import java.util.Map;
import java.util.Set;
import static org.elasticsearch.action.ValidateActions.addValidationError;
-import static org.elasticsearch.common.settings.Settings.Builder.EMPTY_SETTINGS;
import static org.elasticsearch.common.settings.Settings.readSettingsFromStream;
import static org.elasticsearch.common.settings.Settings.writeSettingsToStream;
+import static org.elasticsearch.common.settings.Settings.Builder.EMPTY_SETTINGS;
/**
* A request to create an index. Best created with {@link org.elasticsearch.client.Requests#createIndexRequest(String)}.
@@ -305,8 +304,7 @@ public class CreateIndexRequest extends AcknowledgedRequest<CreateIndexRequest>
* Sets the aliases that will be associated with the index when it gets created
*/
public CreateIndexRequest aliases(BytesReference source) {
- try {
- XContentParser parser = XContentHelper.createParser(source);
+ try (XContentParser parser = XContentHelper.createParser(source)) {
//move to the first alias
parser.nextToken();
while ((parser.nextToken()) != XContentParser.Token.END_OBJECT) {
diff --git a/core/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequest.java b/core/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequest.java
index 94d436d57d..76c665c7b8 100644
--- a/core/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequest.java
+++ b/core/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequest.java
@@ -47,9 +47,9 @@ import java.util.Map;
import java.util.Set;
import static org.elasticsearch.action.ValidateActions.addValidationError;
-import static org.elasticsearch.common.settings.Settings.Builder.EMPTY_SETTINGS;
import static org.elasticsearch.common.settings.Settings.readSettingsFromStream;
import static org.elasticsearch.common.settings.Settings.writeSettingsToStream;
+import static org.elasticsearch.common.settings.Settings.Builder.EMPTY_SETTINGS;
/**
* A request to create an index template.
@@ -71,7 +71,7 @@ public class PutIndexTemplateRequest extends MasterNodeRequest<PutIndexTemplateR
private Map<String, String> mappings = new HashMap<>();
private final Set<Alias> aliases = new HashSet<>();
-
+
private Map<String, IndexMetaData.Custom> customs = new HashMap<>();
public PutIndexTemplateRequest() {
@@ -356,7 +356,7 @@ public class PutIndexTemplateRequest extends MasterNodeRequest<PutIndexTemplateR
public Map<String, IndexMetaData.Custom> customs() {
return this.customs;
}
-
+
public Set<Alias> aliases() {
return this.aliases;
}
@@ -393,8 +393,7 @@ public class PutIndexTemplateRequest extends MasterNodeRequest<PutIndexTemplateR
* Sets the aliases that will be associated with the index when it gets created
*/
public PutIndexTemplateRequest aliases(BytesReference source) {
- try {
- XContentParser parser = XContentHelper.createParser(source);
+ try (XContentParser parser = XContentHelper.createParser(source)) {
//move to the first alias
parser.nextToken();
while ((parser.nextToken()) != XContentParser.Token.END_OBJECT) {
diff --git a/core/src/main/java/org/elasticsearch/cluster/ClusterState.java b/core/src/main/java/org/elasticsearch/cluster/ClusterState.java
index 3f9ef6a82b..ad79387ef3 100644
--- a/core/src/main/java/org/elasticsearch/cluster/ClusterState.java
+++ b/core/src/main/java/org/elasticsearch/cluster/ClusterState.java
@@ -22,6 +22,7 @@ package org.elasticsearch.cluster;
import com.carrotsearch.hppc.cursors.IntObjectCursor;
import com.carrotsearch.hppc.cursors.ObjectCursor;
import com.carrotsearch.hppc.cursors.ObjectObjectCursor;
+
import org.elasticsearch.cluster.block.ClusterBlock;
import org.elasticsearch.cluster.block.ClusterBlocks;
import org.elasticsearch.cluster.metadata.IndexMetaData;
@@ -440,8 +441,10 @@ public class ClusterState implements ToXContent, Diffable<ClusterState> {
builder.startObject("mappings");
for (ObjectObjectCursor<String, CompressedXContent> cursor1 : templateMetaData.mappings()) {
byte[] mappingSource = cursor1.value.uncompressed();
- XContentParser parser = XContentFactory.xContent(mappingSource).createParser(mappingSource);
- Map<String, Object> mapping = parser.map();
+ Map<String, Object> mapping;
+ try (XContentParser parser = XContentFactory.xContent(mappingSource).createParser(mappingSource)) {
+ mapping = parser.map();
+ }
if (mapping.size() == 1 && mapping.containsKey(cursor1.key)) {
// the type name is the root value, reduce it
mapping = (Map<String, Object>) mapping.get(cursor1.key);
@@ -470,8 +473,10 @@ public class ClusterState implements ToXContent, Diffable<ClusterState> {
builder.startObject("mappings");
for (ObjectObjectCursor<String, MappingMetaData> cursor : indexMetaData.getMappings()) {
byte[] mappingSource = cursor.value.source().uncompressed();
- XContentParser parser = XContentFactory.xContent(mappingSource).createParser(mappingSource);
- Map<String, Object> mapping = parser.map();
+ Map<String, Object> mapping;
+ try (XContentParser parser = XContentFactory.xContent(mappingSource).createParser(mappingSource)) {
+ mapping = parser.map();
+ }
if (mapping.size() == 1 && mapping.containsKey(cursor.key)) {
// the type name is the root value, reduce it
mapping = (Map<String, Object>) mapping.get(cursor.key);
diff --git a/core/src/main/java/org/elasticsearch/cluster/metadata/AliasMetaData.java b/core/src/main/java/org/elasticsearch/cluster/metadata/AliasMetaData.java
index c083396482..d6d13b55bd 100644
--- a/core/src/main/java/org/elasticsearch/cluster/metadata/AliasMetaData.java
+++ b/core/src/main/java/org/elasticsearch/cluster/metadata/AliasMetaData.java
@@ -290,10 +290,10 @@ public class AliasMetaData extends AbstractDiffable<AliasMetaData> {
builder.field("filter", aliasMetaData.filter.compressed());
} else {
byte[] data = aliasMetaData.filter().uncompressed();
- XContentParser parser = XContentFactory.xContent(data).createParser(data);
- Map<String, Object> filter = parser.mapOrdered();
- parser.close();
- builder.field("filter", filter);
+ try (XContentParser parser = XContentFactory.xContent(data).createParser(data)) {
+ Map<String, Object> filter = parser.mapOrdered();
+ builder.field("filter", filter);
+ }
}
}
if (aliasMetaData.indexRouting() != null) {
diff --git a/core/src/main/java/org/elasticsearch/cluster/metadata/AliasValidator.java b/core/src/main/java/org/elasticsearch/cluster/metadata/AliasValidator.java
index dd8da761df..a3d776a4ed 100644
--- a/core/src/main/java/org/elasticsearch/cluster/metadata/AliasValidator.java
+++ b/core/src/main/java/org/elasticsearch/cluster/metadata/AliasValidator.java
@@ -118,8 +118,7 @@ public class AliasValidator extends AbstractComponent {
*/
public void validateAliasFilter(String alias, String filter, QueryShardContext queryShardContext) {
assert queryShardContext != null;
- try {
- XContentParser parser = XContentFactory.xContent(filter).createParser(filter);
+ try (XContentParser parser = XContentFactory.xContent(filter).createParser(filter)) {
validateAliasFilter(parser, queryShardContext);
} catch (Throwable e) {
throw new IllegalArgumentException("failed to parse filter for alias [" + alias + "]", e);
@@ -133,8 +132,7 @@ public class AliasValidator extends AbstractComponent {
*/
public void validateAliasFilter(String alias, byte[] filter, QueryShardContext queryShardContext) {
assert queryShardContext != null;
- try {
- XContentParser parser = XContentFactory.xContent(filter).createParser(filter);
+ try (XContentParser parser = XContentFactory.xContent(filter).createParser(filter)) {
validateAliasFilter(parser, queryShardContext);
} catch (Throwable e) {
throw new IllegalArgumentException("failed to parse filter for alias [" + alias + "]", e);
diff --git a/core/src/main/java/org/elasticsearch/cluster/metadata/IndexMetaData.java b/core/src/main/java/org/elasticsearch/cluster/metadata/IndexMetaData.java
index d493e3f903..7d99f8fd74 100644
--- a/core/src/main/java/org/elasticsearch/cluster/metadata/IndexMetaData.java
+++ b/core/src/main/java/org/elasticsearch/cluster/metadata/IndexMetaData.java
@@ -23,6 +23,7 @@ import com.carrotsearch.hppc.LongArrayList;
import com.carrotsearch.hppc.cursors.IntObjectCursor;
import com.carrotsearch.hppc.cursors.ObjectCursor;
import com.carrotsearch.hppc.cursors.ObjectObjectCursor;
+
import org.elasticsearch.Version;
import org.elasticsearch.cluster.Diff;
import org.elasticsearch.cluster.Diffable;
@@ -927,10 +928,10 @@ public class IndexMetaData implements Diffable<IndexMetaData>, FromXContentBuild
builder.value(cursor.value.source().compressed());
} else {
byte[] data = cursor.value.source().uncompressed();
- XContentParser parser = XContentFactory.xContent(data).createParser(data);
- Map<String, Object> mapping = parser.mapOrdered();
- parser.close();
- builder.map(mapping);
+ try (XContentParser parser = XContentFactory.xContent(data).createParser(data)) {
+ Map<String, Object> mapping = parser.mapOrdered();
+ builder.map(mapping);
+ }
}
}
builder.endArray();
diff --git a/core/src/main/java/org/elasticsearch/cluster/metadata/IndexTemplateMetaData.java b/core/src/main/java/org/elasticsearch/cluster/metadata/IndexTemplateMetaData.java
index 6ae9a6746e..dce78a3dda 100644
--- a/core/src/main/java/org/elasticsearch/cluster/metadata/IndexTemplateMetaData.java
+++ b/core/src/main/java/org/elasticsearch/cluster/metadata/IndexTemplateMetaData.java
@@ -20,6 +20,7 @@ package org.elasticsearch.cluster.metadata;
import com.carrotsearch.hppc.cursors.ObjectCursor;
import com.carrotsearch.hppc.cursors.ObjectObjectCursor;
+
import org.elasticsearch.cluster.AbstractDiffable;
import org.elasticsearch.common.collect.ImmutableOpenMap;
import org.elasticsearch.common.collect.MapBuilder;
@@ -329,8 +330,10 @@ public class IndexTemplateMetaData extends AbstractDiffable<IndexTemplateMetaDat
builder.startObject("mappings");
for (ObjectObjectCursor<String, CompressedXContent> cursor : indexTemplateMetaData.mappings()) {
byte[] mappingSource = cursor.value.uncompressed();
- XContentParser parser = XContentFactory.xContent(mappingSource).createParser(mappingSource);
- Map<String, Object> mapping = parser.map();
+ Map<String, Object> mapping;
+ try (XContentParser parser = XContentFactory.xContent(mappingSource).createParser(mappingSource)) {;
+ mapping = parser.map();
+ }
if (mapping.size() == 1 && mapping.containsKey(cursor.key)) {
// the type name is the root value, reduce it
mapping = (Map<String, Object>) mapping.get(cursor.key);
diff --git a/core/src/main/java/org/elasticsearch/gateway/MetaDataStateFormat.java b/core/src/main/java/org/elasticsearch/gateway/MetaDataStateFormat.java
index 8795a7e7d1..9a78925368 100644
--- a/core/src/main/java/org/elasticsearch/gateway/MetaDataStateFormat.java
+++ b/core/src/main/java/org/elasticsearch/gateway/MetaDataStateFormat.java
@@ -295,15 +295,15 @@ public abstract class MetaDataStateFormat<T> {
try {
final Path stateFile = pathAndStateId.file;
final long id = pathAndStateId.id;
- final XContentParser parser;
if (pathAndStateId.legacy) { // read the legacy format -- plain XContent
final byte[] data = Files.readAllBytes(stateFile);
if (data.length == 0) {
logger.debug("{}: no data for [{}], ignoring...", prefix, stateFile.toAbsolutePath());
continue;
}
- parser = XContentHelper.createParser(new BytesArray(data));
- state = fromXContent(parser);
+ try (final XContentParser parser = XContentHelper.createParser(new BytesArray(data))) {
+ state = fromXContent(parser);
+ }
if (state == null) {
logger.debug("{}: no data for [{}], ignoring...", prefix, stateFile.toAbsolutePath());
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/GeoShapeQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/GeoShapeQueryBuilder.java
index 9f7b83c543..e1734394e5 100644
--- a/core/src/main/java/org/elasticsearch/index/query/GeoShapeQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/GeoShapeQueryBuilder.java
@@ -382,9 +382,7 @@ public class GeoShapeQueryBuilder extends AbstractQueryBuilder<GeoShapeQueryBuil
String[] pathElements = Strings.splitStringToArray(path, '.');
int currentPathSlot = 0;
- XContentParser parser = null;
- try {
- parser = XContentHelper.createParser(response.getSourceAsBytesRef());
+ try (XContentParser parser = XContentHelper.createParser(response.getSourceAsBytesRef())) {
XContentParser.Token currentToken;
while ((currentToken = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
if (currentToken == XContentParser.Token.FIELD_NAME) {
@@ -400,10 +398,6 @@ public class GeoShapeQueryBuilder extends AbstractQueryBuilder<GeoShapeQueryBuil
}
}
throw new IllegalStateException("Shape with name [" + getRequest.id() + "] found but missing " + path + " field");
- } finally {
- if (parser != null) {
- parser.close();
- }
}
}
diff --git a/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java
index b72122439b..901afd9fdd 100644
--- a/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java
@@ -425,10 +425,11 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
if (contentType == builder.contentType()) {
builder.rawField(Field.DOC.getPreferredName(), this.doc);
} else {
- XContentParser parser = XContentFactory.xContent(contentType).createParser(this.doc);
- parser.nextToken();
- builder.field(Field.DOC.getPreferredName());
- builder.copyCurrentStructure(parser);
+ try (XContentParser parser = XContentFactory.xContent(contentType).createParser(this.doc)) {
+ parser.nextToken();
+ builder.field(Field.DOC.getPreferredName());
+ builder.copyCurrentStructure(parser);
+ }
}
}
if (this.fields != null) {
diff --git a/core/src/main/java/org/elasticsearch/index/query/PercolatorQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/PercolatorQueryBuilder.java
index 4d20df3c97..82286c1035 100644
--- a/core/src/main/java/org/elasticsearch/index/query/PercolatorQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/PercolatorQueryBuilder.java
@@ -177,10 +177,11 @@ public class PercolatorQueryBuilder extends AbstractQueryBuilder<PercolatorQuery
if (contentType == builder.contentType()) {
builder.rawField(DOCUMENT_FIELD.getPreferredName(), document);
} else {
- XContentParser parser = XContentFactory.xContent(contentType).createParser(document);
- parser.nextToken();
- builder.field(DOCUMENT_FIELD.getPreferredName());
- builder.copyCurrentStructure(parser);
+ try (XContentParser parser = XContentFactory.xContent(contentType).createParser(document)) {
+ parser.nextToken();
+ builder.field(DOCUMENT_FIELD.getPreferredName());
+ builder.copyCurrentStructure(parser);
+ }
}
}
if (indexedDocumentIndex != null || indexedDocumentType != null || indexedDocumentId != null) {
diff --git a/core/src/main/java/org/elasticsearch/index/query/functionscore/DecayFunctionBuilder.java b/core/src/main/java/org/elasticsearch/index/query/functionscore/DecayFunctionBuilder.java
index 3b6b850aa1..2df87a0ad6 100644
--- a/core/src/main/java/org/elasticsearch/index/query/functionscore/DecayFunctionBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/functionscore/DecayFunctionBuilder.java
@@ -148,8 +148,9 @@ public abstract class DecayFunctionBuilder<DFB extends DecayFunctionBuilder<DFB>
public void doXContent(XContentBuilder builder, Params params) throws IOException {
builder.startObject(getName());
builder.field(fieldName);
- XContentParser parser = XContentFactory.xContent(functionBytes).createParser(functionBytes);
- builder.copyCurrentStructure(parser);
+ try (XContentParser parser = XContentFactory.xContent(functionBytes).createParser(functionBytes)) {
+ builder.copyCurrentStructure(parser);
+ }
builder.field(DecayFunctionParser.MULTI_VALUE_MODE.getPreferredName(), multiValueMode.name());
builder.endObject();
}
@@ -181,8 +182,11 @@ public abstract class DecayFunctionBuilder<DFB extends DecayFunctionBuilder<DFB>
@Override
protected ScoreFunction doToFunction(QueryShardContext context) throws IOException {
- XContentParser parser = XContentFactory.xContent(functionBytes).createParser(functionBytes);
- return parseVariable(fieldName, parser, context, multiValueMode);
+ AbstractDistanceScoreFunction scoreFunction;
+ try (XContentParser parser = XContentFactory.xContent(functionBytes).createParser(functionBytes)) {
+ scoreFunction = parseVariable(fieldName, parser, context, multiValueMode);
+ }
+ return scoreFunction;
}
/**
diff --git a/core/src/main/java/org/elasticsearch/rest/action/admin/indices/validate/template/RestRenderSearchTemplateAction.java b/core/src/main/java/org/elasticsearch/rest/action/admin/indices/validate/template/RestRenderSearchTemplateAction.java
index f130865752..1cbe7b9581 100644
--- a/core/src/main/java/org/elasticsearch/rest/action/admin/indices/validate/template/RestRenderSearchTemplateAction.java
+++ b/core/src/main/java/org/elasticsearch/rest/action/admin/indices/validate/template/RestRenderSearchTemplateAction.java
@@ -63,35 +63,40 @@ public class RestRenderSearchTemplateAction extends BaseRestHandler {
protected void handleRequest(RestRequest request, RestChannel channel, Client client) throws Exception {
RenderSearchTemplateRequest renderSearchTemplateRequest;
BytesReference source = RestActions.getRestContent(request);
- XContentParser parser = XContentFactory.xContent(source).createParser(source);
- String templateId = request.param("id");
- final Template template;
- if (templateId == null) {
- template = Template.parse(parser, parseFieldMatcher);
- } else {
- Map<String, Object> params = null;
- String currentFieldName = null;
- XContentParser.Token token = parser.nextToken();
- if (token != XContentParser.Token.START_OBJECT) {
- throw new ElasticsearchParseException("failed to parse request. request body must be an object but found [{}] instead", token);
- }
- while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
- if (token == XContentParser.Token.FIELD_NAME) {
- currentFieldName = parser.currentName();
- } else if (parseFieldMatcher.match(currentFieldName, ScriptField.PARAMS)) {
- if (token == XContentParser.Token.START_OBJECT) {
- params = parser.map();
+ try (XContentParser parser = XContentFactory.xContent(source).createParser(source)) {
+ String templateId = request.param("id");
+ final Template template;
+ if (templateId == null) {
+ template = Template.parse(parser, parseFieldMatcher);
+ } else {
+ Map<String, Object> params = null;
+ String currentFieldName = null;
+ XContentParser.Token token = parser.nextToken();
+ if (token != XContentParser.Token.START_OBJECT) {
+ throw new ElasticsearchParseException("failed to parse request. request body must be an object but found [{}] instead",
+ token);
+ }
+ while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
+ if (token == XContentParser.Token.FIELD_NAME) {
+ currentFieldName = parser.currentName();
+ } else if (parseFieldMatcher.match(currentFieldName, ScriptField.PARAMS)) {
+ if (token == XContentParser.Token.START_OBJECT) {
+ params = parser.map();
+ } else {
+ throw new ElasticsearchParseException(
+ "failed to parse request. field [{}] is expected to be an object, but found [{}] instead",
+ currentFieldName, token);
+ }
} else {
- throw new ElasticsearchParseException("failed to parse request. field [{}] is expected to be an object, but found [{}] instead", currentFieldName, token);
+ throw new ElasticsearchParseException("failed to parse request. unknown field [{}] of type [{}]", currentFieldName,
+ token);
}
- } else {
- throw new ElasticsearchParseException("failed to parse request. unknown field [{}] of type [{}]", currentFieldName, token);
}
+ template = new Template(templateId, ScriptType.INDEXED, Template.DEFAULT_LANG, null, params);
}
- template = new Template(templateId, ScriptType.INDEXED, Template.DEFAULT_LANG, null, params);
+ renderSearchTemplateRequest = new RenderSearchTemplateRequest();
+ renderSearchTemplateRequest.template(template);
}
- renderSearchTemplateRequest = new RenderSearchTemplateRequest();
- renderSearchTemplateRequest.template(template);
client.admin().cluster().renderSearchTemplate(renderSearchTemplateRequest, new RestBuilderListener<RenderSearchTemplateResponse>(channel) {
@Override
diff --git a/core/src/main/java/org/elasticsearch/script/ScriptService.java b/core/src/main/java/org/elasticsearch/script/ScriptService.java
index 8d37783d7c..fc37590160 100644
--- a/core/src/main/java/org/elasticsearch/script/ScriptService.java
+++ b/core/src/main/java/org/elasticsearch/script/ScriptService.java
@@ -361,8 +361,7 @@ public class ScriptService extends AbstractComponent implements Closeable {
}
private void validate(BytesReference scriptBytes, String scriptLang) {
- try {
- XContentParser parser = XContentFactory.xContent(scriptBytes).createParser(scriptBytes);
+ try (XContentParser parser = XContentFactory.xContent(scriptBytes).createParser(scriptBytes)) {
parser.nextToken();
Template template = TemplateQueryBuilder.parse(scriptLang, parser, parseFieldMatcher, "params", "script", "template");
if (Strings.hasLength(template.getScript())) {
diff --git a/core/src/main/java/org/elasticsearch/search/SearchService.java b/core/src/main/java/org/elasticsearch/search/SearchService.java
index 7f2cd4c4c1..c03a13b5ee 100644
--- a/core/src/main/java/org/elasticsearch/search/SearchService.java
+++ b/core/src/main/java/org/elasticsearch/search/SearchService.java
@@ -811,6 +811,10 @@ public class SearchService extends AbstractLifecycleComponent<SearchService> imp
}
XContentLocation location = extParser != null ? extParser.getTokenLocation() : null;
throw new SearchParseException(context, "failed to parse ext source [" + sSource + "]", location, e);
+ } finally {
+ if (extParser != null) {
+ extParser.close();
+ }
}
}
if (source.version() != null) {
diff --git a/core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java b/core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java
index a39d0273c2..3675320184 100644
--- a/core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java
+++ b/core/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java
@@ -1257,9 +1257,10 @@ public final class SearchSourceBuilder extends ToXContentToBytes implements Writ
if (ext != null) {
builder.field(EXT_FIELD.getPreferredName());
- XContentParser parser = XContentFactory.xContent(XContentType.JSON).createParser(ext);
- parser.nextToken();
- builder.copyCurrentStructure(parser);
+ try (XContentParser parser = XContentFactory.xContent(XContentType.JSON).createParser(ext)) {
+ parser.nextToken();
+ builder.copyCurrentStructure(parser);
+ }
}
}
diff --git a/core/src/main/java/org/elasticsearch/search/suggest/completion/CompletionSuggestionBuilder.java b/core/src/main/java/org/elasticsearch/search/suggest/completion/CompletionSuggestionBuilder.java
index ce75351dfb..2d9307a882 100644
--- a/core/src/main/java/org/elasticsearch/search/suggest/completion/CompletionSuggestionBuilder.java
+++ b/core/src/main/java/org/elasticsearch/search/suggest/completion/CompletionSuggestionBuilder.java
@@ -255,9 +255,10 @@ public class CompletionSuggestionBuilder extends SuggestionBuilder<CompletionSug
regexOptions.toXContent(builder, params);
}
if (contextBytes != null) {
- XContentParser contextParser = XContentFactory.xContent(XContentType.JSON).createParser(contextBytes);
- builder.field(CONTEXTS_FIELD.getPreferredName());
- builder.copyCurrentStructure(contextParser);
+ try (XContentParser contextParser = XContentFactory.xContent(XContentType.JSON).createParser(contextBytes)) {
+ builder.field(CONTEXTS_FIELD.getPreferredName());
+ builder.copyCurrentStructure(contextParser);
+ }
}
return builder;
}