Make DocWriteResponse a ToXContentObject
This involved changing also index, delete, update so that bulk can print them out in its own format.
This commit is contained in:
parent
d5510701a0
commit
8edf59c9e7
|
@ -28,6 +28,7 @@ import org.elasticsearch.common.io.stream.StreamInput;
|
||||||
import org.elasticsearch.common.io.stream.StreamOutput;
|
import org.elasticsearch.common.io.stream.StreamOutput;
|
||||||
import org.elasticsearch.common.io.stream.Writeable;
|
import org.elasticsearch.common.io.stream.Writeable;
|
||||||
import org.elasticsearch.common.xcontent.StatusToXContent;
|
import org.elasticsearch.common.xcontent.StatusToXContent;
|
||||||
|
import org.elasticsearch.common.xcontent.ToXContentObject;
|
||||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||||
import org.elasticsearch.index.IndexSettings;
|
import org.elasticsearch.index.IndexSettings;
|
||||||
import org.elasticsearch.index.seqno.SequenceNumbersService;
|
import org.elasticsearch.index.seqno.SequenceNumbersService;
|
||||||
|
@ -42,7 +43,7 @@ import java.util.Locale;
|
||||||
/**
|
/**
|
||||||
* A base class for the response of a write operation that involves a single doc
|
* A base class for the response of a write operation that involves a single doc
|
||||||
*/
|
*/
|
||||||
public abstract class DocWriteResponse extends ReplicationResponse implements WriteResponse, StatusToXContent {
|
public abstract class DocWriteResponse extends ReplicationResponse implements WriteResponse, StatusToXContent, ToXContentObject {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An enum that represents the the results of CRUD operations, primarily used to communicate the type of
|
* An enum that represents the the results of CRUD operations, primarily used to communicate the type of
|
||||||
|
@ -244,15 +245,22 @@ public abstract class DocWriteResponse extends ReplicationResponse implements Wr
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
|
public final XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
|
||||||
|
builder.startObject();
|
||||||
|
innerToXContent(builder, params);
|
||||||
|
builder.endObject();
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public XContentBuilder innerToXContent(XContentBuilder builder, Params params) throws IOException {
|
||||||
ReplicationResponse.ShardInfo shardInfo = getShardInfo();
|
ReplicationResponse.ShardInfo shardInfo = getShardInfo();
|
||||||
builder.field("_index", shardId.getIndexName())
|
builder.field("_index", shardId.getIndexName())
|
||||||
.field("_type", type)
|
.field("_type", type)
|
||||||
.field("_id", id)
|
.field("_id", id)
|
||||||
.field("_version", version)
|
.field("_version", version)
|
||||||
.field("result", getResult().getLowercase());
|
.field("result", getResult().getLowercase());
|
||||||
if (forcedRefresh) {
|
if (forcedRefresh) {
|
||||||
builder.field("forced_refresh", forcedRefresh);
|
builder.field("forced_refresh", true);
|
||||||
}
|
}
|
||||||
shardInfo.toXContent(builder, params);
|
shardInfo.toXContent(builder, params);
|
||||||
if (getSeqNo() >= 0) {
|
if (getSeqNo() >= 0) {
|
||||||
|
|
|
@ -54,7 +54,7 @@ public class BulkItemResponse implements Streamable, StatusToXContent {
|
||||||
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
|
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
|
||||||
builder.startObject(opType.getLowercase());
|
builder.startObject(opType.getLowercase());
|
||||||
if (failure == null) {
|
if (failure == null) {
|
||||||
response.toXContent(builder, params);
|
response.innerToXContent(builder, params);
|
||||||
builder.field(Fields.STATUS, response.status().getStatus());
|
builder.field(Fields.STATUS, response.status().getStatus());
|
||||||
} else {
|
} else {
|
||||||
builder.field(Fields._INDEX, failure.getIndex());
|
builder.field(Fields._INDEX, failure.getIndex());
|
||||||
|
|
|
@ -48,9 +48,9 @@ public class DeleteResponse extends DocWriteResponse {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
|
public XContentBuilder innerToXContent(XContentBuilder builder, Params params) throws IOException {
|
||||||
builder.field("found", result == Result.DELETED);
|
builder.field("found", result == Result.DELETED);
|
||||||
super.toXContent(builder, params);
|
super.innerToXContent(builder, params);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,8 +62,8 @@ public class IndexResponse extends DocWriteResponse {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
|
public XContentBuilder innerToXContent(XContentBuilder builder, Params params) throws IOException {
|
||||||
super.toXContent(builder, params);
|
super.innerToXContent(builder, params);
|
||||||
builder.field("created", result == Result.CREATED);
|
builder.field("created", result == Result.CREATED);
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,8 +87,8 @@ public class UpdateResponse extends DocWriteResponse {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
|
public XContentBuilder innerToXContent(XContentBuilder builder, Params params) throws IOException {
|
||||||
super.toXContent(builder, params);
|
super.innerToXContent(builder, params);
|
||||||
if (getGetResult() != null) {
|
if (getGetResult() != null) {
|
||||||
builder.startObject(Fields.GET);
|
builder.startObject(Fields.GET);
|
||||||
getGetResult().toXContentEmbedded(builder, params);
|
getGetResult().toXContentEmbedded(builder, params);
|
||||||
|
|
|
@ -99,18 +99,14 @@ public class DocWriteResponseTests extends ESTestCase {
|
||||||
response.setShardInfo(new ShardInfo(1, 1));
|
response.setShardInfo(new ShardInfo(1, 1));
|
||||||
response.setForcedRefresh(false);
|
response.setForcedRefresh(false);
|
||||||
try (XContentBuilder builder = JsonXContent.contentBuilder()) {
|
try (XContentBuilder builder = JsonXContent.contentBuilder()) {
|
||||||
builder.startObject();
|
|
||||||
response.toXContent(builder, ToXContent.EMPTY_PARAMS);
|
response.toXContent(builder, ToXContent.EMPTY_PARAMS);
|
||||||
builder.endObject();
|
|
||||||
try (XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes())) {
|
try (XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes())) {
|
||||||
assertThat(parser.map(), not(hasKey("forced_refresh")));
|
assertThat(parser.map(), not(hasKey("forced_refresh")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
response.setForcedRefresh(true);
|
response.setForcedRefresh(true);
|
||||||
try (XContentBuilder builder = JsonXContent.contentBuilder()) {
|
try (XContentBuilder builder = JsonXContent.contentBuilder()) {
|
||||||
builder.startObject();
|
|
||||||
response.toXContent(builder, ToXContent.EMPTY_PARAMS);
|
response.toXContent(builder, ToXContent.EMPTY_PARAMS);
|
||||||
builder.endObject();
|
|
||||||
try (XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes())) {
|
try (XContentParser parser = createParser(JsonXContent.jsonXContent, builder.bytes())) {
|
||||||
assertThat(parser.map(), hasEntry("forced_refresh", true));
|
assertThat(parser.map(), hasEntry("forced_refresh", true));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue