Skip to content

Commit c352ff1

Browse files
author
Christoph Büscher
authored
Share common parser in some AcknowledgedResponses (elastic#31169)
Several AcknowledgedResponse implementations only parse the boolean acknowledged flag and then create an instance of their class using that flag. This can be simplified by adding this basic parser to the superclass, provide a common helper method and call the appropriate ctor in the fromXContent methods.
1 parent 280a2f5 commit c352ff1

File tree

10 files changed

+25
-75
lines changed

10 files changed

+25
-75
lines changed

server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/delete/DeleteRepositoryResponse.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,13 @@
2020
package org.elasticsearch.action.admin.cluster.repositories.delete;
2121

2222
import org.elasticsearch.action.support.master.AcknowledgedResponse;
23-
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
2423
import org.elasticsearch.common.xcontent.XContentParser;
2524

2625
/**
2726
* Unregister repository response
2827
*/
2928
public class DeleteRepositoryResponse extends AcknowledgedResponse {
3029

31-
private static final ConstructingObjectParser<DeleteRepositoryResponse, Void> PARSER =
32-
new ConstructingObjectParser<>("delete_repository", true, args -> new DeleteRepositoryResponse((boolean) args[0]));
33-
34-
static {
35-
declareAcknowledgedField(PARSER);
36-
}
37-
3830
DeleteRepositoryResponse() {
3931
}
4032

@@ -43,6 +35,6 @@ public class DeleteRepositoryResponse extends AcknowledgedResponse {
4335
}
4436

4537
public static DeleteRepositoryResponse fromXContent(XContentParser parser) {
46-
return PARSER.apply(parser, null);
38+
return new DeleteRepositoryResponse(parseAcknowledged(parser));
4739
}
4840
}

server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/put/PutRepositoryResponse.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,13 @@
2020
package org.elasticsearch.action.admin.cluster.repositories.put;
2121

2222
import org.elasticsearch.action.support.master.AcknowledgedResponse;
23-
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
2423
import org.elasticsearch.common.xcontent.XContentParser;
2524

2625
/**
2726
* Register repository response
2827
*/
2928
public class PutRepositoryResponse extends AcknowledgedResponse {
3029

31-
private static final ConstructingObjectParser<PutRepositoryResponse, Void> PARSER = new ConstructingObjectParser<>("put_repository",
32-
true, args -> new PutRepositoryResponse((boolean) args[0]));
33-
34-
static {
35-
declareAcknowledgedField(PARSER);
36-
}
37-
3830
PutRepositoryResponse() {
3931
}
4032

@@ -43,6 +35,6 @@ public class PutRepositoryResponse extends AcknowledgedResponse {
4335
}
4436

4537
public static PutRepositoryResponse fromXContent(XContentParser parser) {
46-
return PARSER.apply(parser, null);
38+
return new PutRepositoryResponse(parseAcknowledged(parser));
4739
}
4840
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,6 @@ public class IndicesAliasesResponse extends AcknowledgedResponse {
4242
}
4343

4444
public static IndicesAliasesResponse fromXContent(XContentParser parser) {
45-
return PARSER.apply(parser, null);
45+
return new IndicesAliasesResponse(parseAcknowledged(parser));
4646
}
4747
}

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

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,12 @@
2020
package org.elasticsearch.action.admin.indices.close;
2121

2222
import org.elasticsearch.action.support.master.AcknowledgedResponse;
23-
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
2423
import org.elasticsearch.common.xcontent.XContentParser;
2524

2625
/**
2726
* A response for a close index action.
2827
*/
2928
public class CloseIndexResponse extends AcknowledgedResponse {
30-
private static final ConstructingObjectParser<CloseIndexResponse, Void> PARSER = new ConstructingObjectParser<>("close_index", true,
31-
args -> new CloseIndexResponse((boolean) args[0]));
32-
33-
static {
34-
declareAcknowledgedField(PARSER);
35-
}
36-
3729
CloseIndexResponse() {
3830
}
3931

@@ -42,6 +34,6 @@ public class CloseIndexResponse extends AcknowledgedResponse {
4234
}
4335

4436
public static CloseIndexResponse fromXContent(XContentParser parser) {
45-
return PARSER.apply(parser, null);
37+
return new CloseIndexResponse(parseAcknowledged(parser));
4638
}
4739
}

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

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,13 @@
2020
package org.elasticsearch.action.admin.indices.delete;
2121

2222
import org.elasticsearch.action.support.master.AcknowledgedResponse;
23-
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
2423
import org.elasticsearch.common.xcontent.XContentParser;
2524

2625
/**
2726
* A response for a delete index action.
2827
*/
2928
public class DeleteIndexResponse extends AcknowledgedResponse {
3029

31-
private static final ConstructingObjectParser<DeleteIndexResponse, Void> PARSER = new ConstructingObjectParser<>("delete_index",
32-
true, args -> new DeleteIndexResponse((boolean) args[0]));
33-
34-
static {
35-
declareAcknowledgedField(PARSER);
36-
}
37-
3830
DeleteIndexResponse() {
3931
}
4032

@@ -43,6 +35,6 @@ public class DeleteIndexResponse extends AcknowledgedResponse {
4335
}
4436

4537
public static DeleteIndexResponse fromXContent(XContentParser parser) {
46-
return PARSER.apply(parser, null);
38+
return new DeleteIndexResponse(parseAcknowledged(parser));
4739
}
4840
}

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

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,30 +20,21 @@
2020
package org.elasticsearch.action.admin.indices.mapping.put;
2121

2222
import org.elasticsearch.action.support.master.AcknowledgedResponse;
23-
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
2423
import org.elasticsearch.common.xcontent.XContentParser;
2524

2625
/**
2726
* The response of put mapping operation.
2827
*/
2928
public class PutMappingResponse extends AcknowledgedResponse {
3029

31-
private static final ConstructingObjectParser<PutMappingResponse, Void> PARSER = new ConstructingObjectParser<>("put_mapping",
32-
true, args -> new PutMappingResponse((boolean) args[0]));
33-
34-
static {
35-
declareAcknowledgedField(PARSER);
36-
}
37-
3830
protected PutMappingResponse() {
39-
4031
}
4132

4233
protected PutMappingResponse(boolean acknowledged) {
4334
super(acknowledged);
4435
}
4536

4637
public static PutMappingResponse fromXContent(XContentParser parser) {
47-
return PARSER.apply(parser, null);
38+
return new PutMappingResponse(parseAcknowledged(parser));
4839
}
4940
}

server/src/main/java/org/elasticsearch/action/admin/indices/settings/put/UpdateSettingsResponse.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,13 @@
2020
package org.elasticsearch.action.admin.indices.settings.put;
2121

2222
import org.elasticsearch.action.support.master.AcknowledgedResponse;
23-
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
2423
import org.elasticsearch.common.xcontent.XContentParser;
2524

2625
/**
2726
* A response for an update index settings action
2827
*/
2928
public class UpdateSettingsResponse extends AcknowledgedResponse {
3029

31-
private static final ConstructingObjectParser<UpdateSettingsResponse, Void> PARSER = new ConstructingObjectParser<>(
32-
"update_index_settings", true, args -> new UpdateSettingsResponse((boolean) args[0]));
33-
34-
static {
35-
declareAcknowledgedField(PARSER);
36-
}
37-
3830
UpdateSettingsResponse() {
3931
}
4032

@@ -43,7 +35,6 @@ public class UpdateSettingsResponse extends AcknowledgedResponse {
4335
}
4436

4537
public static UpdateSettingsResponse fromXContent(XContentParser parser) {
46-
return PARSER.apply(parser, null);
38+
return new UpdateSettingsResponse(parseAcknowledged(parser));
4739
}
48-
4940
}

server/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateResponse.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
package org.elasticsearch.action.admin.indices.template.put;
2020

2121
import org.elasticsearch.action.support.master.AcknowledgedResponse;
22-
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
2322
import org.elasticsearch.common.xcontent.XContentParser;
2423

2524
/**
@@ -34,13 +33,7 @@ protected PutIndexTemplateResponse(boolean acknowledged) {
3433
super(acknowledged);
3534
}
3635

37-
private static final ConstructingObjectParser<PutIndexTemplateResponse, Void> PARSER;
38-
static {
39-
PARSER = new ConstructingObjectParser<>("put_index_template", true, args -> new PutIndexTemplateResponse((boolean) args[0]));
40-
declareAcknowledgedField(PARSER);
41-
}
42-
4336
public static PutIndexTemplateResponse fromXContent(XContentParser parser) {
44-
return PARSER.apply(parser, null);
37+
return new PutIndexTemplateResponse(parseAcknowledged(parser));
4538
}
4639
}

server/src/main/java/org/elasticsearch/action/ingest/WritePipelineResponse.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,28 +20,19 @@
2020
package org.elasticsearch.action.ingest;
2121

2222
import org.elasticsearch.action.support.master.AcknowledgedResponse;
23-
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
2423
import org.elasticsearch.common.xcontent.ToXContentObject;
2524
import org.elasticsearch.common.xcontent.XContentParser;
2625

2726
public class WritePipelineResponse extends AcknowledgedResponse implements ToXContentObject {
2827

29-
private static final ConstructingObjectParser<WritePipelineResponse, Void> PARSER = new ConstructingObjectParser<>(
30-
"write_pipeline_response", true, args -> new WritePipelineResponse((boolean) args[0]));
31-
32-
static {
33-
declareAcknowledgedField(PARSER);
34-
}
35-
3628
WritePipelineResponse() {
37-
3829
}
3930

4031
public WritePipelineResponse(boolean acknowledged) {
4132
super(acknowledged);
4233
}
4334

4435
public static WritePipelineResponse fromXContent(XContentParser parser) {
45-
return PARSER.apply(parser, null);
36+
return new WritePipelineResponse(parseAcknowledged(parser));
4637
}
4738
}

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.elasticsearch.common.xcontent.ObjectParser;
2727
import org.elasticsearch.common.xcontent.ToXContentObject;
2828
import org.elasticsearch.common.xcontent.XContentBuilder;
29+
import org.elasticsearch.common.xcontent.XContentParser;
2930

3031
import java.io.IOException;
3132
import java.util.Objects;
@@ -88,6 +89,21 @@ protected void addCustomFields(XContentBuilder builder, Params params) throws IO
8889

8990
}
9091

92+
/**
93+
* A generic parser that simply parses the acknowledged flag
94+
*/
95+
private static final ConstructingObjectParser<Boolean, Void> ACKNOWLEDGED_FLAG_PARSER = new ConstructingObjectParser<>(
96+
"acknowledged_flag", true, args -> (Boolean) args[0]);
97+
98+
static {
99+
ACKNOWLEDGED_FLAG_PARSER.declareField(constructorArg(), (parser, context) -> parser.booleanValue(), ACKNOWLEDGED,
100+
ObjectParser.ValueType.BOOLEAN);
101+
}
102+
103+
protected static boolean parseAcknowledged(XContentParser parser) {
104+
return ACKNOWLEDGED_FLAG_PARSER.apply(parser, null);
105+
}
106+
91107
@Override
92108
public boolean equals(Object o) {
93109
if (this == o) {

0 commit comments

Comments
 (0)