From c352ff1615a3f6e5b4b04481dc6d33c13825e0d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20B=C3=BCscher?= Date: Thu, 7 Jun 2018 13:52:10 +0200 Subject: [PATCH] Share common parser in some AcknowledgedResponses (#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. --- .../delete/DeleteRepositoryResponse.java | 10 +--------- .../repositories/put/PutRepositoryResponse.java | 10 +--------- .../indices/alias/IndicesAliasesResponse.java | 2 +- .../admin/indices/close/CloseIndexResponse.java | 10 +--------- .../indices/delete/DeleteIndexResponse.java | 10 +--------- .../indices/mapping/put/PutMappingResponse.java | 11 +---------- .../settings/put/UpdateSettingsResponse.java | 11 +---------- .../template/put/PutIndexTemplateResponse.java | 9 +-------- .../action/ingest/WritePipelineResponse.java | 11 +---------- .../support/master/AcknowledgedResponse.java | 16 ++++++++++++++++ 10 files changed, 25 insertions(+), 75 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/delete/DeleteRepositoryResponse.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/delete/DeleteRepositoryResponse.java index 1f1fe524c64a9..f67d74cd118ea 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/delete/DeleteRepositoryResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/delete/DeleteRepositoryResponse.java @@ -20,7 +20,6 @@ package org.elasticsearch.action.admin.cluster.repositories.delete; import org.elasticsearch.action.support.master.AcknowledgedResponse; -import org.elasticsearch.common.xcontent.ConstructingObjectParser; import org.elasticsearch.common.xcontent.XContentParser; /** @@ -28,13 +27,6 @@ */ public class DeleteRepositoryResponse extends AcknowledgedResponse { - private static final ConstructingObjectParser PARSER = - new ConstructingObjectParser<>("delete_repository", true, args -> new DeleteRepositoryResponse((boolean) args[0])); - - static { - declareAcknowledgedField(PARSER); - } - DeleteRepositoryResponse() { } @@ -43,6 +35,6 @@ public class DeleteRepositoryResponse extends AcknowledgedResponse { } public static DeleteRepositoryResponse fromXContent(XContentParser parser) { - return PARSER.apply(parser, null); + return new DeleteRepositoryResponse(parseAcknowledged(parser)); } } diff --git a/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/put/PutRepositoryResponse.java b/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/put/PutRepositoryResponse.java index 52a1a736ec7c1..23aae119e0da5 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/put/PutRepositoryResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/cluster/repositories/put/PutRepositoryResponse.java @@ -20,7 +20,6 @@ package org.elasticsearch.action.admin.cluster.repositories.put; import org.elasticsearch.action.support.master.AcknowledgedResponse; -import org.elasticsearch.common.xcontent.ConstructingObjectParser; import org.elasticsearch.common.xcontent.XContentParser; /** @@ -28,13 +27,6 @@ */ public class PutRepositoryResponse extends AcknowledgedResponse { - private static final ConstructingObjectParser PARSER = new ConstructingObjectParser<>("put_repository", - true, args -> new PutRepositoryResponse((boolean) args[0])); - - static { - declareAcknowledgedField(PARSER); - } - PutRepositoryResponse() { } @@ -43,6 +35,6 @@ public class PutRepositoryResponse extends AcknowledgedResponse { } public static PutRepositoryResponse fromXContent(XContentParser parser) { - return PARSER.apply(parser, null); + return new PutRepositoryResponse(parseAcknowledged(parser)); } } diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/alias/IndicesAliasesResponse.java b/server/src/main/java/org/elasticsearch/action/admin/indices/alias/IndicesAliasesResponse.java index ebfc82fec74ca..31ebcbf0f0a07 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/alias/IndicesAliasesResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/alias/IndicesAliasesResponse.java @@ -42,6 +42,6 @@ public class IndicesAliasesResponse extends AcknowledgedResponse { } public static IndicesAliasesResponse fromXContent(XContentParser parser) { - return PARSER.apply(parser, null); + return new IndicesAliasesResponse(parseAcknowledged(parser)); } } \ No newline at end of file diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/close/CloseIndexResponse.java b/server/src/main/java/org/elasticsearch/action/admin/indices/close/CloseIndexResponse.java index bfebaee5e59da..96a3e150af16d 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/close/CloseIndexResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/close/CloseIndexResponse.java @@ -20,20 +20,12 @@ package org.elasticsearch.action.admin.indices.close; import org.elasticsearch.action.support.master.AcknowledgedResponse; -import org.elasticsearch.common.xcontent.ConstructingObjectParser; import org.elasticsearch.common.xcontent.XContentParser; /** * A response for a close index action. */ public class CloseIndexResponse extends AcknowledgedResponse { - private static final ConstructingObjectParser PARSER = new ConstructingObjectParser<>("close_index", true, - args -> new CloseIndexResponse((boolean) args[0])); - - static { - declareAcknowledgedField(PARSER); - } - CloseIndexResponse() { } @@ -42,6 +34,6 @@ public class CloseIndexResponse extends AcknowledgedResponse { } public static CloseIndexResponse fromXContent(XContentParser parser) { - return PARSER.apply(parser, null); + return new CloseIndexResponse(parseAcknowledged(parser)); } } diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/delete/DeleteIndexResponse.java b/server/src/main/java/org/elasticsearch/action/admin/indices/delete/DeleteIndexResponse.java index 3a04dc5b70be3..b86549f536d21 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/delete/DeleteIndexResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/delete/DeleteIndexResponse.java @@ -20,7 +20,6 @@ package org.elasticsearch.action.admin.indices.delete; import org.elasticsearch.action.support.master.AcknowledgedResponse; -import org.elasticsearch.common.xcontent.ConstructingObjectParser; import org.elasticsearch.common.xcontent.XContentParser; /** @@ -28,13 +27,6 @@ */ public class DeleteIndexResponse extends AcknowledgedResponse { - private static final ConstructingObjectParser PARSER = new ConstructingObjectParser<>("delete_index", - true, args -> new DeleteIndexResponse((boolean) args[0])); - - static { - declareAcknowledgedField(PARSER); - } - DeleteIndexResponse() { } @@ -43,6 +35,6 @@ public class DeleteIndexResponse extends AcknowledgedResponse { } public static DeleteIndexResponse fromXContent(XContentParser parser) { - return PARSER.apply(parser, null); + return new DeleteIndexResponse(parseAcknowledged(parser)); } } diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/mapping/put/PutMappingResponse.java b/server/src/main/java/org/elasticsearch/action/admin/indices/mapping/put/PutMappingResponse.java index 1e022474955a8..4b2eac95c3ac6 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/mapping/put/PutMappingResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/mapping/put/PutMappingResponse.java @@ -20,7 +20,6 @@ package org.elasticsearch.action.admin.indices.mapping.put; import org.elasticsearch.action.support.master.AcknowledgedResponse; -import org.elasticsearch.common.xcontent.ConstructingObjectParser; import org.elasticsearch.common.xcontent.XContentParser; /** @@ -28,15 +27,7 @@ */ public class PutMappingResponse extends AcknowledgedResponse { - private static final ConstructingObjectParser PARSER = new ConstructingObjectParser<>("put_mapping", - true, args -> new PutMappingResponse((boolean) args[0])); - - static { - declareAcknowledgedField(PARSER); - } - protected PutMappingResponse() { - } protected PutMappingResponse(boolean acknowledged) { @@ -44,6 +35,6 @@ protected PutMappingResponse(boolean acknowledged) { } public static PutMappingResponse fromXContent(XContentParser parser) { - return PARSER.apply(parser, null); + return new PutMappingResponse(parseAcknowledged(parser)); } } diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/settings/put/UpdateSettingsResponse.java b/server/src/main/java/org/elasticsearch/action/admin/indices/settings/put/UpdateSettingsResponse.java index 022f575f1d0e5..6792d1859260d 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/settings/put/UpdateSettingsResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/settings/put/UpdateSettingsResponse.java @@ -20,7 +20,6 @@ package org.elasticsearch.action.admin.indices.settings.put; import org.elasticsearch.action.support.master.AcknowledgedResponse; -import org.elasticsearch.common.xcontent.ConstructingObjectParser; import org.elasticsearch.common.xcontent.XContentParser; /** @@ -28,13 +27,6 @@ */ public class UpdateSettingsResponse extends AcknowledgedResponse { - private static final ConstructingObjectParser PARSER = new ConstructingObjectParser<>( - "update_index_settings", true, args -> new UpdateSettingsResponse((boolean) args[0])); - - static { - declareAcknowledgedField(PARSER); - } - UpdateSettingsResponse() { } @@ -43,7 +35,6 @@ public class UpdateSettingsResponse extends AcknowledgedResponse { } public static UpdateSettingsResponse fromXContent(XContentParser parser) { - return PARSER.apply(parser, null); + return new UpdateSettingsResponse(parseAcknowledged(parser)); } - } diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateResponse.java b/server/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateResponse.java index 59b00bd719b33..b2dab55a3d9d3 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateResponse.java @@ -19,7 +19,6 @@ package org.elasticsearch.action.admin.indices.template.put; import org.elasticsearch.action.support.master.AcknowledgedResponse; -import org.elasticsearch.common.xcontent.ConstructingObjectParser; import org.elasticsearch.common.xcontent.XContentParser; /** @@ -34,13 +33,7 @@ protected PutIndexTemplateResponse(boolean acknowledged) { super(acknowledged); } - private static final ConstructingObjectParser PARSER; - static { - PARSER = new ConstructingObjectParser<>("put_index_template", true, args -> new PutIndexTemplateResponse((boolean) args[0])); - declareAcknowledgedField(PARSER); - } - public static PutIndexTemplateResponse fromXContent(XContentParser parser) { - return PARSER.apply(parser, null); + return new PutIndexTemplateResponse(parseAcknowledged(parser)); } } diff --git a/server/src/main/java/org/elasticsearch/action/ingest/WritePipelineResponse.java b/server/src/main/java/org/elasticsearch/action/ingest/WritePipelineResponse.java index b3bda3f152196..293a62b66f26e 100644 --- a/server/src/main/java/org/elasticsearch/action/ingest/WritePipelineResponse.java +++ b/server/src/main/java/org/elasticsearch/action/ingest/WritePipelineResponse.java @@ -20,21 +20,12 @@ package org.elasticsearch.action.ingest; import org.elasticsearch.action.support.master.AcknowledgedResponse; -import org.elasticsearch.common.xcontent.ConstructingObjectParser; import org.elasticsearch.common.xcontent.ToXContentObject; import org.elasticsearch.common.xcontent.XContentParser; public class WritePipelineResponse extends AcknowledgedResponse implements ToXContentObject { - private static final ConstructingObjectParser PARSER = new ConstructingObjectParser<>( - "write_pipeline_response", true, args -> new WritePipelineResponse((boolean) args[0])); - - static { - declareAcknowledgedField(PARSER); - } - WritePipelineResponse() { - } public WritePipelineResponse(boolean acknowledged) { @@ -42,6 +33,6 @@ public WritePipelineResponse(boolean acknowledged) { } public static WritePipelineResponse fromXContent(XContentParser parser) { - return PARSER.apply(parser, null); + return new WritePipelineResponse(parseAcknowledged(parser)); } } diff --git a/server/src/main/java/org/elasticsearch/action/support/master/AcknowledgedResponse.java b/server/src/main/java/org/elasticsearch/action/support/master/AcknowledgedResponse.java index 41c806bc20586..594dcda8c662f 100644 --- a/server/src/main/java/org/elasticsearch/action/support/master/AcknowledgedResponse.java +++ b/server/src/main/java/org/elasticsearch/action/support/master/AcknowledgedResponse.java @@ -26,6 +26,7 @@ import org.elasticsearch.common.xcontent.ObjectParser; import org.elasticsearch.common.xcontent.ToXContentObject; import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.common.xcontent.XContentParser; import java.io.IOException; import java.util.Objects; @@ -88,6 +89,21 @@ protected void addCustomFields(XContentBuilder builder, Params params) throws IO } + /** + * A generic parser that simply parses the acknowledged flag + */ + private static final ConstructingObjectParser ACKNOWLEDGED_FLAG_PARSER = new ConstructingObjectParser<>( + "acknowledged_flag", true, args -> (Boolean) args[0]); + + static { + ACKNOWLEDGED_FLAG_PARSER.declareField(constructorArg(), (parser, context) -> parser.booleanValue(), ACKNOWLEDGED, + ObjectParser.ValueType.BOOLEAN); + } + + protected static boolean parseAcknowledged(XContentParser parser) { + return ACKNOWLEDGED_FLAG_PARSER.apply(parser, null); + } + @Override public boolean equals(Object o) { if (this == o) {