Skip to content

Commit a3db0c7

Browse files
Move more XContent parser code that is test-only into test module (#104338)
Just another round of #104261
1 parent ebe71f9 commit a3db0c7

File tree

19 files changed

+403
-438
lines changed

19 files changed

+403
-438
lines changed

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

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import org.elasticsearch.ExceptionsHelper;
1313
import org.elasticsearch.TransportVersions;
1414
import org.elasticsearch.action.ActionResponse;
15-
import org.elasticsearch.action.search.MultiSearchResponse;
1615
import org.elasticsearch.common.Strings;
1716
import org.elasticsearch.common.collect.Iterators;
1817
import org.elasticsearch.common.io.stream.StreamInput;
@@ -26,7 +25,6 @@
2625
import org.elasticsearch.xcontent.ToXContent;
2726
import org.elasticsearch.xcontent.ToXContentObject;
2827
import org.elasticsearch.xcontent.XContentBuilder;
29-
import org.elasticsearch.xcontent.XContentParser;
3028

3129
import java.io.IOException;
3230
import java.util.Iterator;
@@ -204,28 +202,6 @@ static final class Fields {
204202
static final String STATUS = "status";
205203
}
206204

207-
public static MultiSearchTemplateResponse fromXContext(XContentParser parser) {
208-
// The MultiSearchTemplateResponse is identical to the multi search response so we reuse the parsing logic in multi search response
209-
MultiSearchResponse mSearchResponse = MultiSearchResponse.fromXContext(parser);
210-
try {
211-
org.elasticsearch.action.search.MultiSearchResponse.Item[] responses = mSearchResponse.getResponses();
212-
Item[] templateResponses = new Item[responses.length];
213-
int i = 0;
214-
for (org.elasticsearch.action.search.MultiSearchResponse.Item item : responses) {
215-
SearchTemplateResponse stResponse = null;
216-
if (item.getResponse() != null) {
217-
stResponse = new SearchTemplateResponse();
218-
stResponse.setResponse(item.getResponse());
219-
item.getResponse().incRef();
220-
}
221-
templateResponses[i++] = new Item(stResponse, item.getFailure());
222-
}
223-
return new MultiSearchTemplateResponse(templateResponses, mSearchResponse.getTook().millis());
224-
} finally {
225-
mSearchResponse.decRef();
226-
}
227-
}
228-
229205
@Override
230206
public String toString() {
231207
return Strings.toString(this);

modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/MultiSearchTemplateResponseTests.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
package org.elasticsearch.script.mustache;
99

1010
import org.elasticsearch.ElasticsearchException;
11+
import org.elasticsearch.action.search.MultiSearchResponse;
1112
import org.elasticsearch.action.search.SearchResponse;
1213
import org.elasticsearch.action.search.ShardSearchFailure;
1314
import org.elasticsearch.common.Strings;
@@ -95,8 +96,26 @@ private static MultiSearchTemplateResponse createTestInstanceWithFailures() {
9596
}
9697

9798
@Override
98-
protected MultiSearchTemplateResponse doParseInstance(XContentParser parser) throws IOException {
99-
return MultiSearchTemplateResponse.fromXContext(parser);
99+
protected MultiSearchTemplateResponse doParseInstance(XContentParser parser) {
100+
// The MultiSearchTemplateResponse is identical to the multi search response so we reuse the parsing logic in multi search response
101+
MultiSearchResponse mSearchResponse = MultiSearchResponse.fromXContext(parser);
102+
try {
103+
org.elasticsearch.action.search.MultiSearchResponse.Item[] responses = mSearchResponse.getResponses();
104+
MultiSearchTemplateResponse.Item[] templateResponses = new MultiSearchTemplateResponse.Item[responses.length];
105+
int i = 0;
106+
for (org.elasticsearch.action.search.MultiSearchResponse.Item item : responses) {
107+
SearchTemplateResponse stResponse = null;
108+
if (item.getResponse() != null) {
109+
stResponse = new SearchTemplateResponse();
110+
stResponse.setResponse(item.getResponse());
111+
item.getResponse().incRef();
112+
}
113+
templateResponses[i++] = new MultiSearchTemplateResponse.Item(stResponse, item.getFailure());
114+
}
115+
return new MultiSearchTemplateResponse(templateResponses, mSearchResponse.getTook().millis());
116+
} finally {
117+
mSearchResponse.decRef();
118+
}
100119
}
101120

102121
@Override

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

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,13 @@
1414
import org.elasticsearch.common.io.stream.StreamInput;
1515
import org.elasticsearch.common.io.stream.StreamOutput;
1616
import org.elasticsearch.common.util.Maps;
17-
import org.elasticsearch.common.xcontent.XContentParserUtils;
18-
import org.elasticsearch.core.Tuple;
19-
import org.elasticsearch.xcontent.ConstructingObjectParser;
20-
import org.elasticsearch.xcontent.ParseField;
2117
import org.elasticsearch.xcontent.ToXContentObject;
2218
import org.elasticsearch.xcontent.XContentBuilder;
23-
import org.elasticsearch.xcontent.XContentParser;
2419

2520
import java.io.IOException;
2621
import java.util.Collections;
2722
import java.util.HashMap;
28-
import java.util.List;
2923
import java.util.Map;
30-
import java.util.function.Function;
31-
import java.util.stream.Collectors;
3224

3325
/**
3426
* Returns the results for a {@link RankEvalRequest}.<br>
@@ -111,37 +103,4 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
111103
builder.endObject();
112104
return builder;
113105
}
114-
115-
private static final ParseField DETAILS_FIELD = new ParseField("details");
116-
private static final ParseField FAILURES_FIELD = new ParseField("failures");
117-
@SuppressWarnings("unchecked")
118-
private static final ConstructingObjectParser<RankEvalResponse, Void> PARSER = new ConstructingObjectParser<>(
119-
"rank_eval_response",
120-
true,
121-
a -> new RankEvalResponse(
122-
(Double) a[0],
123-
((List<EvalQueryQuality>) a[1]).stream().collect(Collectors.toMap(EvalQueryQuality::getId, Function.identity())),
124-
((List<Tuple<String, Exception>>) a[2]).stream().collect(Collectors.toMap(Tuple::v1, Tuple::v2))
125-
)
126-
);
127-
static {
128-
PARSER.declareDouble(ConstructingObjectParser.constructorArg(), EvalQueryQuality.METRIC_SCORE_FIELD);
129-
PARSER.declareNamedObjects(
130-
ConstructingObjectParser.optionalConstructorArg(),
131-
(p, c, n) -> EvalQueryQuality.fromXContent(p, n),
132-
DETAILS_FIELD
133-
);
134-
PARSER.declareNamedObjects(ConstructingObjectParser.optionalConstructorArg(), (p, c, n) -> {
135-
XContentParserUtils.ensureExpectedToken(XContentParser.Token.START_OBJECT, p.nextToken(), p);
136-
XContentParserUtils.ensureExpectedToken(XContentParser.Token.FIELD_NAME, p.nextToken(), p);
137-
Tuple<String, ElasticsearchException> tuple = new Tuple<>(n, ElasticsearchException.failureFromXContent(p));
138-
XContentParserUtils.ensureExpectedToken(XContentParser.Token.END_OBJECT, p.nextToken(), p);
139-
return tuple;
140-
}, FAILURES_FIELD);
141-
142-
}
143-
144-
public static RankEvalResponse fromXContent(XContentParser parser) throws IOException {
145-
return PARSER.apply(parser, null);
146-
}
147106
}

modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/RankEvalResponseTests.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,14 @@
2121
import org.elasticsearch.common.io.stream.StreamInput;
2222
import org.elasticsearch.common.util.Maps;
2323
import org.elasticsearch.common.xcontent.XContentHelper;
24+
import org.elasticsearch.common.xcontent.XContentParserUtils;
25+
import org.elasticsearch.core.Tuple;
2426
import org.elasticsearch.index.shard.ShardId;
2527
import org.elasticsearch.search.SearchHit;
2628
import org.elasticsearch.search.SearchShardTarget;
2729
import org.elasticsearch.test.ESTestCase;
30+
import org.elasticsearch.xcontent.ConstructingObjectParser;
31+
import org.elasticsearch.xcontent.ParseField;
2832
import org.elasticsearch.xcontent.ToXContent;
2933
import org.elasticsearch.xcontent.XContentBuilder;
3034
import org.elasticsearch.xcontent.XContentFactory;
@@ -39,7 +43,9 @@
3943
import java.util.List;
4044
import java.util.Map;
4145
import java.util.OptionalInt;
46+
import java.util.function.Function;
4247
import java.util.function.Predicate;
48+
import java.util.stream.Collectors;
4349

4450
import static java.util.Collections.singleton;
4551
import static org.elasticsearch.common.xcontent.XContentHelper.toXContent;
@@ -49,6 +55,32 @@
4955

5056
public class RankEvalResponseTests extends ESTestCase {
5157

58+
@SuppressWarnings("unchecked")
59+
private static final ConstructingObjectParser<RankEvalResponse, Void> PARSER = new ConstructingObjectParser<>(
60+
"rank_eval_response",
61+
true,
62+
a -> new RankEvalResponse(
63+
(Double) a[0],
64+
((List<EvalQueryQuality>) a[1]).stream().collect(Collectors.toMap(EvalQueryQuality::getId, Function.identity())),
65+
((List<Tuple<String, Exception>>) a[2]).stream().collect(Collectors.toMap(Tuple::v1, Tuple::v2))
66+
)
67+
);
68+
static {
69+
PARSER.declareDouble(ConstructingObjectParser.constructorArg(), EvalQueryQuality.METRIC_SCORE_FIELD);
70+
PARSER.declareNamedObjects(
71+
ConstructingObjectParser.optionalConstructorArg(),
72+
(p, c, n) -> EvalQueryQuality.fromXContent(p, n),
73+
new ParseField("details")
74+
);
75+
PARSER.declareNamedObjects(ConstructingObjectParser.optionalConstructorArg(), (p, c, n) -> {
76+
XContentParserUtils.ensureExpectedToken(XContentParser.Token.START_OBJECT, p.nextToken(), p);
77+
XContentParserUtils.ensureExpectedToken(XContentParser.Token.FIELD_NAME, p.nextToken(), p);
78+
Tuple<String, ElasticsearchException> tuple = new Tuple<>(n, ElasticsearchException.failureFromXContent(p));
79+
XContentParserUtils.ensureExpectedToken(XContentParser.Token.END_OBJECT, p.nextToken(), p);
80+
return tuple;
81+
}, new ParseField("failures"));
82+
}
83+
5284
private static final Exception[] RANDOM_EXCEPTIONS = new Exception[] {
5385
new ClusterBlockException(singleton(NoMasterBlockService.NO_MASTER_BLOCK_WRITES)),
5486
new CircuitBreakingException("Data too large", 123, 456, CircuitBreaker.Durability.PERMANENT),
@@ -117,7 +149,7 @@ public void testXContentParsing() throws IOException {
117149
BytesReference withRandomFields = insertRandomFields(xContentType, originalBytes, pathsToExclude, random());
118150
RankEvalResponse parsedItem;
119151
try (XContentParser parser = createParser(xContentType.xContent(), withRandomFields)) {
120-
parsedItem = RankEvalResponse.fromXContent(parser);
152+
parsedItem = PARSER.apply(parser, null);
121153
assertNull(parser.nextToken());
122154
}
123155
assertNotSame(testItem, parsedItem);

server/src/main/java/org/elasticsearch/action/admin/cluster/storedscripts/GetScriptLanguageResponse.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import org.elasticsearch.script.ScriptLanguagesInfo;
1616
import org.elasticsearch.xcontent.ToXContentObject;
1717
import org.elasticsearch.xcontent.XContentBuilder;
18-
import org.elasticsearch.xcontent.XContentParser;
1918

2019
import java.io.IOException;
2120
import java.util.Objects;
@@ -37,10 +36,6 @@ public void writeTo(StreamOutput out) throws IOException {
3736
info.writeTo(out);
3837
}
3938

40-
public static GetScriptLanguageResponse fromXContent(XContentParser parser) throws IOException {
41-
return new GetScriptLanguageResponse(ScriptLanguagesInfo.fromXContent(parser));
42-
}
43-
4439
@Override
4540
public boolean equals(Object o) {
4641
if (this == o) return true;

server/src/main/java/org/elasticsearch/action/admin/cluster/storedscripts/GetStoredScriptResponse.java

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -13,47 +13,19 @@
1313
import org.elasticsearch.common.io.stream.StreamOutput;
1414
import org.elasticsearch.rest.RestStatus;
1515
import org.elasticsearch.script.StoredScriptSource;
16-
import org.elasticsearch.xcontent.ConstructingObjectParser;
17-
import org.elasticsearch.xcontent.ObjectParser;
1816
import org.elasticsearch.xcontent.ParseField;
1917
import org.elasticsearch.xcontent.ToXContentObject;
2018
import org.elasticsearch.xcontent.XContentBuilder;
21-
import org.elasticsearch.xcontent.XContentParser;
2219

2320
import java.io.IOException;
2421
import java.util.Objects;
2522

26-
import static org.elasticsearch.xcontent.ConstructingObjectParser.constructorArg;
27-
import static org.elasticsearch.xcontent.ConstructingObjectParser.optionalConstructorArg;
28-
2923
public class GetStoredScriptResponse extends ActionResponse implements ToXContentObject {
3024

3125
public static final ParseField _ID_PARSE_FIELD = new ParseField("_id");
3226
public static final ParseField FOUND_PARSE_FIELD = new ParseField("found");
3327
public static final ParseField SCRIPT = new ParseField("script");
3428

35-
private static final ConstructingObjectParser<GetStoredScriptResponse, String> PARSER = new ConstructingObjectParser<>(
36-
"GetStoredScriptResponse",
37-
true,
38-
(a, c) -> {
39-
String id = (String) a[0];
40-
boolean found = (Boolean) a[1];
41-
StoredScriptSource scriptSource = (StoredScriptSource) a[2];
42-
return found ? new GetStoredScriptResponse(id, scriptSource) : new GetStoredScriptResponse(id, null);
43-
}
44-
);
45-
46-
static {
47-
PARSER.declareField(constructorArg(), (p, c) -> p.text(), _ID_PARSE_FIELD, ObjectParser.ValueType.STRING);
48-
PARSER.declareField(constructorArg(), (p, c) -> p.booleanValue(), FOUND_PARSE_FIELD, ObjectParser.ValueType.BOOLEAN);
49-
PARSER.declareField(
50-
optionalConstructorArg(),
51-
(p, c) -> StoredScriptSource.fromXContent(p, true),
52-
SCRIPT,
53-
ObjectParser.ValueType.OBJECT
54-
);
55-
}
56-
5729
private String id;
5830
private StoredScriptSource source;
5931

@@ -103,10 +75,6 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
10375
return builder;
10476
}
10577

106-
public static GetStoredScriptResponse fromXContent(XContentParser parser) throws IOException {
107-
return PARSER.parse(parser, null);
108-
}
109-
11078
@Override
11179
public void writeTo(StreamOutput out) throws IOException {
11280
if (source == null) {

0 commit comments

Comments
 (0)