From 68de46ff05ed75987997eba1b836d076bc281fed Mon Sep 17 00:00:00 2001 From: Boaz Leskes Date: Sat, 26 Oct 2013 22:19:05 +0200 Subject: [PATCH] Use XContentParser.isBooleanValue to detect all boolean values for the `_source` parameter for both _mget and _search Closes #3981 --- .../java/org/elasticsearch/action/get/MultiGetRequest.java | 4 +++- .../search/fetch/source/FetchSourceParseElement.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/elasticsearch/action/get/MultiGetRequest.java b/src/main/java/org/elasticsearch/action/get/MultiGetRequest.java index 290ef767d67..629273e948e 100644 --- a/src/main/java/org/elasticsearch/action/get/MultiGetRequest.java +++ b/src/main/java/org/elasticsearch/action/get/MultiGetRequest.java @@ -322,10 +322,12 @@ public class MultiGetRequest extends ActionRequest { } else if ("_version_type".equals(currentFieldName) || "_versionType".equals(currentFieldName) || "version_type".equals(currentFieldName) || "versionType".equals(currentFieldName)) { versionType = VersionType.fromString(parser.text()); } else if ("_source".equals(currentFieldName)) { - if (token == XContentParser.Token.VALUE_BOOLEAN) { + if (parser.isBooleanValue()) { fetchSourceContext = new FetchSourceContext(parser.booleanValue()); } else if (token == XContentParser.Token.VALUE_STRING) { fetchSourceContext = new FetchSourceContext(new String[]{parser.text()}); + } else { + throw new ElasticSearchParseException("illegal type for _source: [" + token + "]"); } } } else if (token == XContentParser.Token.START_ARRAY) { diff --git a/src/main/java/org/elasticsearch/search/fetch/source/FetchSourceParseElement.java b/src/main/java/org/elasticsearch/search/fetch/source/FetchSourceParseElement.java index 23e97ba58de..a6a87511d1b 100644 --- a/src/main/java/org/elasticsearch/search/fetch/source/FetchSourceParseElement.java +++ b/src/main/java/org/elasticsearch/search/fetch/source/FetchSourceParseElement.java @@ -48,7 +48,7 @@ public class FetchSourceParseElement implements SearchParseElement { List includes = null, excludes = null; String currentFieldName = null; token = parser.currentToken(); // we get it on the value - if (token == XContentParser.Token.VALUE_BOOLEAN) { + if (parser.isBooleanValue()) { context.fetchSourceContext(new FetchSourceContext(parser.booleanValue())); return; } else if (token == XContentParser.Token.VALUE_STRING) {