allow to filter out settings from REST serivces

This commit is contained in:
kimchy 2010-05-06 09:06:32 +03:00
parent db4afc8750
commit 66f011ae76
37 changed files with 188 additions and 95 deletions

View File

@ -19,13 +19,13 @@
package org.elasticsearch.http;
import org.elasticsearch.util.guice.inject.Inject;
import org.elasticsearch.ElasticSearchException;
import org.elasticsearch.action.admin.cluster.node.info.TransportNodesInfo;
import org.elasticsearch.rest.JsonThrowableRestResponse;
import org.elasticsearch.rest.RestController;
import org.elasticsearch.rest.XContentThrowableRestResponse;
import org.elasticsearch.threadpool.ThreadPool;
import org.elasticsearch.util.component.AbstractLifecycleComponent;
import org.elasticsearch.util.guice.inject.Inject;
import org.elasticsearch.util.path.PathTrie;
import org.elasticsearch.util.settings.Settings;
@ -110,7 +110,7 @@ public class HttpServer extends AbstractLifecycleComponent<HttpServer> {
httpHandler.handleRequest(request, channel);
} catch (Exception e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response for uri [" + request.uri() + "]", e1);
}
@ -122,7 +122,7 @@ public class HttpServer extends AbstractLifecycleComponent<HttpServer> {
httpHandler.handleRequest(request, channel);
} catch (Exception e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response for uri [" + request.uri() + "]", e1);
}

View File

@ -82,7 +82,7 @@ public class RestController extends AbstractLifecycleComponent<RestController> {
handler.handleRequest(request, channel);
} catch (Exception e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response for uri [" + request.uri() + "]", e1);
}

View File

