Skip to content

Commit 1df711c

Browse files
authored
Remove AcknowledgedRestListener in favour of RestToXContentListener (#28724)
This commit makes AcknowledgedResponse implement ToXContentObject, so that the response knows how to print its own content out to XContent, which allows us to remove AcknowledgedRestListener.
1 parent 014e90d commit 1df711c

31 files changed

+288
-205
lines changed

modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/GrokProcessorGetAction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323
import org.elasticsearch.action.ActionRequest;
2424
import org.elasticsearch.action.ActionRequestBuilder;
2525
import org.elasticsearch.action.ActionRequestValidationException;
26+
import org.elasticsearch.action.ActionResponse;
2627
import org.elasticsearch.action.support.ActionFilters;
2728
import org.elasticsearch.action.support.HandledTransportAction;
28-
import org.elasticsearch.action.support.master.AcknowledgedResponse;
2929
import org.elasticsearch.client.ElasticsearchClient;
3030
import org.elasticsearch.client.node.NodeClient;
3131
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
@@ -85,7 +85,7 @@ public RequestBuilder(ElasticsearchClient client) {
8585
}
8686
}
8787

88-
public static class Response extends AcknowledgedResponse implements ToXContentObject {
88+
public static class Response extends ActionResponse implements ToXContentObject {
8989
private Map<String, String> grokPatterns;
9090

9191
public Response(Map<String, String> grokPatterns) {

modules/ingest-common/src/main/java/org/elasticsearch/ingest/common/IngestCommonPlugin.java

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,6 @@
1919

2020
package org.elasticsearch.ingest.common;
2121

22-
import java.io.BufferedReader;
23-
import java.io.IOException;
24-
import java.io.InputStream;
25-
import java.io.InputStreamReader;
26-
import java.io.UncheckedIOException;
27-
import java.nio.charset.StandardCharsets;
28-
import java.util.Arrays;
29-
import java.util.Collections;
30-
import java.util.HashMap;
31-
import java.util.List;
32-
import java.util.Map;
33-
import java.util.function.Supplier;
34-
3522
import org.elasticsearch.action.ActionRequest;
3623
import org.elasticsearch.action.ActionResponse;
3724
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
@@ -48,6 +35,13 @@
4835
import org.elasticsearch.rest.RestController;
4936
import org.elasticsearch.rest.RestHandler;
5037

38+
import java.util.Arrays;
39+
import java.util.Collections;
40+
import java.util.HashMap;
41+
import java.util.List;
42+
import java.util.Map;
43+
import java.util.function.Supplier;
44+
5145
public class IngestCommonPlugin extends Plugin implements ActionPlugin, IngestPlugin {
5246

5347
static final Map<String, String> GROK_PATTERNS = Grok.getBuiltinPatterns();

server/src/main/java/org/elasticsearch/action/admin/cluster/reroute/ClusterRerouteResponse.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,16 @@
2424
import org.elasticsearch.cluster.routing.allocation.RoutingExplanations;
2525
import org.elasticsearch.common.io.stream.StreamInput;
2626
import org.elasticsearch.common.io.stream.StreamOutput;
27+
import org.elasticsearch.common.xcontent.ToXContent;
28+
import org.elasticsearch.common.xcontent.ToXContentObject;
29+
import org.elasticsearch.common.xcontent.XContentBuilder;
2730

2831
import java.io.IOException;
2932

3033
/**
3134
* Response returned after a cluster reroute request
3235
*/
33-
public class ClusterRerouteResponse extends AcknowledgedResponse {
36+
public class ClusterRerouteResponse extends AcknowledgedResponse implements ToXContentObject {
3437

3538
private ClusterState state;
3639
private RoutingExplanations explanations;
@@ -71,4 +74,14 @@ public void writeTo(StreamOutput out) throws IOException {
7174
writeAcknowledged(out);
7275
RoutingExplanations.writeTo(explanations, out);
7376
}
77+
78+
@Override
79+
protected void addCustomFields(XContentBuilder builder, Params params) throws IOException {
80+
builder.startObject("state");
81+
state.toXContent(builder, params);
82+
builder.endObject();
83+
if (params.paramAsBoolean("explain", false)) {
84+
explanations.toXContent(builder, ToXContent.EMPTY_PARAMS);
85+
}
86+
}
7487
}

server/src/main/java/org/elasticsearch/action/admin/cluster/settings/ClusterUpdateSettingsResponse.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import org.elasticsearch.common.io.stream.StreamOutput;
2626
import org.elasticsearch.common.settings.Settings;
2727
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
28-
import org.elasticsearch.common.xcontent.ToXContentObject;
2928
import org.elasticsearch.common.xcontent.XContentBuilder;
3029
import org.elasticsearch.common.xcontent.XContentParser;
3130

@@ -35,7 +34,7 @@
3534
/**
3635
* A response for a cluster update settings action.
3736
*/
38-
public class ClusterUpdateSettingsResponse extends AcknowledgedResponse implements ToXContentObject {
37+
public class ClusterUpdateSettingsResponse extends AcknowledgedResponse {
3938

4039
private static final ParseField PERSISTENT = new ParseField("persistent");
4140
private static final ParseField TRANSIENT = new ParseField("transient");
@@ -91,17 +90,13 @@ public void writeTo(StreamOutput out) throws IOException {
9190
}
9291

9392
@Override
94-
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
95-
builder.startObject();
96-
addAcknowledgedField(builder);
93+
protected void addCustomFields(XContentBuilder builder, Params params) throws IOException {
9794
builder.startObject(PERSISTENT.getPreferredName());
9895
persistentSettings.toXContent(builder, params);
9996
builder.endObject();
10097
builder.startObject(TRANSIENT.getPreferredName());
10198
transientSettings.toXContent(builder, params);
10299
builder.endObject();
103-
builder.endObject();
104-
return builder;
105100
}
106101

107102
public static ClusterUpdateSettingsResponse fromXContent(XContentParser parser) {

server/src/main/java/org/elasticsearch/action/admin/indices/alias/IndicesAliasesResponse.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,14 @@
2323
import org.elasticsearch.common.io.stream.StreamInput;
2424
import org.elasticsearch.common.io.stream.StreamOutput;
2525
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
26-
import org.elasticsearch.common.xcontent.ToXContentObject;
27-
import org.elasticsearch.common.xcontent.XContentBuilder;
2826
import org.elasticsearch.common.xcontent.XContentParser;
2927

3028
import java.io.IOException;
3129

3230
/**
3331
* A response for a add/remove alias action.
3432
*/
35-
public class IndicesAliasesResponse extends AcknowledgedResponse implements ToXContentObject {
33+
public class IndicesAliasesResponse extends AcknowledgedResponse {
3634

3735
private static final ConstructingObjectParser<IndicesAliasesResponse, Void> PARSER = new ConstructingObjectParser<>("indices_aliases",
3836
true, args -> new IndicesAliasesResponse((boolean) args[0]));
@@ -59,14 +57,6 @@ public void writeTo(StreamOutput out) throws IOException {
5957
writeAcknowledged(out);
6058
}
6159

62-
@Override
63-
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
64-
builder.startObject();
65-
addAcknowledgedField(builder);
66-
builder.endObject();
67-
return builder;
68-
}
69-
7060
public static IndicesAliasesResponse fromXContent(XContentParser parser) {
7161
return PARSER.apply(parser, null);
7262
}

server/src/main/java/org/elasticsearch/action/admin/indices/close/CloseIndexResponse.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,14 @@
2323
import org.elasticsearch.common.io.stream.StreamInput;
2424
import org.elasticsearch.common.io.stream.StreamOutput;
2525
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
26-
import org.elasticsearch.common.xcontent.ToXContentObject;
27-
import org.elasticsearch.common.xcontent.XContentBuilder;
2826
import org.elasticsearch.common.xcontent.XContentParser;
2927

3028
import java.io.IOException;
3129

3230
/**
3331
* A response for a close index action.
3432
*/
35-
public class CloseIndexResponse extends AcknowledgedResponse implements ToXContentObject {
33+
public class CloseIndexResponse extends AcknowledgedResponse {
3634
private static final ConstructingObjectParser<CloseIndexResponse, Void> PARSER = new ConstructingObjectParser<>("close_index", true,
3735
args -> new CloseIndexResponse((boolean) args[0]));
3836

@@ -59,14 +57,6 @@ public void writeTo(StreamOutput out) throws IOException {
5957
writeAcknowledged(out);
6058
}
6159

62-
@Override
63-
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
64-
builder.startObject();
65-
addAcknowledgedField(builder);
66-
builder.endObject();
67-
return builder;
68-
}
69-
7060
public static CloseIndexResponse fromXContent(XContentParser parser) {
7161
return PARSER.apply(parser, null);
7262
}

server/src/main/java/org/elasticsearch/action/admin/indices/create/CreateIndexResponse.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.elasticsearch.common.io.stream.StreamOutput;
2727
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
2828
import org.elasticsearch.common.xcontent.ObjectParser;
29-
import org.elasticsearch.common.xcontent.ToXContentObject;
3029
import org.elasticsearch.common.xcontent.XContentBuilder;
3130
import org.elasticsearch.common.xcontent.XContentParser;
3231

@@ -38,7 +37,7 @@
3837
/**
3938
* A response for a create index action.
4039
*/
41-
public class CreateIndexResponse extends ShardsAcknowledgedResponse implements ToXContentObject {
40+
public class CreateIndexResponse extends ShardsAcknowledgedResponse {
4241

4342
private static final ParseField INDEX = new ParseField("index");
4443

@@ -89,13 +88,9 @@ public String index() {
8988
}
9089

9190
@Override
92-
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
93-
builder.startObject();
94-
addAcknowledgedField(builder);
95-
addShardsAcknowledgedField(builder);
91+
protected void addCustomFields(XContentBuilder builder, Params params) throws IOException {
92+
super.addCustomFields(builder, params);
9693
builder.field(INDEX.getPreferredName(), index());
97-
builder.endObject();
98-
return builder;
9994
}
10095

10196
public static CreateIndexResponse fromXContent(XContentParser parser) {

server/src/main/java/org/elasticsearch/action/admin/indices/delete/DeleteIndexResponse.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.elasticsearch.common.io.stream.StreamInput;
2424
import org.elasticsearch.common.io.stream.StreamOutput;
2525
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
26-
import org.elasticsearch.common.xcontent.ToXContentObject;
2726
import org.elasticsearch.common.xcontent.XContentBuilder;
2827
import org.elasticsearch.common.xcontent.XContentParser;
2928

@@ -32,7 +31,7 @@
3231
/**
3332
* A response for a delete index action.
3433
*/
35-
public class DeleteIndexResponse extends AcknowledgedResponse implements ToXContentObject {
34+
public class DeleteIndexResponse extends AcknowledgedResponse {
3635

3736
private static final ConstructingObjectParser<DeleteIndexResponse, Void> PARSER = new ConstructingObjectParser<>("delete_index",
3837
true, args -> new DeleteIndexResponse((boolean) args[0]));
@@ -60,14 +59,6 @@ public void writeTo(StreamOutput out) throws IOException {
6059
writeAcknowledged(out);
6160
}
6261

63-
@Override
64-
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
65-
builder.startObject();
66-
addAcknowledgedField(builder);
67-
builder.endObject();
68-
return builder;
69-
}
70-
7162
public static DeleteIndexResponse fromXContent(XContentParser parser) {
7263
return PARSER.apply(parser, null);
7364
}

server/src/main/java/org/elasticsearch/action/admin/indices/mapping/put/PutMappingResponse.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,14 @@
2323
import org.elasticsearch.common.io.stream.StreamInput;
2424
import org.elasticsearch.common.io.stream.StreamOutput;
2525
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
26-
import org.elasticsearch.common.xcontent.ToXContentObject;
27-
import org.elasticsearch.common.xcontent.XContentBuilder;
2826
import org.elasticsearch.common.xcontent.XContentParser;
2927

3028
import java.io.IOException;
3129

3230
/**
3331
* The response of put mapping operation.
3432
*/
35-
public class PutMappingResponse extends AcknowledgedResponse implements ToXContentObject {
33+
public class PutMappingResponse extends AcknowledgedResponse {
3634

3735
private static final ConstructingObjectParser<PutMappingResponse, Void> PARSER = new ConstructingObjectParser<>("put_mapping",
3836
true, args -> new PutMappingResponse((boolean) args[0]));
@@ -61,14 +59,6 @@ public void writeTo(StreamOutput out) throws IOException {
6159
writeAcknowledged(out);
6260
}
6361

64-
@Override
65-
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
66-
builder.startObject();
67-
addAcknowledgedField(builder);
68-
builder.endObject();
69-
return builder;
70-
}
71-
7262
public static PutMappingResponse fromXContent(XContentParser parser) {
7363
return PARSER.apply(parser, null);
7464
}

server/src/main/java/org/elasticsearch/action/admin/indices/open/OpenIndexResponse.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@
2121

2222
import org.elasticsearch.Version;
2323
import org.elasticsearch.action.support.master.ShardsAcknowledgedResponse;
24+
import org.elasticsearch.common.ParseField;
2425
import org.elasticsearch.common.io.stream.StreamInput;
2526
import org.elasticsearch.common.io.stream.StreamOutput;
2627
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
27-
import org.elasticsearch.common.xcontent.ToXContentObject;
2828
import org.elasticsearch.common.xcontent.XContentBuilder;
2929
import org.elasticsearch.common.xcontent.XContentParser;
3030

@@ -33,7 +33,7 @@
3333
/**
3434
* A response for a open index action.
3535
*/
36-
public class OpenIndexResponse extends ShardsAcknowledgedResponse implements ToXContentObject {
36+
public class OpenIndexResponse extends ShardsAcknowledgedResponse {
3737

3838
private static final ConstructingObjectParser<OpenIndexResponse, Void> PARSER = new ConstructingObjectParser<>("open_index", true,
3939
args -> new OpenIndexResponse((boolean) args[0], (boolean) args[1]));
@@ -67,15 +67,6 @@ public void writeTo(StreamOutput out) throws IOException {
6767
}
6868
}
6969

70-
@Override
71-
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
72-
builder.startObject();
73-
addAcknowledgedField(builder);
74-
addShardsAcknowledgedField(builder);
75-
builder.endObject();
76-
return builder;
77-
}
78-
7970
public static OpenIndexResponse fromXContent(XContentParser parser) {
8071
return PARSER.apply(parser, null);
8172
}

server/src/main/java/org/elasticsearch/action/admin/indices/rollover/RolloverResponse.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -145,21 +145,17 @@ public void writeTo(StreamOutput out) throws IOException {
145145
}
146146

147147
@Override
148-
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
149-
builder.startObject();
148+
protected void addCustomFields(XContentBuilder builder, Params params) throws IOException {
149+
super.addCustomFields(builder, params);
150150
builder.field(OLD_INDEX.getPreferredName(), oldIndex);
151151
builder.field(NEW_INDEX.getPreferredName(), newIndex);
152152
builder.field(ROLLED_OVER.getPreferredName(), rolledOver);
153153
builder.field(DRY_RUN.getPreferredName(), dryRun);
154-
addAcknowledgedField(builder);
155-
addShardsAcknowledgedField(builder);
156154
builder.startObject(CONDITIONS.getPreferredName());
157155
for (Map.Entry<String, Boolean> entry : conditionStatus.entrySet()) {
158156
builder.field(entry.getKey(), entry.getValue());
159157
}
160158
builder.endObject();
161-
builder.endObject();
162-
return builder;
163159
}
164160

165161
public static RolloverResponse fromXContent(XContentParser parser) {

server/src/main/java/org/elasticsearch/action/support/master/AcknowledgedResponse.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.elasticsearch.common.io.stream.StreamOutput;
2525
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
2626
import org.elasticsearch.common.xcontent.ObjectParser;
27+
import org.elasticsearch.common.xcontent.ToXContentObject;
2728
import org.elasticsearch.common.xcontent.XContentBuilder;
2829

2930
import java.io.IOException;
@@ -35,7 +36,7 @@
3536
* Abstract class that allows to mark action responses that support acknowledgements.
3637
* Facilitates consistency across different api.
3738
*/
38-
public abstract class AcknowledgedResponse extends ActionResponse {
39+
public abstract class AcknowledgedResponse extends ActionResponse implements ToXContentObject {
3940

4041
private static final ParseField ACKNOWLEDGED = new ParseField("acknowledged");
4142

@@ -76,8 +77,17 @@ protected void writeAcknowledged(StreamOutput out) throws IOException {
7677
out.writeBoolean(acknowledged);
7778
}
7879

79-
protected void addAcknowledgedField(XContentBuilder builder) throws IOException {
80+
@Override
81+
public final XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
82+
builder.startObject();
8083
builder.field(ACKNOWLEDGED.getPreferredName(), isAcknowledged());
84+
addCustomFields(builder, params);
85+
builder.endObject();
86+
return builder;
87+
}
88+
89+
protected void addCustomFields(XContentBuilder builder, Params params) throws IOException {
90+
8191
}
8292

8393
@Override

server/src/main/java/org/elasticsearch/action/support/master/ShardsAcknowledgedResponse.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ protected void writeShardsAcknowledged(StreamOutput out) throws IOException {
7171
out.writeBoolean(shardsAcknowledged);
7272
}
7373

74-
protected void addShardsAcknowledgedField(XContentBuilder builder) throws IOException {
74+
@Override
75+
protected void addCustomFields(XContentBuilder builder, Params params) throws IOException {
7576
builder.field(SHARDS_ACKNOWLEDGED.getPreferredName(), isShardsAcknowledged());
7677
}
7778

0 commit comments

Comments
 (0)