optimize get/delete/index response xcontent generation
This commit is contained in:
parent
087b4e6f23
commit
c15a612b8a
|
@ -27,10 +27,7 @@ import org.elasticsearch.common.compress.lzf.LZFDecoder;
|
|||
import org.elasticsearch.common.io.stream.StreamInput;
|
||||
import org.elasticsearch.common.io.stream.StreamOutput;
|
||||
import org.elasticsearch.common.io.stream.Streamable;
|
||||
import org.elasticsearch.common.xcontent.ToXContent;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||
import org.elasticsearch.common.xcontent.XContentParser;
|
||||
import org.elasticsearch.common.xcontent.*;
|
||||
import org.elasticsearch.rest.action.support.RestXContentBuilder;
|
||||
|
||||
import java.io.IOException;
|
||||
|
@ -219,24 +216,31 @@ public class GetResponse implements ActionResponse, Streamable, Iterable<GetFiel
|
|||
return fields.values().iterator();
|
||||
}
|
||||
|
||||
static final class Fields {
|
||||
static final XContentBuilderString _INDEX = new XContentBuilderString("_index");
|
||||
static final XContentBuilderString _TYPE = new XContentBuilderString("_type");
|
||||
static final XContentBuilderString _ID = new XContentBuilderString("_id");
|
||||
static final XContentBuilderString FIELDS = new XContentBuilderString("fields");
|
||||
}
|
||||
|
||||
@Override public void toXContent(XContentBuilder builder, Params params) throws IOException {
|
||||
if (!exists()) {
|
||||
builder.startObject();
|
||||
builder.field("_index", index);
|
||||
builder.field("_type", type);
|
||||
builder.field("_id", id);
|
||||
builder.field(Fields._INDEX, index);
|
||||
builder.field(Fields._TYPE, type);
|
||||
builder.field(Fields._ID, id);
|
||||
builder.endObject();
|
||||
} else {
|
||||
builder.startObject();
|
||||
builder.field("_index", index);
|
||||
builder.field("_type", type);
|
||||
builder.field("_id", id);
|
||||
builder.field(Fields._INDEX, index);
|
||||
builder.field(Fields._TYPE, type);
|
||||
builder.field(Fields._ID, id);
|
||||
if (source != null) {
|
||||
RestXContentBuilder.restDocumentSource(source, builder, params);
|
||||
}
|
||||
|
||||
if (fields != null && !fields.isEmpty()) {
|
||||
builder.startObject("fields");
|
||||
builder.startObject(Fields.FIELDS);
|
||||
for (GetField field : fields.values()) {
|
||||
if (field.values().isEmpty()) {
|
||||
continue;
|
||||
|
|
|
@ -26,6 +26,7 @@ import org.elasticsearch.client.Client;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilderString;
|
||||
import org.elasticsearch.indices.IndexMissingException;
|
||||
import org.elasticsearch.rest.*;
|
||||
import org.elasticsearch.rest.action.support.RestXContentBuilder;
|
||||
|
@ -37,7 +38,7 @@ import static org.elasticsearch.common.unit.TimeValue.*;
|
|||
import static org.elasticsearch.rest.RestResponse.Status.*;
|
||||
|
||||
/**
|
||||
* @author kimchy (Shay Banon)
|
||||
* @author kimchy (shay.banon)
|
||||
*/
|
||||
public class RestDeleteIndexAction extends BaseRestHandler {
|
||||
|
||||
|
@ -54,8 +55,8 @@ public class RestDeleteIndexAction extends BaseRestHandler {
|
|||
try {
|
||||
XContentBuilder builder = RestXContentBuilder.restContentBuilder(request);
|
||||
builder.startObject()
|
||||
.field("ok", true)
|
||||
.field("acknowledged", response.acknowledged())
|
||||
.field(Fields.OK, true)
|
||||
.field(Fields.ACKNOWLEDGED, response.acknowledged())
|
||||
.endObject();
|
||||
channel.sendResponse(new XContentRestResponse(request, OK, builder));
|
||||
} catch (IOException e) {
|
||||
|
@ -78,4 +79,9 @@ public class RestDeleteIndexAction extends BaseRestHandler {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
static final class Fields {
|
||||
static final XContentBuilderString OK = new XContentBuilderString("ok");
|
||||
static final XContentBuilderString ACKNOWLEDGED = new XContentBuilderString("acknowledged");
|
||||
}
|
||||
}
|
|
@ -27,6 +27,7 @@ import org.elasticsearch.client.Client;
|
|||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilderString;
|
||||
import org.elasticsearch.rest.*;
|
||||
import org.elasticsearch.rest.action.support.RestXContentBuilder;
|
||||
|
||||
|
@ -90,10 +91,10 @@ public class RestIndexAction extends BaseRestHandler {
|
|||
try {
|
||||
XContentBuilder builder = RestXContentBuilder.restContentBuilder(request);
|
||||
builder.startObject()
|
||||
.field("ok", true)
|
||||
.field("_index", result.index())
|
||||
.field("_type", result.type())
|
||||
.field("_id", result.id())
|
||||
.field(Fields.OK, true)
|
||||
.field(Fields._INDEX, result.index())
|
||||
.field(Fields._TYPE, result.type())
|
||||
.field(Fields._ID, result.id())
|
||||
.endObject();
|
||||
channel.sendResponse(new XContentRestResponse(request, OK, builder));
|
||||
} catch (Exception e) {
|
||||
|
@ -110,4 +111,12 @@ public class RestIndexAction extends BaseRestHandler {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
static final class Fields {
|
||||
static final XContentBuilderString OK = new XContentBuilderString("ok");
|
||||
static final XContentBuilderString _INDEX = new XContentBuilderString("_index");
|
||||
static final XContentBuilderString _TYPE = new XContentBuilderString("_type");
|
||||
static final XContentBuilderString _ID = new XContentBuilderString("_id");
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue