Skip to content

Commit d2447c7

Browse files
Move field_caps parsers to test codebase (#113310)
The parsing logic is test only at this point, lets move it to tests accordingly to keep the prod codebase a little smaller. Also fixed a missing `static`.
1 parent 2380778 commit d2447c7

File tree

11 files changed

+156
-150
lines changed

11 files changed

+156
-150
lines changed

server/src/main/java/org/elasticsearch/action/fieldcaps/FieldCapabilities.java

Lines changed: 11 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,10 @@
1616
import org.elasticsearch.common.io.stream.Writeable;
1717
import org.elasticsearch.core.Predicates;
1818
import org.elasticsearch.index.mapper.TimeSeriesParams;
19-
import org.elasticsearch.xcontent.ConstructingObjectParser;
20-
import org.elasticsearch.xcontent.InstantiatingObjectParser;
2119
import org.elasticsearch.xcontent.ParseField;
2220
import org.elasticsearch.xcontent.ParserConstructor;
2321
import org.elasticsearch.xcontent.ToXContentObject;
2422
import org.elasticsearch.xcontent.XContentBuilder;
25-
import org.elasticsearch.xcontent.XContentParser;
2623

2724
import java.io.IOException;
2825
import java.util.ArrayList;
@@ -46,18 +43,17 @@
4643
*/
4744
public class FieldCapabilities implements Writeable, ToXContentObject {
4845

49-
private static final ParseField TYPE_FIELD = new ParseField("type");
50-
private static final ParseField IS_METADATA_FIELD = new ParseField("metadata_field");
51-
private static final ParseField SEARCHABLE_FIELD = new ParseField("searchable");
52-
private static final ParseField AGGREGATABLE_FIELD = new ParseField("aggregatable");
53-
private static final ParseField TIME_SERIES_DIMENSION_FIELD = new ParseField(TIME_SERIES_DIMENSION_PARAM);
54-
private static final ParseField TIME_SERIES_METRIC_FIELD = new ParseField(TIME_SERIES_METRIC_PARAM);
55-
private static final ParseField INDICES_FIELD = new ParseField("indices");
56-
private static final ParseField NON_SEARCHABLE_INDICES_FIELD = new ParseField("non_searchable_indices");
57-
private static final ParseField NON_AGGREGATABLE_INDICES_FIELD = new ParseField("non_aggregatable_indices");
58-
private static final ParseField NON_DIMENSION_INDICES_FIELD = new ParseField("non_dimension_indices");
59-
private static final ParseField METRIC_CONFLICTS_INDICES_FIELD = new ParseField("metric_conflicts_indices");
60-
private static final ParseField META_FIELD = new ParseField("meta");
46+
public static final ParseField TYPE_FIELD = new ParseField("type");
47+
public static final ParseField IS_METADATA_FIELD = new ParseField("metadata_field");
48+
public static final ParseField SEARCHABLE_FIELD = new ParseField("searchable");
49+
public static final ParseField AGGREGATABLE_FIELD = new ParseField("aggregatable");
50+
public static final ParseField TIME_SERIES_DIMENSION_FIELD = new ParseField(TIME_SERIES_DIMENSION_PARAM);
51+
public static final ParseField TIME_SERIES_METRIC_FIELD = new ParseField(TIME_SERIES_METRIC_PARAM);
52+
public static final ParseField INDICES_FIELD = new ParseField("indices");
53+
public static final ParseField NON_SEARCHABLE_INDICES_FIELD = new ParseField("non_searchable_indices");
54+
public static final ParseField NON_AGGREGATABLE_INDICES_FIELD = new ParseField("non_aggregatable_indices");
55+
public static final ParseField NON_DIMENSION_INDICES_FIELD = new ParseField("non_dimension_indices");
56+
public static final ParseField METRIC_CONFLICTS_INDICES_FIELD = new ParseField("metric_conflicts_indices");
6157

6258
private final String name;
6359
private final String type;
@@ -312,37 +308,6 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
312308
return builder;
313309
}
314310

315-
public static FieldCapabilities fromXContent(String name, XContentParser parser) throws IOException {
316-
return PARSER.parse(parser, name);
317-
}
318-
319-
private static final InstantiatingObjectParser<FieldCapabilities, String> PARSER;
320-
321-
static {
322-
InstantiatingObjectParser.Builder<FieldCapabilities, String> parser = InstantiatingObjectParser.builder(
323-
"field_capabilities",
324-
true,
325-
FieldCapabilities.class
326-
);
327-
parser.declareString(ConstructingObjectParser.constructorArg(), TYPE_FIELD);
328-
parser.declareBoolean(ConstructingObjectParser.optionalConstructorArg(), IS_METADATA_FIELD);
329-
parser.declareBoolean(ConstructingObjectParser.constructorArg(), SEARCHABLE_FIELD);
330-
parser.declareBoolean(ConstructingObjectParser.constructorArg(), AGGREGATABLE_FIELD);
331-
parser.declareBoolean(ConstructingObjectParser.optionalConstructorArg(), TIME_SERIES_DIMENSION_FIELD);
332-
parser.declareString(ConstructingObjectParser.optionalConstructorArg(), TIME_SERIES_METRIC_FIELD);
333-
parser.declareStringArray(ConstructingObjectParser.optionalConstructorArg(), INDICES_FIELD);
334-
parser.declareStringArray(ConstructingObjectParser.optionalConstructorArg(), NON_SEARCHABLE_INDICES_FIELD);
335-
parser.declareStringArray(ConstructingObjectParser.optionalConstructorArg(), NON_AGGREGATABLE_INDICES_FIELD);
336-
parser.declareStringArray(ConstructingObjectParser.optionalConstructorArg(), NON_DIMENSION_INDICES_FIELD);
337-
parser.declareStringArray(ConstructingObjectParser.optionalConstructorArg(), METRIC_CONFLICTS_INDICES_FIELD);
338-
parser.declareObject(
339-
ConstructingObjectParser.optionalConstructorArg(),
340-
(p, context) -> p.map(HashMap::new, v -> Set.copyOf(v.list())),
341-
META_FIELD
342-
);
343-
PARSER = parser.build();
344-
}
345-
346311
/**
347312
* The name of the field.
348313
*/

server/src/main/java/org/elasticsearch/action/fieldcaps/FieldCapabilitiesFailure.java

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,9 @@
1313
import org.elasticsearch.common.io.stream.StreamInput;
1414
import org.elasticsearch.common.io.stream.StreamOutput;
1515
import org.elasticsearch.common.io.stream.Writeable;
16-
import org.elasticsearch.common.xcontent.XContentParserUtils;
17-
import org.elasticsearch.xcontent.ConstructingObjectParser;
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.ArrayList;
@@ -28,8 +25,8 @@
2825

2926
public class FieldCapabilitiesFailure implements Writeable, ToXContentObject {
3027

31-
private static final ParseField INDICES_FIELD = new ParseField("indices");
32-
private static final ParseField FAILURE_FIELD = new ParseField("failure");
28+
public static final ParseField INDICES_FIELD = new ParseField("indices");
29+
public static final ParseField FAILURE_FIELD = new ParseField("failure");
3330
private final List<String> indices;
3431
private final Exception exception;
3532

@@ -58,30 +55,6 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
5855
return builder;
5956
}
6057

61-
@SuppressWarnings("unchecked")
62-
private static final ConstructingObjectParser<FieldCapabilitiesFailure, Void> PARSER = new ConstructingObjectParser<>(
63-
"field_capabilities_failure",
64-
true,
65-
a -> {
66-
return new FieldCapabilitiesFailure(((List<String>) a[0]).toArray(String[]::new), (Exception) a[1]);
67-
}
68-
);
69-
70-
static {
71-
PARSER.declareStringArray(ConstructingObjectParser.constructorArg(), INDICES_FIELD);
72-
PARSER.declareObject(ConstructingObjectParser.constructorArg(), (p, c) -> {
73-
XContentParserUtils.ensureExpectedToken(XContentParser.Token.START_OBJECT, p.currentToken(), p);
74-
XContentParserUtils.ensureExpectedToken(XContentParser.Token.FIELD_NAME, p.nextToken(), p);
75-
Exception e = ElasticsearchException.failureFromXContent(p);
76-
XContentParserUtils.ensureExpectedToken(XContentParser.Token.END_OBJECT, p.nextToken(), p);
77-
return e;
78-
}, FAILURE_FIELD);
79-
}
80-
81-
public static FieldCapabilitiesFailure fromXContent(XContentParser parser) throws IOException {
82-
return PARSER.parse(parser, null);
83-
}
84-
8558
@Override
8659
public void writeTo(StreamOutput out) throws IOException {
8760
out.writeStringCollection(indices);

server/src/main/java/org/elasticsearch/action/fieldcaps/FieldCapabilitiesResponse.java

Lines changed: 3 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -15,31 +15,25 @@
1515
import org.elasticsearch.common.io.stream.StreamInput;
1616
import org.elasticsearch.common.io.stream.StreamOutput;
1717
import org.elasticsearch.common.xcontent.ChunkedToXContentObject;
18-
import org.elasticsearch.common.xcontent.XContentParserUtils;
19-
import org.elasticsearch.core.Tuple;
20-
import org.elasticsearch.xcontent.ConstructingObjectParser;
2118
import org.elasticsearch.xcontent.ParseField;
2219
import org.elasticsearch.xcontent.ToXContent;
23-
import org.elasticsearch.xcontent.XContentParser;
2420

2521
import java.io.IOException;
2622
import java.util.Arrays;
2723
import java.util.Collections;
28-
import java.util.HashMap;
2924
import java.util.Iterator;
3025
import java.util.List;
3126
import java.util.Map;
3227
import java.util.Objects;
33-
import java.util.stream.Collectors;
3428

3529
/**
3630
* Response for {@link FieldCapabilitiesRequest} requests.
3731
*/
3832
public class FieldCapabilitiesResponse extends ActionResponse implements ChunkedToXContentObject {
39-
private static final ParseField INDICES_FIELD = new ParseField("indices");
40-
private static final ParseField FIELDS_FIELD = new ParseField("fields");
33+
public static final ParseField INDICES_FIELD = new ParseField("indices");
34+
public static final ParseField FIELDS_FIELD = new ParseField("fields");
4135
private static final ParseField FAILED_INDICES_FIELD = new ParseField("failed_indices");
42-
private static final ParseField FAILURES_FIELD = new ParseField("failures");
36+
public static final ParseField FAILURES_FIELD = new ParseField("failures");
4337

4438
private final String[] indices;
4539
private final Map<String, Map<String, FieldCapabilities>> responseMap;
@@ -183,50 +177,6 @@ public Iterator<? extends ToXContent> toXContentChunked(ToXContent.Params params
183177
);
184178
}
185179

186-
public static FieldCapabilitiesResponse fromXContent(XContentParser parser) throws IOException {
187-
return PARSER.parse(parser, null);
188-
}
189-
190-
@SuppressWarnings("unchecked")
191-
private static final ConstructingObjectParser<FieldCapabilitiesResponse, Void> PARSER = new ConstructingObjectParser<>(
192-
"field_capabilities_response",
193-
true,
194-
a -> {
195-
Map<String, Map<String, FieldCapabilities>> responseMap = ((List<Tuple<String, Map<String, FieldCapabilities>>>) a[0]).stream()
196-
.collect(Collectors.toMap(Tuple::v1, Tuple::v2));
197-
List<String> indices = a[1] == null ? Collections.emptyList() : (List<String>) a[1];
198-
List<FieldCapabilitiesFailure> failures = a[2] == null ? Collections.emptyList() : (List<FieldCapabilitiesFailure>) a[2];
199-
return new FieldCapabilitiesResponse(indices.toArray(String[]::new), responseMap, failures);
200-
}
201-
);
202-
203-
static {
204-
PARSER.declareNamedObjects(ConstructingObjectParser.constructorArg(), (p, c, n) -> {
205-
Map<String, FieldCapabilities> typeToCapabilities = parseTypeToCapabilities(p, n);
206-
return new Tuple<>(n, typeToCapabilities);
207-
}, FIELDS_FIELD);
208-
PARSER.declareStringArray(ConstructingObjectParser.optionalConstructorArg(), INDICES_FIELD);
209-
PARSER.declareObjectArray(
210-
ConstructingObjectParser.optionalConstructorArg(),
211-
(p, c) -> FieldCapabilitiesFailure.fromXContent(p),
212-
FAILURES_FIELD
213-
);
214-
}
215-
216-
private static Map<String, FieldCapabilities> parseTypeToCapabilities(XContentParser parser, String name) throws IOException {
217-
Map<String, FieldCapabilities> typeToCapabilities = new HashMap<>();
218-
219-
XContentParserUtils.ensureExpectedToken(XContentParser.Token.START_OBJECT, parser.nextToken(), parser);
220-
XContentParser.Token token;
221-
while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) {
222-
XContentParserUtils.ensureExpectedToken(XContentParser.Token.FIELD_NAME, token, parser);
223-
String type = parser.currentName();
224-
FieldCapabilities capabilities = FieldCapabilities.fromXContent(name, parser);
225-
typeToCapabilities.put(type, capabilities);
226-
}
227-
return typeToCapabilities;
228-
}
229-
230180
@Override
231181
public boolean equals(Object o) {
232182
if (this == o) return true;

server/src/main/java/org/elasticsearch/action/fieldcaps/TransportFieldCapabilitiesAction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ private static void checkIndexBlocks(ClusterState clusterState, String[] concret
310310
}
311311
}
312312

313-
private void mergeIndexResponses(
313+
private static void mergeIndexResponses(
314314
FieldCapabilitiesRequest request,
315315
CancellableTask task,
316316
Map<String, FieldCapabilitiesIndexResponse> indexResponses,
@@ -564,7 +564,7 @@ boolean isEmpty() {
564564

565565
private class NodeTransportHandler implements TransportRequestHandler<FieldCapabilitiesNodeRequest> {
566566
@Override
567-
public void messageReceived(FieldCapabilitiesNodeRequest request, TransportChannel channel, Task task) throws Exception {
567+
public void messageReceived(FieldCapabilitiesNodeRequest request, TransportChannel channel, Task task) {
568568
assert task instanceof CancellableTask;
569569
final ActionListener<FieldCapabilitiesNodeResponse> listener = new ChannelActionListener<>(channel);
570570
ActionListener.completeWith(listener, () -> {

server/src/test/java/org/elasticsearch/action/fieldcaps/FieldCapabilitiesResponseTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ public void testFailureParsing() throws IOException {
119119
);
120120
FieldCapabilitiesResponse parsedResponse;
121121
try (XContentParser parser = createParser(xContentType.xContent(), originalBytes)) {
122-
parsedResponse = FieldCapabilitiesResponse.fromXContent(parser);
122+
parsedResponse = FieldCapsUtils.parseFieldCapsResponse(parser);
123123
assertNull(parser.nextToken());
124124
}
125125
assertNotSame(parsedResponse, randomResponse);

server/src/test/java/org/elasticsearch/action/fieldcaps/FieldCapabilitiesTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class FieldCapabilitiesTests extends AbstractXContentSerializingTestCase<
3535

3636
@Override
3737
protected FieldCapabilities doParseInstance(XContentParser parser) throws IOException {
38-
return FieldCapabilities.fromXContent(FIELD_NAME, parser);
38+
return FieldCapsUtils.parseFieldCaps(FIELD_NAME, parser);
3939
}
4040

4141
@Override

server/src/test/java/org/elasticsearch/action/fieldcaps/MergedFieldCapabilitiesResponseTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public class MergedFieldCapabilitiesResponseTests extends AbstractChunkedSeriali
2626

2727
@Override
2828
protected FieldCapabilitiesResponse doParseInstance(XContentParser parser) throws IOException {
29-
return FieldCapabilitiesResponse.fromXContent(parser);
29+
return FieldCapsUtils.parseFieldCapsResponse(parser);
3030
}
3131

3232
@Override

0 commit comments

Comments
 (0)