@ -28,7 +28,7 @@ import java.io.IOException;
/**
* @author kimchy (shay.banon)
*/
public class JsonRestResponse extends AbstractRestResponse {
public class XContentRestResponse extends AbstractRestResponse {
private static final byte[] END_JSONP;
@ -51,13 +51,13 @@ public class JsonRestResponse extends AbstractRestResponse {
private final XContentBuilder builder;
public JsonRestResponse(RestRequest request, Status status) {
public XContentRestResponse(RestRequest request, Status status) {
this.builder = null;
this.status = status;
this.prefixUtf8Result = startJsonp(request);
}
public JsonRestResponse(RestRequest request, Status status, XContentBuilder builder) throws IOException {
public XContentRestResponse(RestRequest request, Status status, XContentBuilder builder) throws IOException {
this.builder = builder;
this.status = status;
this.prefixUtf8Result = startJsonp(request);

View File

@ -27,15 +27,15 @@ import static org.elasticsearch.ExceptionsHelper.*;
import static org.elasticsearch.rest.action.support.RestXContentBuilder.*;
/**
* @author kimchy (Shay Banon)
* @author kimchy (shay.banon)
*/
public class JsonThrowableRestResponse extends JsonRestResponse {
public class XContentThrowableRestResponse extends XContentRestResponse {
public JsonThrowableRestResponse(RestRequest request, Throwable t) throws IOException {
public XContentThrowableRestResponse(RestRequest request, Throwable t) throws IOException {
this(request, Status.INTERNAL_SERVER_ERROR, t);
}
public JsonThrowableRestResponse(RestRequest request, Status status, Throwable t) throws IOException {
public XContentThrowableRestResponse(RestRequest request, Status status, Throwable t) throws IOException {
super(request, status, convert(request, t));
}

View File

@ -69,7 +69,7 @@ public class RestClusterHealthAction extends BaseRestHandler {
} catch (Exception e) {
try {
XContentBuilder builder = RestXContentBuilder.restContentBuilder(request);
channel.sendResponse(new JsonRestResponse(request, PRECONDITION_FAILED, builder.startObject().field("error", e.getMessage()).endObject()));
channel.sendResponse(new XContentRestResponse(request, PRECONDITION_FAILED, builder.startObject().field("error", e.getMessage()).endObject()));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}
@ -157,7 +157,7 @@ public class RestClusterHealthAction extends BaseRestHandler {
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, RestResponse.Status.OK, builder));
channel.sendResponse(new XContentRestResponse(request, RestResponse.Status.OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -165,7 +165,7 @@ public class RestClusterHealthAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -29,6 +29,7 @@ import org.elasticsearch.rest.action.support.RestActions;
import org.elasticsearch.rest.action.support.RestXContentBuilder;
import org.elasticsearch.util.guice.inject.Inject;
import org.elasticsearch.util.settings.Settings;
import org.elasticsearch.util.settings.SettingsFilter;
import org.elasticsearch.util.xcontent.builder.XContentBuilder;
import java.io.IOException;
@ -39,11 +40,15 @@ import java.util.Map;
*/
public class RestNodesInfoAction extends BaseRestHandler {
@Inject public RestNodesInfoAction(Settings settings, Client client, RestController controller) {
super(settings, client);
private final SettingsFilter settingsFilter;
@Inject public RestNodesInfoAction(Settings settings, Client client, RestController controller,
SettingsFilter settingsFilter) {
super(settings, client);
controller.registerHandler(RestRequest.Method.GET, "/_cluster/nodes", this);
controller.registerHandler(RestRequest.Method.GET, "/_cluster/nodes/{nodeId}", this);
this.settingsFilter = settingsFilter;
}
@Override public void handleRequest(final RestRequest request, final RestChannel channel) {
@ -77,7 +82,8 @@ public class RestNodesInfoAction extends BaseRestHandler {
if (includeSettings) {
builder.startObject("settings");
for (Map.Entry<String, String> entry : nodeInfo.settings().getAsMap().entrySet()) {
Settings settings = settingsFilter.filterSettings(nodeInfo.settings());
for (Map.Entry<String, String> entry : settings.getAsMap().entrySet()) {
builder.field(entry.getKey(), entry.getValue());
}
builder.endObject();
@ -88,7 +94,7 @@ public class RestNodesInfoAction extends BaseRestHandler {
builder.endObject();
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, RestResponse.Status.OK, builder));
channel.sendResponse(new XContentRestResponse(request, RestResponse.Status.OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -96,7 +102,7 @@ public class RestNodesInfoAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -66,7 +66,7 @@ public class RestNodesRestartAction extends BaseRestHandler {
builder.endObject();
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, RestResponse.Status.OK, builder));
channel.sendResponse(new XContentRestResponse(request, RestResponse.Status.OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -74,7 +74,7 @@ public class RestNodesRestartAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -66,7 +66,7 @@ public class RestNodesShutdownAction extends BaseRestHandler {
builder.endObject();
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, RestResponse.Status.OK, builder));
channel.sendResponse(new XContentRestResponse(request, RestResponse.Status.OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -74,7 +74,7 @@ public class RestNodesShutdownAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -64,7 +64,7 @@ public class RestBroadcastPingAction extends BaseRestHandler {
builder.field("ok", true);
buildBroadcastShardsHeader(builder, response);
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -72,7 +72,7 @@ public class RestBroadcastPingAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -68,7 +68,7 @@ public class RestReplicationPingAction extends BaseRestHandler {
.endObject();
}
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -76,7 +76,7 @@ public class RestReplicationPingAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -55,7 +55,7 @@ public class RestSinglePingAction extends BaseRestHandler {
try {
XContentBuilder generator = RestXContentBuilder.restContentBuilder(request);
generator.startObject().field("ok", true).endObject();
channel.sendResponse(new JsonRestResponse(request, OK, generator));
channel.sendResponse(new XContentRestResponse(request, OK, generator));
} catch (Exception e) {
onFailure(e);
}
@ -63,7 +63,7 @@ public class RestSinglePingAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -33,20 +33,25 @@ import org.elasticsearch.rest.*;
import org.elasticsearch.rest.action.support.RestXContentBuilder;
import org.elasticsearch.util.guice.inject.Inject;
import org.elasticsearch.util.settings.Settings;
import org.elasticsearch.util.settings.SettingsFilter;
import org.elasticsearch.util.xcontent.builder.XContentBuilder;
import java.io.IOException;
import java.util.Map;
/**
* @author kimchy (Shay Banon)
* @author kimchy (shay.banon)
*/
public class RestClusterStateAction extends BaseRestHandler {
@Inject public RestClusterStateAction(Settings settings, Client client, RestController controller) {
super(settings, client);
private final SettingsFilter settingsFilter;
@Inject public RestClusterStateAction(Settings settings, Client client, RestController controller,
SettingsFilter settingsFilter) {
super(settings, client);
controller.registerHandler(RestRequest.Method.GET, "/_cluster/state", this);
this.settingsFilter = settingsFilter;
}
@Override public void handleRequest(final RestRequest request, final RestChannel channel) {
@ -65,7 +70,8 @@ public class RestClusterStateAction extends BaseRestHandler {
builder.startObject(indexMetaData.index());
builder.startObject("settings");
for (Map.Entry<String, String> entry : indexMetaData.settings().getAsMap().entrySet()) {
Settings settings = settingsFilter.filterSettings(indexMetaData.settings());
for (Map.Entry<String, String> entry : settings.getAsMap().entrySet()) {
builder.field(entry.getKey(), entry.getValue());
}
builder.endObject();
@ -119,7 +125,7 @@ public class RestClusterStateAction extends BaseRestHandler {
builder.endObject();
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, RestResponse.Status.OK, builder));
channel.sendResponse(new XContentRestResponse(request, RestResponse.Status.OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -138,7 +144,7 @@ public class RestClusterStateAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -107,7 +107,7 @@ public class RestIndicesAliasesAction extends BaseRestHandler {
}
} catch (Exception e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.warn("Failed to send response", e1);
return;
@ -120,7 +120,7 @@ public class RestIndicesAliasesAction extends BaseRestHandler {
builder.startObject()
.field("ok", true)
.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -128,7 +128,7 @@ public class RestIndicesAliasesAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -67,7 +67,7 @@ public class RestClearIndicesCacheAction extends BaseRestHandler {
} catch (Exception e) {
try {
XContentBuilder builder = RestXContentBuilder.restContentBuilder(request);
channel.sendResponse(new JsonRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject()));
channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject()));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}
@ -83,7 +83,7 @@ public class RestClearIndicesCacheAction extends BaseRestHandler {
buildBroadcastShardsHeader(builder, response);
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -91,7 +91,7 @@ public class RestClearIndicesCacheAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -59,7 +59,7 @@ public class RestCreateIndexAction extends BaseRestHandler {
indexSettings = ImmutableSettings.settingsBuilder().loadFromSource(bodySettings).build();
} catch (Exception e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, BAD_REQUEST, new SettingsException("Failed to parse index settings", e)));
channel.sendResponse(new XContentThrowableRestResponse(request, BAD_REQUEST, new SettingsException("Failed to parse index settings", e)));
} catch (IOException e1) {
logger.warn("Failed to send response", e1);
return;
@ -76,7 +76,7 @@ public class RestCreateIndexAction extends BaseRestHandler {
.field("ok", true)
.field("acknowledged", response.acknowledged())
.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -87,9 +87,9 @@ public class RestCreateIndexAction extends BaseRestHandler {
Throwable t = unwrapCause(e);
if (t instanceof IndexAlreadyExistsException || t instanceof InvalidIndexNameException) {
XContentBuilder builder = RestXContentBuilder.restContentBuilder(request);
channel.sendResponse(new JsonRestResponse(request, BAD_REQUEST, builder.startObject().field("error", t.getMessage()).endObject()));
channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", t.getMessage()).endObject()));
} else {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
}
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);

View File

@ -57,7 +57,7 @@ public class RestDeleteIndexAction extends BaseRestHandler {
.field("ok", true)
.field("acknowledged", response.acknowledged())
.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (IOException e) {
onFailure(e);
}
@ -68,9 +68,9 @@ public class RestDeleteIndexAction extends BaseRestHandler {
Throwable t = unwrapCause(e);
if (t instanceof IndexMissingException) {
XContentBuilder builder = RestXContentBuilder.restContentBuilder(request);
channel.sendResponse(new JsonRestResponse(request, BAD_REQUEST, builder.startObject().field("error", t.getMessage()).endObject()));
channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", t.getMessage()).endObject()));
} else {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
}
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);

View File

@ -72,7 +72,7 @@ public class RestFlushAction extends BaseRestHandler {
buildBroadcastShardsHeader(builder, response);
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -80,7 +80,7 @@ public class RestFlushAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -71,7 +71,7 @@ public class RestGatewaySnapshotAction extends BaseRestHandler {
}
builder.endObject();
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -79,7 +79,7 @@ public class RestGatewaySnapshotAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -69,7 +69,7 @@ public class RestPutMappingAction extends BaseRestHandler {
.field("ok", true)
.field("acknowledged", response.acknowledged());
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (IOException e) {
onFailure(e);
}
@ -80,9 +80,9 @@ public class RestPutMappingAction extends BaseRestHandler {
XContentBuilder builder = RestXContentBuilder.restContentBuilder(request);
Throwable t = unwrapCause(e);
if (t instanceof IndexMissingException || t instanceof InvalidTypeNameException || t instanceof MergeMappingException) {
channel.sendResponse(new JsonRestResponse(request, BAD_REQUEST, builder.startObject().field("error", t.getMessage()).endObject()));
channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", t.getMessage()).endObject()));
} else {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
}
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);

View File

@ -71,7 +71,7 @@ public class RestOptimizeAction extends BaseRestHandler {
} catch (Exception e) {
try {
XContentBuilder builder = RestXContentBuilder.restContentBuilder(request);
channel.sendResponse(new JsonRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject()));
channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject()));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}
@ -87,7 +87,7 @@ public class RestOptimizeAction extends BaseRestHandler {
buildBroadcastShardsHeader(builder, response);
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -95,7 +95,7 @@ public class RestOptimizeAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -71,7 +71,7 @@ public class RestRefreshAction extends BaseRestHandler {
buildBroadcastShardsHeader(builder, response);
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -79,7 +79,7 @@ public class RestRefreshAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -27,6 +27,7 @@ import org.elasticsearch.rest.*;
import org.elasticsearch.rest.action.support.RestXContentBuilder;
import org.elasticsearch.util.guice.inject.Inject;
import org.elasticsearch.util.settings.Settings;
import org.elasticsearch.util.settings.SettingsFilter;
import org.elasticsearch.util.xcontent.builder.XContentBuilder;
import java.io.IOException;
@ -41,10 +42,15 @@ import static org.elasticsearch.rest.action.support.RestActions.*;
*/
public class RestIndicesStatusAction extends BaseRestHandler {
@Inject public RestIndicesStatusAction(Settings settings, Client client, RestController controller) {
private final SettingsFilter settingsFilter;
@Inject public RestIndicesStatusAction(Settings settings, Client client, RestController controller,
SettingsFilter settingsFilter) {
super(settings, client);
controller.registerHandler(GET, "/_status", this);
controller.registerHandler(GET, "/{index}/_status", this);
this.settingsFilter = settingsFilter;
}
@Override public void handleRequest(final RestRequest request, final RestChannel channel) {
@ -73,7 +79,8 @@ public class RestIndicesStatusAction extends BaseRestHandler {
builder.array("aliases", indexStatus.settings().getAsArray("index.aliases"));
builder.startObject("settings");
for (Map.Entry<String, String> entry : indexStatus.settings().getAsMap().entrySet()) {
Settings settings = settingsFilter.filterSettings(indexStatus.settings());
for (Map.Entry<String, String> entry : settings.getAsMap().entrySet()) {
builder.field(entry.getKey(), entry.getValue());
}
builder.endObject();
@ -150,7 +157,7 @@ public class RestIndicesStatusAction extends BaseRestHandler {
builder.endObject();
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -158,7 +165,7 @@ public class RestIndicesStatusAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -75,7 +75,7 @@ public class RestCountAction extends BaseRestHandler {
} catch (Exception e) {
try {
XContentBuilder builder = RestXContentBuilder.restContentBuilder(request);
channel.sendResponse(new JsonRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject()));
channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject()));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}
@ -92,7 +92,7 @@ public class RestCountAction extends BaseRestHandler {
buildBroadcastShardsHeader(builder, response);
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -100,7 +100,7 @@ public class RestCountAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -61,7 +61,7 @@ public class RestDeleteAction extends BaseRestHandler {
.field("_type", result.type())
.field("_id", result.id())
.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -69,7 +69,7 @@ public class RestDeleteAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -64,7 +64,7 @@ public class RestDeleteByQueryAction extends BaseRestHandler {
} catch (Exception e) {
try {
XContentBuilder builder = RestXContentBuilder.restContentBuilder(request);
channel.sendResponse(new JsonRestResponse(request, PRECONDITION_FAILED, builder.startObject().field("error", e.getMessage()).endObject()));
channel.sendResponse(new XContentRestResponse(request, PRECONDITION_FAILED, builder.startObject().field("error", e.getMessage()).endObject()));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}
@ -91,7 +91,7 @@ public class RestDeleteByQueryAction extends BaseRestHandler {
builder.endObject();
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -99,7 +99,7 @@ public class RestDeleteByQueryAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -80,7 +80,7 @@ public class RestGetAction extends BaseRestHandler {
builder.field("_type", response.type());
builder.field("_id", response.id());
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, NOT_FOUND, builder));
channel.sendResponse(new XContentRestResponse(request, NOT_FOUND, builder));
} else {
XContentBuilder builder = restContentBuilder(request);
builder.startObject();
@ -118,7 +118,7 @@ public class RestGetAction extends BaseRestHandler {
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
}
} catch (Exception e) {
onFailure(e);
@ -127,7 +127,7 @@ public class RestGetAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -67,7 +67,7 @@ public class RestIndexAction extends BaseRestHandler {
} else {
try {
XContentBuilder builder = RestXContentBuilder.restContentBuilder(request);
channel.sendResponse(new JsonRestResponse(request, BAD_REQUEST, builder.startObject().field("error", "opType [" + sOpType + "] not allowed, either [index] or [create] are allowed").endObject()));
channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", "opType [" + sOpType + "] not allowed, either [index] or [create] are allowed").endObject()));
} catch (IOException e1) {
logger.warn("Failed to send response", e1);
return;
@ -88,7 +88,7 @@ public class RestIndexAction extends BaseRestHandler {
.field("_type", result.type())
.field("_id", result.id())
.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -96,7 +96,7 @@ public class RestIndexAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -96,10 +96,10 @@ public class RestMainAction extends BaseRestHandler {
builder.endObject();
}
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, RestResponse.Status.OK, builder));
channel.sendResponse(new XContentRestResponse(request, RestResponse.Status.OK, builder));
} catch (Exception e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.warn("Failed to send response", e);
}

View File

@ -83,7 +83,7 @@ public class RestMoreLikeThisAction extends BaseRestHandler {
} catch (Exception e) {
try {
XContentBuilder builder = restContentBuilder(request);
channel.sendResponse(new JsonRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject()));
channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject()));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}
@ -97,7 +97,7 @@ public class RestMoreLikeThisAction extends BaseRestHandler {
builder.startObject();
response.toXContent(builder, request);
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -105,7 +105,7 @@ public class RestMoreLikeThisAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -82,7 +82,7 @@ public class RestSearchAction extends BaseRestHandler {
} catch (Exception e) {
try {
XContentBuilder builder = restContentBuilder(request);
channel.sendResponse(new JsonRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject()));
channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject()));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}
@ -95,7 +95,7 @@ public class RestSearchAction extends BaseRestHandler {
builder.startObject();
response.toXContent(builder, request);
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -103,7 +103,7 @@ public class RestSearchAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -68,7 +68,7 @@ public class RestSearchScrollAction extends BaseRestHandler {
} catch (Exception e) {
try {
XContentBuilder builder = restContentBuilder(request);
channel.sendResponse(new JsonRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject()));
channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject()));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}
@ -82,7 +82,7 @@ public class RestSearchScrollAction extends BaseRestHandler {
builder.startObject();
response.toXContent(builder, request);
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -90,7 +90,7 @@ public class RestSearchScrollAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -109,7 +109,7 @@ public class RestTermsAction extends BaseRestHandler {
} catch (Exception e) {
try {
XContentBuilder builder = RestXContentBuilder.restContentBuilder(request);
channel.sendResponse(new JsonRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject()));
channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject()));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}
@ -159,7 +159,7 @@ public class RestTermsAction extends BaseRestHandler {
builder.endObject();
builder.endObject();
channel.sendResponse(new JsonRestResponse(request, OK, builder));
channel.sendResponse(new XContentRestResponse(request, OK, builder));
} catch (Exception e) {
onFailure(e);
}
@ -167,7 +167,7 @@ public class RestTermsAction extends BaseRestHandler {
@Override public void onFailure(Throwable e) {
try {
channel.sendResponse(new JsonThrowableRestResponse(request, e));
channel.sendResponse(new XContentThrowableRestResponse(request, e));
} catch (IOException e1) {
logger.error("Failed to send failure response", e1);
}

View File

@ -345,6 +345,13 @@ public class ImmutableSettings implements Settings {
}
/**
* Removes the provided setting.
*/
public String remove(String key) {
return map.remove(key);
}
/**
* Returns a setting value based on the setting key.
*/

View File

@ -0,0 +1,39 @@
package org.elasticsearch.util.settings;
import org.elasticsearch.util.component.AbstractComponent;
import org.elasticsearch.util.guice.inject.Inject;
import java.util.concurrent.CopyOnWriteArrayList;
/**
* @author kimchy (shay.banon)
*/
public class SettingsFilter extends AbstractComponent {
public static interface Filter {
void filter(ImmutableSettings.Builder settings);
}
private final CopyOnWriteArrayList<Filter> filters = new CopyOnWriteArrayList<Filter>();
@Inject public SettingsFilter(Settings settings) {
super(settings);
}
public void addFilter(Filter filter) {
filters.add(filter);
}
public void removeFilter(Filter filter) {
filters.remove(filter);
}
public Settings filterSettings(Settings settings) {
ImmutableSettings.Builder builder = ImmutableSettings.settingsBuilder().put(settings);
for (Filter filter : filters) {
filter.filter(builder);
}
return builder.build();
}
}

View File

@ -36,5 +36,6 @@ public class SettingsModule extends AbstractModule {
@Override protected void configure() {
bind(Settings.class).toInstance(settings);
bind(SettingsFilter.class).asEagerSingleton();
}
}

View File

@ -24,7 +24,9 @@ import org.elasticsearch.ElasticSearchIllegalStateException;
import org.elasticsearch.cloud.jclouds.JCloudsUtils;
import org.elasticsearch.util.component.AbstractLifecycleComponent;
import org.elasticsearch.util.guice.inject.Inject;
import org.elasticsearch.util.settings.ImmutableSettings;
import org.elasticsearch.util.settings.Settings;
import org.elasticsearch.util.settings.SettingsFilter;
import org.jclouds.blobstore.BlobStoreContext;
import org.jclouds.blobstore.BlobStoreContextFactory;
@ -39,7 +41,7 @@ public class CloudBlobStoreService extends AbstractLifecycleComponent<CloudBlobS
private final BlobStoreContext blobStoreContext;
@Inject public CloudBlobStoreService(Settings settings) throws IOException {
@Inject public CloudBlobStoreService(Settings settings, SettingsFilter settingsFilter) throws IOException {
super(settings);
String type = componentSettings.get("type");
@ -64,6 +66,8 @@ public class CloudBlobStoreService extends AbstractLifecycleComponent<CloudBlobS
} else {
blobStoreContext = null;
}
settingsFilter.addFilter(new BlobStorSettingsFilter());
}
@Override protected void doStart() throws ElasticSearchException {
@ -84,4 +88,14 @@ public class CloudBlobStoreService extends AbstractLifecycleComponent<CloudBlobS
}
return blobStoreContext;
}
private static class BlobStorSettingsFilter implements SettingsFilter.Filter {
@Override public void filter(ImmutableSettings.Builder settings) {
settings.remove("cloud.key");
settings.remove("cloud.account");
settings.remove("cloud.blobstore.key");
settings.remove("cloud.blobstore.account");
}
}
}

View File

@ -24,7 +24,9 @@ import org.elasticsearch.ElasticSearchIllegalStateException;
import org.elasticsearch.cloud.jclouds.JCloudsUtils;
import org.elasticsearch.util.component.AbstractLifecycleComponent;
import org.elasticsearch.util.guice.inject.Inject;
import org.elasticsearch.util.settings.ImmutableSettings;
import org.elasticsearch.util.settings.Settings;
import org.elasticsearch.util.settings.SettingsFilter;
import org.jclouds.compute.ComputeServiceContext;
import org.jclouds.compute.ComputeServiceContextFactory;
@ -39,7 +41,7 @@ public class CloudComputeService extends AbstractLifecycleComponent<CloudCompute
private final ComputeServiceContext computeServiceContext;
@Inject public CloudComputeService(Settings settings) throws IOException {
@Inject public CloudComputeService(Settings settings, SettingsFilter filter) throws IOException {
super(settings);
String type = componentSettings.get("type");
@ -64,6 +66,8 @@ public class CloudComputeService extends AbstractLifecycleComponent<CloudCompute
} else {
computeServiceContext = null;
}
filter.addFilter(new ComputeSettingsFilter());
}
@Override protected void doStart() throws ElasticSearchException {
@ -84,4 +88,13 @@ public class CloudComputeService extends AbstractLifecycleComponent<CloudCompute
}
return this.computeServiceContext;
}
private static class ComputeSettingsFilter implements SettingsFilter.Filter {
@Override public void filter(ImmutableSettings.Builder settings) {
settings.remove("cloud.key");
settings.remove("cloud.account");
settings.remove("cloud.compute.key");
settings.remove("cloud.compute.account");
}
}
}