Skip to content

Commit

Permalink
Update Put Watch to allow unknown fields (#37494)
Browse files Browse the repository at this point in the history
PutWatchResponse did not allow unknown fields. This commit fixes the
test and ConstructingObjectParser such that it does now allow unknown
fields.

Relates #36938
  • Loading branch information
hub-cap authored Jan 16, 2019
1 parent 0160ba2 commit 86697f2
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,15 @@

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 PutWatchResponse implements ToXContentObject {
public class PutWatchResponse {

private static final ObjectParser<PutWatchResponse, Void> PARSER
= new ObjectParser<>("x_pack_put_watch_response", PutWatchResponse::new);
= new ObjectParser<>("x_pack_put_watch_response", true, PutWatchResponse::new);

static {
PARSER.declareString(PutWatchResponse::setId, new ParseField("_id"));
Expand Down Expand Up @@ -90,15 +88,6 @@ public int hashCode() {
return Objects.hash(id, version, created);
}

@Override
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
return builder.startObject()
.field("_id", id)
.field("_version", version)
.field("created", created)
.endObject();
}

public static PutWatchResponse fromXContent(XContentParser parser) throws IOException {
return PARSER.parse(parser, null);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 PutWatchResponseTests extends AbstractXContentTestCase<PutWatchResponse> {
import static org.elasticsearch.test.AbstractXContentTestCase.xContentTester;

@Override
protected PutWatchResponse createTestInstance() {
String id = randomAlphaOfLength(10);
long version = randomLongBetween(1, 10);
boolean created = randomBoolean();
return new PutWatchResponse(id, version, created);
public class PutWatchResponseTests extends ESTestCase {

public void testFromXContent() throws IOException {
xContentTester(this::createParser,
PutWatchResponseTests::createTestInstance,
PutWatchResponseTests::toXContent,
PutWatchResponse::fromXContent)
.supportsUnknownFields(true)
.assertToXContentEquivalence(false)
.test();
}

@Override
protected PutWatchResponse doParseInstance(XContentParser parser) throws IOException {
return PutWatchResponse.fromXContent(parser);
private static XContentBuilder toXContent(PutWatchResponse response, XContentBuilder builder) throws IOException {
return builder.startObject()
.field("_id", response.getId())
.field("_version", response.getVersion())
.field("created", response.isCreated())
.endObject();
}

@Override
protected boolean supportsUnknownFields() {
return false;
private static PutWatchResponse createTestInstance() {
String id = randomAlphaOfLength(10);
long version = randomLongBetween(1, 10);
boolean created = randomBoolean();
return new PutWatchResponse(id, version, created);
}
}

0 comments on commit 86697f2

Please sign in to comment.