From cd78565acfe307549974b272138d2a3c9255e7ff Mon Sep 17 00:00:00 2001 From: Michael Basnight Date: Mon, 14 Jan 2019 19:50:20 -0600 Subject: [PATCH] Update Delete Watch to allow unknown fields (#37435) DeleteWatchResponse did not allow unknown fields. This commit fixes the test and ConstructingObjectParser such that it does now allow unknown fields. Relates #36938 --- .../client/watcher/DeleteWatchResponse.java | 15 +------ .../watcher/DeleteWatchResponseTests.java | 39 ++++++++++++------- 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/watcher/DeleteWatchResponse.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/watcher/DeleteWatchResponse.java index 4e946ad459c..1d519773b32 100644 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/watcher/DeleteWatchResponse.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/watcher/DeleteWatchResponse.java @@ -20,17 +20,15 @@ package org.elasticsearch.client.watcher; import org.elasticsearch.common.ParseField; 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; -public class DeleteWatchResponse implements ToXContentObject { +public class DeleteWatchResponse { private static final ObjectParser PARSER - = new ObjectParser<>("x_pack_delete_watch_response", DeleteWatchResponse::new); + = new ObjectParser<>("x_pack_delete_watch_response", true, DeleteWatchResponse::new); static { PARSER.declareString(DeleteWatchResponse::setId, new ParseField("_id")); PARSER.declareLong(DeleteWatchResponse::setVersion, new ParseField("_version")); @@ -89,15 +87,6 @@ public class DeleteWatchResponse implements ToXContentObject { return Objects.hash(id, version, found); } - @Override - public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - return builder.startObject() - .field("_id", id) - .field("_version", version) - .field("found", found) - .endObject(); - } - public static DeleteWatchResponse fromXContent(XContentParser parser) throws IOException { return PARSER.parse(parser, null); } diff --git a/client/rest-high-level/src/test/java/org/elasticsearch/client/watcher/DeleteWatchResponseTests.java b/client/rest-high-level/src/test/java/org/elasticsearch/client/watcher/DeleteWatchResponseTests.java index 3017b188292..45c3ef9dfdc 100644 --- a/client/rest-high-level/src/test/java/org/elasticsearch/client/watcher/DeleteWatchResponseTests.java +++ b/client/rest-high-level/src/test/java/org/elasticsearch/client/watcher/DeleteWatchResponseTests.java @@ -18,28 +18,37 @@ */ package org.elasticsearch.client.watcher; -import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.test.AbstractXContentTestCase; +import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.test.ESTestCase; import java.io.IOException; -public class DeleteWatchResponseTests extends AbstractXContentTestCase { +import static org.elasticsearch.test.AbstractXContentTestCase.xContentTester; - @Override - protected DeleteWatchResponse createTestInstance() { +public class DeleteWatchResponseTests extends ESTestCase { + + public void testFromXContent() throws IOException { + xContentTester(this::createParser, + DeleteWatchResponseTests::createTestInstance, + DeleteWatchResponseTests::toXContent, + DeleteWatchResponse::fromXContent) + .supportsUnknownFields(true) + .assertToXContentEquivalence(false) + .test(); + } + + private static XContentBuilder toXContent(DeleteWatchResponse response, XContentBuilder builder) throws IOException { + return builder.startObject() + .field("_id", response.getId()) + .field("_version", response.getVersion()) + .field("found", response.isFound()) + .endObject(); + } + + private static DeleteWatchResponse createTestInstance() { String id = randomAlphaOfLength(10); long version = randomLongBetween(1, 10); boolean found = randomBoolean(); return new DeleteWatchResponse(id, version, found); } - - @Override - protected DeleteWatchResponse doParseInstance(XContentParser parser) throws IOException { - return DeleteWatchResponse.fromXContent(parser); - } - - @Override - protected boolean supportsUnknownFields() { - return false; - } }