Skip to content

Commit c6a113b

Browse files
committed
defaults to checkTrailingTokens for SearchSourceBuilder#fromXContent
1 parent 267b718 commit c6a113b

9 files changed

Lines changed: 21 additions & 16 deletions

File tree

client/rest-high-level/src/test/java/org/elasticsearch/client/RequestTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1155,7 +1155,7 @@ public void testMultiSearch() throws IOException {
11551155

11561156
List<SearchRequest> requests = new ArrayList<>();
11571157
CheckedBiConsumer<SearchRequest, XContentParser, IOException> consumer = (searchRequest, p) -> {
1158-
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(p);
1158+
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(p, false);
11591159
if (searchSourceBuilder.equals(new SearchSourceBuilder()) == false) {
11601160
searchRequest.source(searchSourceBuilder);
11611161
}

modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TransportSearchTemplateAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ static SearchRequest convert(SearchTemplateRequest searchTemplateRequest, Search
112112
try (XContentParser parser = XContentFactory.xContent(XContentType.JSON)
113113
.createParser(xContentRegistry, LoggingDeprecationHandler.INSTANCE, source)) {
114114
SearchSourceBuilder builder = SearchSourceBuilder.searchSource();
115-
builder.parseXContent(parser);
115+
builder.parseXContent(parser, true);
116116
builder.explain(searchTemplateRequest.isExplain());
117117
builder.profile(searchTemplateRequest.isProfile());
118118
searchRequest.source(builder);

modules/rank-eval/src/main/java/org/elasticsearch/index/rankeval/RatedRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ public void addSummaryFields(List<String> summaryFields) {
223223
return RatedDocument.fromXContent(p);
224224
}, RATINGS_FIELD);
225225
PARSER.declareObject(ConstructingObjectParser.optionalConstructorArg(), (p, c) ->
226-
SearchSourceBuilder.fromXContent(p), REQUEST_FIELD);
226+
SearchSourceBuilder.fromXContent(p, false), REQUEST_FIELD);
227227
PARSER.declareObject(ConstructingObjectParser.optionalConstructorArg(), (p, c) -> p.map(), PARAMS_FIELD);
228228
PARSER.declareStringArray(RatedRequest::addSummaryFields, FIELDS_FIELD);
229229
PARSER.declareString(ConstructingObjectParser.optionalConstructorArg(), TEMPLATE_ID_FIELD);

modules/rank-eval/src/main/java/org/elasticsearch/index/rankeval/TransportRankEvalAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ protected void doExecute(RankEvalRequest request, ActionListener<RankEvalRespons
107107
String resolvedRequest = templateScript.newInstance(params).execute();
108108
try (XContentParser subParser = createParser(namedXContentRegistry,
109109
LoggingDeprecationHandler.INSTANCE, new BytesArray(resolvedRequest), XContentType.JSON)) {
110-
ratedSearchSource = SearchSourceBuilder.fromXContent(subParser);
110+
ratedSearchSource = SearchSourceBuilder.fromXContent(subParser, false);
111111
} catch (IOException e) {
112112
// if we fail parsing, put the exception into the errors map and continue
113113
errors.put(ratedRequest.getId(), e);

modules/reindex/src/main/java/org/elasticsearch/index/reindex/RestReindexAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public class RestReindexAction extends AbstractBaseReindexRestHandler<ReindexReq
7777
try (InputStream stream = BytesReference.bytes(builder).streamInput();
7878
XContentParser innerParser = parser.contentType().xContent()
7979
.createParser(parser.getXContentRegistry(), parser.getDeprecationHandler(), stream)) {
80-
request.getSearchRequest().source().parseXContent(innerParser);
80+
request.getSearchRequest().source().parseXContent(innerParser, false);
8181
}
8282
};
8383

server/src/main/java/org/elasticsearch/rest/action/search/RestMultiSearchAction.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public static MultiSearchRequest parseRequest(RestRequest restRequest, boolean a
9494

9595

9696
parseMultiLineRequest(restRequest, multiRequest.indicesOptions(), allowExplicitIndex, (searchRequest, parser) -> {
97-
searchRequest.source(SearchSourceBuilder.fromXContent(parser));
97+
searchRequest.source(SearchSourceBuilder.fromXContent(parser, false));
9898
multiRequest.add(searchRequest);
9999
});
100100
List<SearchRequest> requests = multiRequest.requests();

server/src/main/java/org/elasticsearch/search/builder/SearchSourceBuilder.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,12 @@ public final class SearchSourceBuilder implements Writeable, ToXContentObject, R
111111
public static final ParseField ALL_FIELDS_FIELDS = new ParseField("all_fields");
112112

113113
public static SearchSourceBuilder fromXContent(XContentParser parser) throws IOException {
114+
return fromXContent(parser, true);
115+
}
116+
117+
public static SearchSourceBuilder fromXContent(XContentParser parser, boolean checkTrailingTokens) throws IOException {
114118
SearchSourceBuilder builder = new SearchSourceBuilder();
115-
builder.parseXContent(parser);
119+
builder.parseXContent(parser, checkTrailingTokens);
116120
return builder;
117121
}
118122

@@ -952,15 +956,16 @@ private SearchSourceBuilder shallowCopy(QueryBuilder queryBuilder, QueryBuilder
952956
}
953957

954958
public void parseXContent(XContentParser parser) throws IOException {
955-
parseXContent(parser, false);
959+
parseXContent(parser, true);
956960
}
957961

958962
/**
959963
* Parse some xContent into this SearchSourceBuilder, overwriting any values specified in the xContent. Use this if you need to set up
960-
* different defaults than a regular SearchSourceBuilder would have and use {@link #fromXContent(XContentParser)} if you have normal
961-
* defaults.
964+
* different defaults than a regular SearchSourceBuilder would have and use {@link #fromXContent(XContentParser, boolean)} if you have
965+
* normal defaults.
966+
*
962967
* @param parser The xContent parser.
963-
* @param checkTrailingTokens If true throws a parsing exception when extra tokens are found the main object.
968+
* @param checkTrailingTokens If true throws a parsing exception when extra tokens are found after the main object.
964969
*/
965970
public void parseXContent(XContentParser parser, boolean checkTrailingTokens) throws IOException {
966971
XContentParser.Token token = parser.currentToken();

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ public void testResponseErrorToXContent() throws IOException {
165165
new MultiSearchResponse.Item(null, new IllegalStateException("baaaaaazzzz"))
166166
}, tookInMillis);
167167

168-
assertEquals("{\"took\":"
168+
assertEquals("{\"took\":"
169169
+ tookInMillis
170170
+ ",\"responses\":["
171171
+ "{"
@@ -225,7 +225,7 @@ public void testMultiLineSerialization() throws IOException {
225225
byte[] originalBytes = MultiSearchRequest.writeMultiLineFormat(originalRequest, xContentType.xContent());
226226
MultiSearchRequest parsedRequest = new MultiSearchRequest();
227227
CheckedBiConsumer<SearchRequest, XContentParser, IOException> consumer = (r, p) -> {
228-
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(p);
228+
SearchSourceBuilder searchSourceBuilder = SearchSourceBuilder.fromXContent(p, false);
229229
if (searchSourceBuilder.equals(new SearchSourceBuilder()) == false) {
230230
r.source(searchSourceBuilder);
231231
}
@@ -273,7 +273,7 @@ private static MultiSearchRequest createMultiSearchRequest() throws IOException
273273
if (randomBoolean()) {
274274
searchRequest.allowPartialSearchResults(true);
275275
}
276-
276+
277277
// scroll is not supported in the current msearch api, so unset it:
278278
searchRequest.scroll((Scroll) null);
279279

server/src/test/java/org/elasticsearch/search/builder/SearchSourceBuilderTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,12 @@ public void testFromXContent() throws IOException {
7070

7171
public void testFromXContentInvalid() throws IOException {
7272
try (XContentParser parser = createParser(JsonXContent.jsonXContent, "{}}")) {
73-
JsonParseException exc = expectThrows(JsonParseException.class, () -> new SearchSourceBuilder().parseXContent(parser, true));
73+
JsonParseException exc = expectThrows(JsonParseException.class, () -> SearchSourceBuilder.fromXContent(parser));
7474
assertThat(exc.getMessage(), containsString("Unexpected close marker"));
7575
}
7676

7777
try (XContentParser parser = createParser(JsonXContent.jsonXContent, "{}{}")) {
78-
ParsingException exc = expectThrows(ParsingException.class, () -> new SearchSourceBuilder().parseXContent(parser, true));
78+
ParsingException exc = expectThrows(ParsingException.class, () -> SearchSourceBuilder.fromXContent(parser));
7979
assertThat(exc.getDetailedMessage(), containsString("found after the main object"));
8080
}
8181
}

0 commit comments

Comments
 (0)