From f19f729498a76158095549cbdcebbb9f6d0f91e4 Mon Sep 17 00:00:00 2001 From: Shay Banon Date: Mon, 31 Mar 2014 03:24:14 +0200 Subject: [PATCH] Cleanup Rest Response simplify rest response class hierarchy, by using BytesReference for content, and handling JSONP internally in the respective channel that sends the response. Also, handle the future case where bytes might be releasable, when we start to potentially recycle bytes output stream. --- .../netty/ReleaseChannelFutureListener.java} | 31 ++-- .../org/elasticsearch/http/HttpResponse.java | 29 ---- .../org/elasticsearch/http/HttpServer.java | 21 ++- .../http/netty/HttpRequestHandler.java | 3 +- .../http/netty/NettyHttpChannel.java | 132 ++++++++-------- .../http/netty/NettyHttpRequest.java | 4 + .../rest/AbstractRestResponse.java | 81 ---------- .../AbstractRestResponseActionListener.java | 2 +- ...cknowledgedRestResponseActionListener.java | 2 +- .../elasticsearch/rest/BytesRestResponse.java | 127 ++++++++++++--- .../rest/HttpRedirectRestResponse.java | 35 ----- .../elasticsearch/rest/RestController.java | 9 +- .../org/elasticsearch/rest/RestResponse.java | 70 +++++---- .../elasticsearch/rest/Utf8RestResponse.java | 116 -------------- .../rest/XContentRestResponse.java | 148 ------------------ .../rest/XContentThrowableRestResponse.java | 82 ---------- .../health/RestClusterHealthAction.java | 6 +- .../hotthreads/RestNodesHotThreadsAction.java | 4 +- .../node/info/RestNodesInfoAction.java | 4 +- .../node/restart/RestNodesRestartAction.java | 4 +- .../shutdown/RestNodesShutdownAction.java | 4 +- .../node/stats/RestNodesStatsAction.java | 4 +- .../get/RestGetRepositoriesAction.java | 4 +- .../reroute/RestClusterRerouteAction.java | 2 +- .../RestClusterGetSettingsAction.java | 4 +- .../RestClusterUpdateSettingsAction.java | 2 +- .../shards/RestClusterSearchShardsAction.java | 4 +- .../create/RestCreateSnapshotAction.java | 4 +- .../snapshots/get/RestGetSnapshotsAction.java | 4 +- .../restore/RestRestoreSnapshotAction.java | 4 +- .../status/RestSnapshotsStatusAction.java | 2 +- .../cluster/state/RestClusterStateAction.java | 4 +- .../cluster/stats/RestClusterStatsAction.java | 4 +- .../tasks/RestPendingClusterTasksAction.java | 4 +- .../alias/RestIndicesAliasesAction.java | 2 +- .../alias/get/RestGetAliasesAction.java | 8 +- .../get/RestGetIndicesAliasesAction.java | 4 +- .../alias/head/RestAliasesExistAction.java | 6 +- .../alias/put/RestIndexPutAliasAction.java | 2 +- .../indices/analyze/RestAnalyzeAction.java | 6 +- .../clear/RestClearIndicesCacheAction.java | 6 +- .../indices/create/RestCreateIndexAction.java | 2 +- .../indices/RestIndicesExistsAction.java | 6 +- .../exists/types/RestTypesExistsAction.java | 6 +- .../admin/indices/flush/RestFlushAction.java | 4 +- .../get/RestGetFieldMappingAction.java | 6 +- .../mapping/get/RestGetMappingAction.java | 12 +- .../indices/optimize/RestOptimizeAction.java | 6 +- .../indices/recovery/RestRecoveryAction.java | 4 +- .../indices/refresh/RestRefreshAction.java | 4 +- .../segments/RestIndicesSegmentsAction.java | 4 +- .../settings/RestGetSettingsAction.java | 4 +- .../settings/RestUpdateSettingsAction.java | 2 +- .../indices/stats/RestIndicesStatsAction.java | 4 +- .../status/RestIndicesStatusAction.java | 4 +- .../get/RestGetIndexTemplateAction.java | 4 +- .../head/RestHeadIndexTemplateAction.java | 6 +- .../put/RestPutIndexTemplateAction.java | 2 +- .../query/RestValidateQueryAction.java | 6 +- .../warmer/get/RestGetWarmerAction.java | 6 +- .../rest/action/bulk/RestBulkAction.java | 6 +- .../rest/action/cat/AbstractCatAction.java | 4 +- .../rest/action/cat/RestAliasAction.java | 4 +- .../rest/action/cat/RestAllocationAction.java | 6 +- .../rest/action/cat/RestCatAction.java | 4 +- .../rest/action/cat/RestCountAction.java | 4 +- .../rest/action/cat/RestHealthAction.java | 4 +- .../rest/action/cat/RestIndicesAction.java | 6 +- .../rest/action/cat/RestMasterAction.java | 4 +- .../rest/action/cat/RestNodesAction.java | 8 +- .../cat/RestPendingClusterTasksAction.java | 2 +- .../rest/action/cat/RestRecoveryAction.java | 6 +- .../rest/action/cat/RestSegmentsAction.java | 4 +- .../rest/action/count/RestCountAction.java | 6 +- .../rest/action/delete/RestDeleteAction.java | 4 +- .../RestDeleteByQueryAction.java | 6 +- .../action/explain/RestExplainAction.java | 4 +- .../rest/action/get/RestGetAction.java | 6 +- .../rest/action/get/RestGetSourceAction.java | 8 +- .../rest/action/get/RestHeadAction.java | 6 +- .../rest/action/get/RestMultiGetAction.java | 6 +- .../rest/action/index/RestIndexAction.java | 6 +- .../rest/action/main/RestMainAction.java | 8 +- .../action/mlt/RestMoreLikeThisAction.java | 6 +- .../percolate/RestMultiPercolateAction.java | 6 +- .../action/percolate/RestPercolateAction.java | 4 +- .../action/search/RestClearScrollAction.java | 4 +- .../action/search/RestMultiSearchAction.java | 6 +- .../rest/action/search/RestSearchAction.java | 6 +- .../action/search/RestSearchScrollAction.java | 6 +- .../action/suggest/RestSuggestAction.java | 6 +- .../rest/action/support/RestTable.java | 4 +- .../RestMultiTermVectorsAction.java | 6 +- .../termvector/RestTermVectorAction.java | 6 +- .../rest/action/update/RestUpdateAction.java | 6 +- .../TestResponseHeaderRestAction.java | 4 +- 96 files changed, 449 insertions(+), 829 deletions(-) rename src/main/java/org/elasticsearch/{rest/StringRestResponse.java => common/netty/ReleaseChannelFutureListener.java} (58%) delete mode 100644 src/main/java/org/elasticsearch/http/HttpResponse.java delete mode 100644 src/main/java/org/elasticsearch/rest/AbstractRestResponse.java delete mode 100644 src/main/java/org/elasticsearch/rest/HttpRedirectRestResponse.java delete mode 100644 src/main/java/org/elasticsearch/rest/Utf8RestResponse.java delete mode 100644 src/main/java/org/elasticsearch/rest/XContentRestResponse.java delete mode 100644 src/main/java/org/elasticsearch/rest/XContentThrowableRestResponse.java diff --git a/src/main/java/org/elasticsearch/rest/StringRestResponse.java b/src/main/java/org/elasticsearch/common/netty/ReleaseChannelFutureListener.java similarity index 58% rename from src/main/java/org/elasticsearch/rest/StringRestResponse.java rename to src/main/java/org/elasticsearch/common/netty/ReleaseChannelFutureListener.java index ef310baf64e..a31d0f6b96b 100644 --- a/src/main/java/org/elasticsearch/rest/StringRestResponse.java +++ b/src/main/java/org/elasticsearch/common/netty/ReleaseChannelFutureListener.java @@ -17,27 +17,26 @@ * under the License. */ -package org.elasticsearch.rest; +package org.elasticsearch.common.netty; -import org.apache.lucene.util.BytesRef; -import org.apache.lucene.util.UnicodeUtil; +import org.elasticsearch.common.lease.Releasable; +import org.jboss.netty.channel.ChannelFuture; +import org.jboss.netty.channel.ChannelFutureListener; /** - * + * A channel listener that releases a {@link org.elasticsearch.common.lease.Releasable} when + * the operation is complete. */ -public class StringRestResponse extends Utf8RestResponse { +public class ReleaseChannelFutureListener implements ChannelFutureListener { - public StringRestResponse(RestStatus status) { - super(status); + private final Releasable releasable; + + public ReleaseChannelFutureListener(Releasable releasable) { + this.releasable = releasable; } - public StringRestResponse(RestStatus status, String content) { - super(status, convert(content)); + @Override + public void operationComplete(ChannelFuture future) throws Exception { + releasable.release(); } - - private static BytesRef convert(String content) { - BytesRef result = new BytesRef(); - UnicodeUtil.UTF16toUTF8(content, 0, content.length(), result); - return result; - } -} \ No newline at end of file +} diff --git a/src/main/java/org/elasticsearch/http/HttpResponse.java b/src/main/java/org/elasticsearch/http/HttpResponse.java deleted file mode 100644 index 2b8dcdc6afb..00000000000 --- a/src/main/java/org/elasticsearch/http/HttpResponse.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.http; - -import org.elasticsearch.rest.RestResponse; - -/** - * - */ -public interface HttpResponse extends RestResponse { - -} diff --git a/src/main/java/org/elasticsearch/http/HttpServer.java b/src/main/java/org/elasticsearch/http/HttpServer.java index 0430466e216..bc02306c3e7 100644 --- a/src/main/java/org/elasticsearch/http/HttpServer.java +++ b/src/main/java/org/elasticsearch/http/HttpServer.java @@ -132,17 +132,16 @@ public class HttpServer extends AbstractLifecycleComponent { void handlePluginSite(HttpRequest request, HttpChannel channel) { if (disableSites) { - channel.sendResponse(new StringRestResponse(FORBIDDEN)); + channel.sendResponse(new BytesRestResponse(FORBIDDEN)); return; } if (request.method() == RestRequest.Method.OPTIONS) { // when we have OPTIONS request, simply send OK by default (with the Access Control Origin header which gets automatically added) - StringRestResponse response = new StringRestResponse(OK); - channel.sendResponse(response); + channel.sendResponse(new BytesRestResponse(OK)); return; } if (request.method() != RestRequest.Method.GET) { - channel.sendResponse(new StringRestResponse(FORBIDDEN)); + channel.sendResponse(new BytesRestResponse(FORBIDDEN)); return; } // TODO for a "/_plugin" endpoint, we should have a page that lists all the plugins? @@ -155,7 +154,7 @@ public class HttpServer extends AbstractLifecycleComponent { pluginName = path; sitePath = null; // If a trailing / is missing, we redirect to the right page #2654 - channel.sendResponse(new HttpRedirectRestResponse(request.rawPath() + "/")); + channel.sendResponse(new BytesRestResponse(RestStatus.MOVED_PERMANENTLY, "text/html", "")); return; } else { pluginName = path.substring(0, i1); @@ -173,31 +172,31 @@ public class HttpServer extends AbstractLifecycleComponent { File siteFile = new File(new File(environment.pluginsFile(), pluginName), "_site"); File file = new File(siteFile, sitePath); if (!file.exists() || file.isHidden()) { - channel.sendResponse(new StringRestResponse(NOT_FOUND)); + channel.sendResponse(new BytesRestResponse(NOT_FOUND)); return; } if (!file.isFile()) { // If it's not a dir, we send a 403 if (!file.isDirectory()) { - channel.sendResponse(new StringRestResponse(FORBIDDEN)); + channel.sendResponse(new BytesRestResponse(FORBIDDEN)); return; } // We don't serve dir but if index.html exists in dir we should serve it file = new File(file, "index.html"); if (!file.exists() || file.isHidden() || !file.isFile()) { - channel.sendResponse(new StringRestResponse(FORBIDDEN)); + channel.sendResponse(new BytesRestResponse(FORBIDDEN)); return; } } if (!file.getAbsolutePath().startsWith(siteFile.getAbsolutePath())) { - channel.sendResponse(new StringRestResponse(FORBIDDEN)); + channel.sendResponse(new BytesRestResponse(FORBIDDEN)); return; } try { byte[] data = Streams.copyToByteArray(file); - channel.sendResponse(new BytesRestResponse(data, guessMimeType(sitePath))); + channel.sendResponse(new BytesRestResponse(OK, guessMimeType(sitePath), data)); } catch (IOException e) { - channel.sendResponse(new StringRestResponse(INTERNAL_SERVER_ERROR)); + channel.sendResponse(new BytesRestResponse(INTERNAL_SERVER_ERROR)); } } diff --git a/src/main/java/org/elasticsearch/http/netty/HttpRequestHandler.java b/src/main/java/org/elasticsearch/http/netty/HttpRequestHandler.java index 516bf1b7b6b..280df1184c9 100644 --- a/src/main/java/org/elasticsearch/http/netty/HttpRequestHandler.java +++ b/src/main/java/org/elasticsearch/http/netty/HttpRequestHandler.java @@ -40,7 +40,8 @@ public class HttpRequestHandler extends SimpleChannelUpstreamHandler { HttpRequest request = (HttpRequest) e.getMessage(); // the netty HTTP handling always copy over the buffer to its own buffer, either in NioWorker internally // when reading, or using a cumalation buffer - serverTransport.dispatchRequest(new NettyHttpRequest(request, e.getChannel()), new NettyHttpChannel(serverTransport, e.getChannel(), request)); + NettyHttpRequest httpRequest = new NettyHttpRequest(request, e.getChannel()); + serverTransport.dispatchRequest(httpRequest, new NettyHttpChannel(serverTransport, e.getChannel(), httpRequest)); super.messageReceived(ctx, e); } diff --git a/src/main/java/org/elasticsearch/http/netty/NettyHttpChannel.java b/src/main/java/org/elasticsearch/http/netty/NettyHttpChannel.java index eac07600c66..d940343f659 100644 --- a/src/main/java/org/elasticsearch/http/netty/NettyHttpChannel.java +++ b/src/main/java/org/elasticsearch/http/netty/NettyHttpChannel.java @@ -19,12 +19,14 @@ package org.elasticsearch.http.netty; -import org.elasticsearch.common.xcontent.XContentBuilder; +import org.apache.lucene.util.BytesRef; +import org.apache.lucene.util.UnicodeUtil; +import org.elasticsearch.common.bytes.BytesReference; +import org.elasticsearch.common.lease.Releasable; +import org.elasticsearch.common.netty.ReleaseChannelFutureListener; import org.elasticsearch.http.HttpChannel; -import org.elasticsearch.http.HttpException; import org.elasticsearch.rest.RestResponse; import org.elasticsearch.rest.RestStatus; -import org.elasticsearch.rest.XContentRestResponse; import org.elasticsearch.rest.support.RestUtils; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; @@ -33,7 +35,6 @@ import org.jboss.netty.channel.ChannelFuture; import org.jboss.netty.channel.ChannelFutureListener; import org.jboss.netty.handler.codec.http.*; -import java.io.IOException; import java.util.List; import java.util.Map; import java.util.Set; @@ -42,24 +43,34 @@ import java.util.Set; * */ public class NettyHttpChannel implements HttpChannel { + + private static final ChannelBuffer END_JSONP; + + static { + BytesRef U_END_JSONP = new BytesRef(); + UnicodeUtil.UTF16toUTF8(");", 0, ");".length(), U_END_JSONP); + END_JSONP = ChannelBuffers.wrappedBuffer(U_END_JSONP.bytes, U_END_JSONP.offset, U_END_JSONP.length); + } + private final NettyHttpServerTransport transport; private final Channel channel; - private final org.jboss.netty.handler.codec.http.HttpRequest request; + private final NettyHttpRequest request; + private final org.jboss.netty.handler.codec.http.HttpRequest nettyRequest; - public NettyHttpChannel(NettyHttpServerTransport transport, Channel channel, org.jboss.netty.handler.codec.http.HttpRequest request) { + public NettyHttpChannel(NettyHttpServerTransport transport, Channel channel, NettyHttpRequest request) { this.transport = transport; this.channel = channel; this.request = request; + this.nettyRequest = request.request(); } @Override public void sendResponse(RestResponse response) { - // Decide whether to close the connection or not. - boolean http10 = request.getProtocolVersion().equals(HttpVersion.HTTP_1_0); + boolean http10 = nettyRequest.getProtocolVersion().equals(HttpVersion.HTTP_1_0); boolean close = - HttpHeaders.Values.CLOSE.equalsIgnoreCase(request.headers().get(HttpHeaders.Names.CONNECTION)) || - (http10 && !HttpHeaders.Values.KEEP_ALIVE.equalsIgnoreCase(request.headers().get(HttpHeaders.Names.CONNECTION))); + HttpHeaders.Values.CLOSE.equalsIgnoreCase(nettyRequest.headers().get(HttpHeaders.Names.CONNECTION)) || + (http10 && !HttpHeaders.Values.KEEP_ALIVE.equalsIgnoreCase(nettyRequest.headers().get(HttpHeaders.Names.CONNECTION))); // Build the response object. HttpResponseStatus status = getStatus(response.status()); @@ -72,11 +83,11 @@ public class NettyHttpChannel implements HttpChannel { } else { resp = new DefaultHttpResponse(HttpVersion.HTTP_1_1, status); } - if (RestUtils.isBrowser(request.headers().get(HttpHeaders.Names.USER_AGENT))) { + if (RestUtils.isBrowser(nettyRequest.headers().get(HttpHeaders.Names.USER_AGENT))) { if (transport.settings().getAsBoolean("http.cors.enabled", true)) { // Add support for cross-origin Ajax requests (CORS) resp.headers().add("Access-Control-Allow-Origin", transport.settings().get("http.cors.allow-origin", "*")); - if (request.getMethod() == HttpMethod.OPTIONS) { + if (nettyRequest.getMethod() == HttpMethod.OPTIONS) { // Allow Ajax requests based on the CORS "preflight" request resp.headers().add("Access-Control-Max-Age", transport.settings().getAsInt("http.cors.max-age", 1728000)); resp.headers().add("Access-Control-Allow-Methods", transport.settings().get("http.cors.allow-methods", "OPTIONS, HEAD, GET, POST, PUT, DELETE")); @@ -85,7 +96,7 @@ public class NettyHttpChannel implements HttpChannel { } } - String opaque = request.headers().get("X-Opaque-Id"); + String opaque = nettyRequest.headers().get("X-Opaque-Id"); if (opaque != null) { resp.headers().add("X-Opaque-Id", opaque); } @@ -100,65 +111,60 @@ public class NettyHttpChannel implements HttpChannel { } } - // Convert the response content to a ChannelBuffer. - ChannelBuffer buf; + BytesReference content = response.content(); + ChannelBuffer buffer; + boolean addedReleaseListener = false; try { - if (response instanceof XContentRestResponse) { - // if its a builder based response, and it was created with a CachedStreamOutput, we can release it - // after we write the response, and no need to do an extra copy because its not thread safe - XContentBuilder builder = ((XContentRestResponse) response).builder(); - if (response.contentThreadSafe()) { - buf = builder.bytes().toChannelBuffer(); - } else { - buf = builder.bytes().copyBytesArray().toChannelBuffer(); - } + if (response.contentThreadSafe()) { + buffer = content.toChannelBuffer(); } else { - if (response.contentThreadSafe()) { - buf = ChannelBuffers.wrappedBuffer(response.content(), response.contentOffset(), response.contentLength()); - } else { - buf = ChannelBuffers.copiedBuffer(response.content(), response.contentOffset(), response.contentLength()); - } + buffer = content.copyBytesArray().toChannelBuffer(); } - } catch (IOException e) { - throw new HttpException("Failed to convert response to bytes", e); - } - if (response.prefixContent() != null || response.suffixContent() != null) { - ChannelBuffer prefixBuf = ChannelBuffers.EMPTY_BUFFER; - if (response.prefixContent() != null) { - prefixBuf = ChannelBuffers.copiedBuffer(response.prefixContent(), response.prefixContentOffset(), response.prefixContentLength()); + // handle JSONP + String callback = request.param("callback"); + if (callback != null) { + final BytesRef callbackBytes = new BytesRef(callback.length() * 4 + 1); + UnicodeUtil.UTF16toUTF8(callback, 0, callback.length(), callbackBytes); + callbackBytes.bytes[callbackBytes.length] = '('; + callbackBytes.length++; + buffer = ChannelBuffers.wrappedBuffer( + ChannelBuffers.wrappedBuffer(callbackBytes.bytes, callbackBytes.offset, callbackBytes.length), + buffer, + ChannelBuffers.wrappedBuffer(END_JSONP) + ); } - ChannelBuffer suffixBuf = ChannelBuffers.EMPTY_BUFFER; - if (response.suffixContent() != null) { - suffixBuf = ChannelBuffers.copiedBuffer(response.suffixContent(), response.suffixContentOffset(), response.suffixContentLength()); - } - buf = ChannelBuffers.wrappedBuffer(prefixBuf, buf, suffixBuf); - } - resp.setContent(buf); - resp.headers().add(HttpHeaders.Names.CONTENT_TYPE, response.contentType()); + resp.setContent(buffer); + resp.headers().add(HttpHeaders.Names.CONTENT_TYPE, response.contentType()); + resp.headers().add(HttpHeaders.Names.CONTENT_LENGTH, String.valueOf(buffer.readableBytes())); - resp.headers().add(HttpHeaders.Names.CONTENT_LENGTH, String.valueOf(buf.readableBytes())); - - if (transport.resetCookies) { - String cookieString = request.headers().get(HttpHeaders.Names.COOKIE); - if (cookieString != null) { - CookieDecoder cookieDecoder = new CookieDecoder(); - Set cookies = cookieDecoder.decode(cookieString); - if (!cookies.isEmpty()) { - // Reset the cookies if necessary. - CookieEncoder cookieEncoder = new CookieEncoder(true); - for (Cookie cookie : cookies) { - cookieEncoder.addCookie(cookie); + if (transport.resetCookies) { + String cookieString = nettyRequest.headers().get(HttpHeaders.Names.COOKIE); + if (cookieString != null) { + CookieDecoder cookieDecoder = new CookieDecoder(); + Set cookies = cookieDecoder.decode(cookieString); + if (!cookies.isEmpty()) { + // Reset the cookies if necessary. + CookieEncoder cookieEncoder = new CookieEncoder(true); + for (Cookie cookie : cookies) { + cookieEncoder.addCookie(cookie); + } + resp.headers().add(HttpHeaders.Names.SET_COOKIE, cookieEncoder.encode()); } - resp.headers().add(HttpHeaders.Names.SET_COOKIE, cookieEncoder.encode()); } } - } - // Write the response. - ChannelFuture future = channel.write(resp); - // Close the connection after the write operation is done if necessary. - if (close) { - future.addListener(ChannelFutureListener.CLOSE); + ChannelFuture future = channel.write(resp); + if (response.contentThreadSafe() && content instanceof Releasable) { + future.addListener(new ReleaseChannelFutureListener((Releasable) content)); + addedReleaseListener = true; + } + if (close) { + future.addListener(ChannelFutureListener.CLOSE); + } + } finally { + if (!addedReleaseListener && content instanceof Releasable) { + ((Releasable) content).release(); + } } } diff --git a/src/main/java/org/elasticsearch/http/netty/NettyHttpRequest.java b/src/main/java/org/elasticsearch/http/netty/NettyHttpRequest.java index 3d85172b57a..d392f597cd2 100644 --- a/src/main/java/org/elasticsearch/http/netty/NettyHttpRequest.java +++ b/src/main/java/org/elasticsearch/http/netty/NettyHttpRequest.java @@ -62,6 +62,10 @@ public class NettyHttpRequest extends HttpRequest { } } + public org.jboss.netty.handler.codec.http.HttpRequest request() { + return this.request; + } + @Override public Method method() { HttpMethod httpMethod = request.getMethod(); diff --git a/src/main/java/org/elasticsearch/rest/AbstractRestResponse.java b/src/main/java/org/elasticsearch/rest/AbstractRestResponse.java deleted file mode 100644 index f661432d5cc..00000000000 --- a/src/main/java/org/elasticsearch/rest/AbstractRestResponse.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.rest; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.HashMap; - -/** - * - */ -public abstract class AbstractRestResponse implements RestResponse { - - Map> customHeaders; - - @Override - public byte[] prefixContent() { - return null; - } - - @Override - public int prefixContentLength() { - return -1; - } - - @Override - public int prefixContentOffset() { - return 0; - } - - @Override - public byte[] suffixContent() { - return null; - } - - @Override - public int suffixContentLength() { - return -1; - } - - @Override - public int suffixContentOffset() { - return 0; - } - - @Override - public void addHeader(String name, String value) { - if (customHeaders == null) { - customHeaders = new HashMap<>(2); - } - List header = customHeaders.get(name); - if (header == null) { - header = new ArrayList<>(); - customHeaders.put(name, header); - } - header.add(value); - } - - @Override - public Map> getHeaders() { - return customHeaders; - } -} \ No newline at end of file diff --git a/src/main/java/org/elasticsearch/rest/AbstractRestResponseActionListener.java b/src/main/java/org/elasticsearch/rest/AbstractRestResponseActionListener.java index 4a9da123197..e74934a761f 100644 --- a/src/main/java/org/elasticsearch/rest/AbstractRestResponseActionListener.java +++ b/src/main/java/org/elasticsearch/rest/AbstractRestResponseActionListener.java @@ -44,7 +44,7 @@ public abstract class AbstractRestResponseActionListener 10) { + break; + } + if (!first) { + builder.startObject("cause"); + } + buildThrowable(t, builder); + if (!first) { + builder.endObject(); + } + t = t.getCause(); + first = false; + } + builder.endObject(); + } + builder.endObject(); + return builder; + } + + private static void buildThrowable(Throwable t, XContentBuilder builder) throws IOException { + builder.field("message", t.getMessage()); + for (StackTraceElement stElement : t.getStackTrace()) { + builder.startObject("at") + .field("class", stElement.getClassName()) + .field("method", stElement.getMethodName()); + if (stElement.getFileName() != null) { + builder.field("file", stElement.getFileName()); + } + if (stElement.getLineNumber() >= 0) { + builder.field("line", stElement.getLineNumber()); + } + builder.endObject(); + } } } \ No newline at end of file diff --git a/src/main/java/org/elasticsearch/rest/HttpRedirectRestResponse.java b/src/main/java/org/elasticsearch/rest/HttpRedirectRestResponse.java deleted file mode 100644 index 022944821f1..00000000000 --- a/src/main/java/org/elasticsearch/rest/HttpRedirectRestResponse.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.rest; - -/** - * Redirect to another web page - */ -public class HttpRedirectRestResponse extends StringRestResponse { - - public HttpRedirectRestResponse(String url) { - super(RestStatus.MOVED_PERMANENTLY, ""); - } - - @Override - public String contentType() { - return "text/html"; - } -} diff --git a/src/main/java/org/elasticsearch/rest/RestController.java b/src/main/java/org/elasticsearch/rest/RestController.java index 74385208c17..e57528b4df5 100644 --- a/src/main/java/org/elasticsearch/rest/RestController.java +++ b/src/main/java/org/elasticsearch/rest/RestController.java @@ -142,7 +142,7 @@ public class RestController extends AbstractLifecycleComponent { executeHandler(request, channel); } catch (Exception e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response for uri [" + request.uri() + "]", e1); } @@ -160,10 +160,9 @@ public class RestController extends AbstractLifecycleComponent { } else { if (request.method() == RestRequest.Method.OPTIONS) { // when we have OPTIONS request, simply send OK by default (with the Access Control Origin header which gets automatically added) - StringRestResponse response = new StringRestResponse(OK); - channel.sendResponse(response); + channel.sendResponse(new BytesRestResponse(OK)); } else { - channel.sendResponse(new StringRestResponse(BAD_REQUEST, "No handler found for uri [" + request.uri() + "] and method [" + request.method() + "]")); + channel.sendResponse(new BytesRestResponse(BAD_REQUEST, "No handler found for uri [" + request.uri() + "] and method [" + request.method() + "]")); } } } @@ -220,7 +219,7 @@ public class RestController extends AbstractLifecycleComponent { } } catch (Exception e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response for uri [" + request.uri() + "]", e1); } diff --git a/src/main/java/org/elasticsearch/rest/RestResponse.java b/src/main/java/org/elasticsearch/rest/RestResponse.java index 4b3ca6ad3b2..1673b2c2190 100644 --- a/src/main/java/org/elasticsearch/rest/RestResponse.java +++ b/src/main/java/org/elasticsearch/rest/RestResponse.java @@ -19,53 +19,63 @@ package org.elasticsearch.rest; -import java.io.IOException; +import org.elasticsearch.common.Nullable; +import org.elasticsearch.common.bytes.BytesReference; + +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; /** * */ -public interface RestResponse { +public abstract class RestResponse { + + protected Map> customHeaders; + + + /** + * The response content type. + */ + public abstract String contentType(); /** * Can the content byte[] be used only with this thread (false), or by any thread (true). */ - boolean contentThreadSafe(); - - String contentType(); + public abstract boolean contentThreadSafe(); /** - * Returns the actual content. Note, use {@link #contentLength()} in order to know the - * content length of the byte array. + * The response content. Note, if the content is {@link org.elasticsearch.common.lease.Releasable} it + * should automatically be released when done by the channel sending it. */ - byte[] content() throws IOException; + public abstract BytesReference content(); /** - * The content length. + * The rest status code. */ - int contentLength() throws IOException; - - int contentOffset() throws IOException; - - byte[] prefixContent(); - - int prefixContentLength(); - - int prefixContentOffset(); - - byte[] suffixContent(); - - int suffixContentLength(); - - int suffixContentOffset(); - - RestStatus status(); - - void addHeader(String name, String value); + public abstract RestStatus status(); /** - * @return The custom headers or null if none have been set + * Add a custom header. */ - Map> getHeaders(); + public void addHeader(String name, String value) { + if (customHeaders == null) { + customHeaders = new HashMap<>(2); + } + List header = customHeaders.get(name); + if (header == null) { + header = new ArrayList<>(); + customHeaders.put(name, header); + } + header.add(value); + } + + /** + * Returns custom headers that have been added, or null if none have been set. + */ + @Nullable + public Map> getHeaders() { + return customHeaders; + } } diff --git a/src/main/java/org/elasticsearch/rest/Utf8RestResponse.java b/src/main/java/org/elasticsearch/rest/Utf8RestResponse.java deleted file mode 100644 index 6d9e8ad9944..00000000000 --- a/src/main/java/org/elasticsearch/rest/Utf8RestResponse.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.rest; - -import org.apache.lucene.util.BytesRef; - -/** - * An http response that is built on top of {@link org.apache.lucene.util.BytesRef}. - *

- *

Note, this class assumes that the utf8 result is not thread safe. - */ -public class Utf8RestResponse extends AbstractRestResponse implements RestResponse { - - public static final BytesRef EMPTY = new BytesRef(); - - private final RestStatus status; - - private final BytesRef utf8Result; - - private final BytesRef prefixUtf8Result; - - private final BytesRef suffixUtf8Result; - - public Utf8RestResponse(RestStatus status) { - this(status, EMPTY); - } - - public Utf8RestResponse(RestStatus status, BytesRef utf8Result) { - this(status, utf8Result, null, null); - } - - public Utf8RestResponse(RestStatus status, BytesRef utf8Result, - BytesRef prefixUtf8Result, BytesRef suffixUtf8Result) { - this.status = status; - this.utf8Result = utf8Result; - this.prefixUtf8Result = prefixUtf8Result; - this.suffixUtf8Result = suffixUtf8Result; - } - - @Override - public boolean contentThreadSafe() { - return true; - } - - @Override - public String contentType() { - return "text/plain; charset=UTF-8"; - } - - @Override - public byte[] content() { - return utf8Result.bytes; - } - - @Override - public int contentLength() { - return utf8Result.length; - } - - @Override - public int contentOffset() { - return utf8Result.offset; - } - - @Override - public RestStatus status() { - return status; - } - - @Override - public byte[] prefixContent() { - return prefixUtf8Result != null ? prefixUtf8Result.bytes : null; - } - - @Override - public int prefixContentLength() { - return prefixUtf8Result != null ? prefixUtf8Result.length : 0; - } - - @Override - public int prefixContentOffset() { - return prefixUtf8Result != null ? prefixUtf8Result.offset : 0; - } - - @Override - public byte[] suffixContent() { - return suffixUtf8Result != null ? suffixUtf8Result.bytes : null; - } - - @Override - public int suffixContentLength() { - return suffixUtf8Result != null ? suffixUtf8Result.length : 0; - } - - @Override - public int suffixContentOffset() { - return suffixUtf8Result != null ? suffixUtf8Result.offset : 0; - } -} \ No newline at end of file diff --git a/src/main/java/org/elasticsearch/rest/XContentRestResponse.java b/src/main/java/org/elasticsearch/rest/XContentRestResponse.java deleted file mode 100644 index ce4cd553884..00000000000 --- a/src/main/java/org/elasticsearch/rest/XContentRestResponse.java +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.rest; - -import org.apache.lucene.util.BytesRef; -import org.apache.lucene.util.UnicodeUtil; -import org.elasticsearch.ElasticsearchIllegalArgumentException; -import org.elasticsearch.common.xcontent.XContentBuilder; - -import java.io.IOException; - -/** - * - */ -public class XContentRestResponse extends AbstractRestResponse { - - private static final byte[] END_JSONP; - - static { - BytesRef U_END_JSONP = new BytesRef(); - UnicodeUtil.UTF16toUTF8(");", 0, ");".length(), U_END_JSONP); - END_JSONP = new byte[U_END_JSONP.length]; - System.arraycopy(U_END_JSONP.bytes, U_END_JSONP.offset, END_JSONP, 0, U_END_JSONP.length); - } - - private final BytesRef prefixUtf8Result; - - private final RestStatus status; - - private final XContentBuilder builder; - - public XContentRestResponse(RestRequest request, RestStatus status, XContentBuilder builder) throws IOException { - if (request == null) { - throw new ElasticsearchIllegalArgumentException("request must be set"); - } - this.builder = builder; - this.status = status; - this.prefixUtf8Result = startJsonp(request); - } - - public XContentBuilder builder() { - return this.builder; - } - - @Override - public String contentType() { - return builder.contentType().restContentType(); - } - - @Override - public boolean contentThreadSafe() { - return true; - } - - @Override - public byte[] content() throws IOException { - return builder.bytes().array(); - } - - @Override - public int contentLength() throws IOException { - return builder.bytes().length(); - } - - @Override - public int contentOffset() throws IOException { - return 0; - } - - @Override - public RestStatus status() { - return this.status; - } - - @Override - public byte[] prefixContent() { - if (prefixUtf8Result != null) { - return prefixUtf8Result.bytes; - } - return null; - } - - @Override - public int prefixContentLength() { - if (prefixUtf8Result != null) { - return prefixUtf8Result.length; - } - return 0; - } - - @Override - public int prefixContentOffset() { - if (prefixUtf8Result != null) { - return prefixUtf8Result.offset; - } - return 0; - } - - @Override - public byte[] suffixContent() { - if (prefixUtf8Result != null) { - return END_JSONP; - } - return null; - } - - @Override - public int suffixContentLength() { - if (prefixUtf8Result != null) { - return END_JSONP.length; - } - return 0; - } - - @Override - public int suffixContentOffset() { - return 0; - } - - private static BytesRef startJsonp(RestRequest request) { - String callback = request.param("callback"); - if (callback == null) { - return null; - } - final BytesRef result = new BytesRef(); - UnicodeUtil.UTF16toUTF8(callback, 0, callback.length(), result); - result.bytes[result.length] = '('; - result.length++; - return result; - } -} diff --git a/src/main/java/org/elasticsearch/rest/XContentThrowableRestResponse.java b/src/main/java/org/elasticsearch/rest/XContentThrowableRestResponse.java deleted file mode 100644 index 09a0c7af9ba..00000000000 --- a/src/main/java/org/elasticsearch/rest/XContentThrowableRestResponse.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.rest; - -import org.elasticsearch.ElasticsearchException; -import org.elasticsearch.common.xcontent.XContentBuilder; - -import java.io.IOException; - -import static org.elasticsearch.ExceptionsHelper.detailedMessage; -import static org.elasticsearch.rest.action.support.RestXContentBuilder.restContentBuilder; - -/** - * - */ -public class XContentThrowableRestResponse extends XContentRestResponse { - - public XContentThrowableRestResponse(RestRequest request, Throwable t) throws IOException { - this(request, ((t instanceof ElasticsearchException) ? ((ElasticsearchException) t).status() : RestStatus.INTERNAL_SERVER_ERROR), t); - } - - public XContentThrowableRestResponse(RestRequest request, RestStatus status, Throwable t) throws IOException { - super(request, status, convert(request, status, t)); - } - - private static XContentBuilder convert(RestRequest request, RestStatus status, Throwable t) throws IOException { - XContentBuilder builder = restContentBuilder(request).startObject() - .field("error", detailedMessage(t)) - .field("status", status.getStatus()); - if (t != null && request.paramAsBoolean("error_trace", false)) { - builder.startObject("error_trace"); - boolean first = true; - while (t != null) { - if (!first) { - builder.startObject("cause"); - } - buildThrowable(t, builder); - if (!first) { - builder.endObject(); - } - t = t.getCause(); - first = false; - } - builder.endObject(); - } - builder.endObject(); - return builder; - } - - private static void buildThrowable(Throwable t, XContentBuilder builder) throws IOException { - builder.field("message", t.getMessage()); - for (StackTraceElement stElement : t.getStackTrace()) { - builder.startObject("at") - .field("class", stElement.getClassName()) - .field("method", stElement.getMethodName()); - if (stElement.getFileName() != null) { - builder.field("file", stElement.getFileName()); - } - if (stElement.getLineNumber() >= 0) { - builder.field("line", stElement.getLineNumber()); - } - builder.endObject(); - } - } -} \ No newline at end of file diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/health/RestClusterHealthAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/health/RestClusterHealthAction.java index 97cc2a4d13f..de961faea69 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/health/RestClusterHealthAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/health/RestClusterHealthAction.java @@ -68,7 +68,7 @@ public class RestClusterHealthAction extends BaseRestHandler { } catch (Exception e) { try { XContentBuilder builder = RestXContentBuilder.restContentBuilder(request); - channel.sendResponse(new XContentRestResponse(request, PRECONDITION_FAILED, builder.startObject().field("error", e.getMessage()).endObject())); + channel.sendResponse(new BytesRestResponse(PRECONDITION_FAILED, builder.startObject().field("error", e.getMessage()).endObject())); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -90,7 +90,7 @@ public class RestClusterHealthAction extends BaseRestHandler { response.toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, status, builder)); + channel.sendResponse(new BytesRestResponse(status, builder)); } catch (Throwable e) { onFailure(e); } @@ -99,7 +99,7 @@ public class RestClusterHealthAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/hotthreads/RestNodesHotThreadsAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/hotthreads/RestNodesHotThreadsAction.java index a6873affabb..85f7a8a20e3 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/hotthreads/RestNodesHotThreadsAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/hotthreads/RestNodesHotThreadsAction.java @@ -69,7 +69,7 @@ public class RestNodesHotThreadsAction extends BaseRestHandler { Strings.spaceify(3, node.getHotThreads(), sb); sb.append('\n'); } - channel.sendResponse(new StringRestResponse(RestStatus.OK, sb.toString())); + channel.sendResponse(new BytesRestResponse(RestStatus.OK, sb.toString())); } catch (Throwable e) { onFailure(e); } @@ -78,7 +78,7 @@ public class RestNodesHotThreadsAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/info/RestNodesInfoAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/info/RestNodesInfoAction.java index 35d2ff5fde1..38eed71fa68 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/info/RestNodesInfoAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/info/RestNodesInfoAction.java @@ -111,7 +111,7 @@ public class RestNodesInfoAction extends BaseRestHandler { builder.startObject(); response.toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, RestStatus.OK, builder)); + channel.sendResponse(new BytesRestResponse(RestStatus.OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -120,7 +120,7 @@ public class RestNodesInfoAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/restart/RestNodesRestartAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/restart/RestNodesRestartAction.java index 1709880290b..ec37a1062cd 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/restart/RestNodesRestartAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/restart/RestNodesRestartAction.java @@ -69,7 +69,7 @@ public class RestNodesRestartAction extends BaseRestHandler { builder.endObject(); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, RestStatus.OK, builder)); + channel.sendResponse(new BytesRestResponse(RestStatus.OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -78,7 +78,7 @@ public class RestNodesRestartAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/shutdown/RestNodesShutdownAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/shutdown/RestNodesShutdownAction.java index a0d2a695f10..aafcfb37e24 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/shutdown/RestNodesShutdownAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/shutdown/RestNodesShutdownAction.java @@ -72,7 +72,7 @@ public class RestNodesShutdownAction extends BaseRestHandler { builder.endObject(); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, RestStatus.OK, builder)); + channel.sendResponse(new BytesRestResponse(RestStatus.OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -81,7 +81,7 @@ public class RestNodesShutdownAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/stats/RestNodesStatsAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/stats/RestNodesStatsAction.java index 477b2bf95c6..8e851382327 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/stats/RestNodesStatsAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/node/stats/RestNodesStatsAction.java @@ -119,7 +119,7 @@ public class RestNodesStatsAction extends BaseRestHandler { builder.startObject(); response.toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, RestStatus.OK, builder)); + channel.sendResponse(new BytesRestResponse(RestStatus.OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -128,7 +128,7 @@ public class RestNodesStatsAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/repositories/get/RestGetRepositoriesAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/repositories/get/RestGetRepositoriesAction.java index 7c94ffdf8a0..ed8824e5dca 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/repositories/get/RestGetRepositoriesAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/repositories/get/RestGetRepositoriesAction.java @@ -67,7 +67,7 @@ public class RestGetRepositoriesAction extends BaseRestHandler { } builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -76,7 +76,7 @@ public class RestGetRepositoriesAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/reroute/RestClusterRerouteAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/reroute/RestClusterRerouteAction.java index 6bb7c5270c1..b6719f55bc1 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/reroute/RestClusterRerouteAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/reroute/RestClusterRerouteAction.java @@ -59,7 +59,7 @@ public class RestClusterRerouteAction extends BaseRestHandler { clusterRerouteRequest.source(request.content()); } catch (Exception e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.warn("Failed to send response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/settings/RestClusterGetSettingsAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/settings/RestClusterGetSettingsAction.java index 0bcd4e17746..37eb82cc087 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/settings/RestClusterGetSettingsAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/settings/RestClusterGetSettingsAction.java @@ -66,7 +66,7 @@ public class RestClusterGetSettingsAction extends BaseRestHandler { builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, RestStatus.OK, builder)); + channel.sendResponse(new BytesRestResponse(RestStatus.OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -75,7 +75,7 @@ public class RestClusterGetSettingsAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/settings/RestClusterUpdateSettingsAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/settings/RestClusterUpdateSettingsAction.java index 787bcf95351..126e50a1fb0 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/settings/RestClusterUpdateSettingsAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/settings/RestClusterUpdateSettingsAction.java @@ -58,7 +58,7 @@ public class RestClusterUpdateSettingsAction extends BaseRestHandler { } } catch (Exception e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.warn("Failed to send response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/shards/RestClusterSearchShardsAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/shards/RestClusterSearchShardsAction.java index 0fe341fc8cf..e21b5b690dc 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/shards/RestClusterSearchShardsAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/shards/RestClusterSearchShardsAction.java @@ -72,7 +72,7 @@ public class RestClusterSearchShardsAction extends BaseRestHandler { builder.startObject(); response.toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, RestStatus.OK, builder)); + channel.sendResponse(new BytesRestResponse(RestStatus.OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -81,7 +81,7 @@ public class RestClusterSearchShardsAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/snapshots/create/RestCreateSnapshotAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/snapshots/create/RestCreateSnapshotAction.java index 8adfd390be8..c26a9307e82 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/snapshots/create/RestCreateSnapshotAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/snapshots/create/RestCreateSnapshotAction.java @@ -63,7 +63,7 @@ public class RestCreateSnapshotAction extends BaseRestHandler { builder.startObject(); response.toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, response.status(), builder)); + channel.sendResponse(new BytesRestResponse(response.status(), builder)); } catch (IOException e) { onFailure(e); } @@ -72,7 +72,7 @@ public class RestCreateSnapshotAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/snapshots/get/RestGetSnapshotsAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/snapshots/get/RestGetSnapshotsAction.java index 5f7374bcfb5..af9970dad4f 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/snapshots/get/RestGetSnapshotsAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/snapshots/get/RestGetSnapshotsAction.java @@ -65,7 +65,7 @@ public class RestGetSnapshotsAction extends BaseRestHandler { builder.startObject(); response.toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (IOException e) { onFailure(e); } @@ -74,7 +74,7 @@ public class RestGetSnapshotsAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/snapshots/restore/RestRestoreSnapshotAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/snapshots/restore/RestRestoreSnapshotAction.java index e6a7366933a..3593242247c 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/snapshots/restore/RestRestoreSnapshotAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/snapshots/restore/RestRestoreSnapshotAction.java @@ -60,7 +60,7 @@ public class RestRestoreSnapshotAction extends BaseRestHandler { builder.startObject(); response.toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (IOException e) { onFailure(e); } @@ -69,7 +69,7 @@ public class RestRestoreSnapshotAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/snapshots/status/RestSnapshotsStatusAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/snapshots/status/RestSnapshotsStatusAction.java index 3a89d1acc50..ac798f549cd 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/snapshots/status/RestSnapshotsStatusAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/snapshots/status/RestSnapshotsStatusAction.java @@ -67,7 +67,7 @@ public class RestSnapshotsStatusAction extends BaseRestHandler { builder.startObject(); response.toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (IOException e) { onFailure(e); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/state/RestClusterStateAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/state/RestClusterStateAction.java index db89585920d..2465fd4d3ad 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/state/RestClusterStateAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/state/RestClusterStateAction.java @@ -87,7 +87,7 @@ public class RestClusterStateAction extends BaseRestHandler { builder.field(Fields.CLUSTER_NAME, response.getClusterName().value()); response.getState().settingsFilter(settingsFilter).toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, RestStatus.OK, builder)); + channel.sendResponse(new BytesRestResponse(RestStatus.OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -99,7 +99,7 @@ public class RestClusterStateAction extends BaseRestHandler { logger.debug("failed to handle cluster state", e); } try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/stats/RestClusterStatsAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/stats/RestClusterStatsAction.java index 2363070821b..b8058a275bf 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/stats/RestClusterStatsAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/stats/RestClusterStatsAction.java @@ -56,7 +56,7 @@ public class RestClusterStatsAction extends BaseRestHandler { builder.startObject(); response.toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, RestStatus.OK, builder)); + channel.sendResponse(new BytesRestResponse(RestStatus.OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -65,7 +65,7 @@ public class RestClusterStatsAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/tasks/RestPendingClusterTasksAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/tasks/RestPendingClusterTasksAction.java index cfa010a5b8b..9f72daf9cbc 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/tasks/RestPendingClusterTasksAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/tasks/RestPendingClusterTasksAction.java @@ -55,7 +55,7 @@ public class RestPendingClusterTasksAction extends BaseRestHandler { builder.startObject(); response.toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, RestStatus.OK, builder)); + channel.sendResponse(new BytesRestResponse(RestStatus.OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -67,7 +67,7 @@ public class RestPendingClusterTasksAction extends BaseRestHandler { logger.debug("failed to get pending cluster tasks", e); } try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/RestIndicesAliasesAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/RestIndicesAliasesAction.java index 99a26e59ed3..83a86d52738 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/RestIndicesAliasesAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/RestIndicesAliasesAction.java @@ -133,7 +133,7 @@ public class RestIndicesAliasesAction extends BaseRestHandler { } } catch (Exception e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.warn("Failed to send response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/get/RestGetAliasesAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/get/RestGetAliasesAction.java index 699de1a0e40..57db88f150b 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/get/RestGetAliasesAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/get/RestGetAliasesAction.java @@ -72,7 +72,7 @@ public class RestGetAliasesAction extends BaseRestHandler { XContentBuilder builder = RestXContentBuilder.restContentBuilder(request); // empty body, if indices were specified but no aliases were if (indices.length > 0 && response.getAliases().isEmpty()) { - channel.sendResponse(new XContentRestResponse(request, OK, RestXContentBuilder.emptyBuilder(request))); + channel.sendResponse(new BytesRestResponse(OK, RestXContentBuilder.emptyBuilder(request))); return; } else if (response.getAliases().isEmpty()) { String message = String.format(Locale.ROOT, "alias [%s] missing", toNamesString(getAliasesRequest.aliases())); @@ -80,7 +80,7 @@ public class RestGetAliasesAction extends BaseRestHandler { .field("error", message) .field("status", RestStatus.NOT_FOUND.getStatus()) .endObject(); - channel.sendResponse(new XContentRestResponse(request, RestStatus.NOT_FOUND, builder)); + channel.sendResponse(new BytesRestResponse(RestStatus.NOT_FOUND, builder)); return; } @@ -95,7 +95,7 @@ public class RestGetAliasesAction extends BaseRestHandler { builder.endObject(); } builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -104,7 +104,7 @@ public class RestGetAliasesAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/get/RestGetIndicesAliasesAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/get/RestGetIndicesAliasesAction.java index 39989cdd24d..d0bb8765e3e 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/get/RestGetIndicesAliasesAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/get/RestGetIndicesAliasesAction.java @@ -92,7 +92,7 @@ public class RestGetIndicesAliasesAction extends BaseRestHandler { } builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -101,7 +101,7 @@ public class RestGetIndicesAliasesAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/head/RestAliasesExistAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/head/RestAliasesExistAction.java index 5b9da086eac..568a2bf4f58 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/head/RestAliasesExistAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/head/RestAliasesExistAction.java @@ -61,9 +61,9 @@ public class RestAliasesExistAction extends BaseRestHandler { public void onResponse(AliasesExistResponse response) { try { if (response.isExists()) { - channel.sendResponse(new StringRestResponse(OK)); + channel.sendResponse(new BytesRestResponse(OK)); } else { - channel.sendResponse(new StringRestResponse(NOT_FOUND)); + channel.sendResponse(new BytesRestResponse(NOT_FOUND)); } } catch (Throwable e) { onFailure(e); @@ -73,7 +73,7 @@ public class RestAliasesExistAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new StringRestResponse(ExceptionsHelper.status(e))); + channel.sendResponse(new BytesRestResponse(ExceptionsHelper.status(e))); } catch (Exception e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/put/RestIndexPutAliasAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/put/RestIndexPutAliasAction.java index c2e3b5d5492..0d6a7b9101c 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/put/RestIndexPutAliasAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/alias/put/RestIndexPutAliasAction.java @@ -100,7 +100,7 @@ public class RestIndexPutAliasAction extends BaseRestHandler { } } catch (Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.warn("Failed to send response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/analyze/RestAnalyzeAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/analyze/RestAnalyzeAction.java index b97f81b6f26..1678c811a29 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/analyze/RestAnalyzeAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/analyze/RestAnalyzeAction.java @@ -57,7 +57,7 @@ public class RestAnalyzeAction extends BaseRestHandler { } if (text == null) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, new ElasticsearchIllegalArgumentException("text is missing"))); + channel.sendResponse(new BytesRestResponse(request, new ElasticsearchIllegalArgumentException("text is missing"))); } catch (IOException e1) { logger.warn("Failed to send response", e1); } @@ -80,7 +80,7 @@ public class RestAnalyzeAction extends BaseRestHandler { builder.startObject(); response.toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -89,7 +89,7 @@ public class RestAnalyzeAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/cache/clear/RestClearIndicesCacheAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/cache/clear/RestClearIndicesCacheAction.java index f1c65846c27..5b4d8444cc5 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/cache/clear/RestClearIndicesCacheAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/cache/clear/RestClearIndicesCacheAction.java @@ -94,7 +94,7 @@ public class RestClearIndicesCacheAction extends BaseRestHandler { } catch (Exception e) { try { XContentBuilder builder = RestXContentBuilder.restContentBuilder(request); - channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); + channel.sendResponse(new BytesRestResponse(BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -110,7 +110,7 @@ public class RestClearIndicesCacheAction extends BaseRestHandler { buildBroadcastShardsHeader(builder, response); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -119,7 +119,7 @@ public class RestClearIndicesCacheAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/create/RestCreateIndexAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/create/RestCreateIndexAction.java index 7d0205c6b28..03296493281 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/create/RestCreateIndexAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/create/RestCreateIndexAction.java @@ -50,7 +50,7 @@ public class RestCreateIndexAction extends BaseRestHandler { createIndexRequest.source(request.content()); } catch (Exception e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.warn("Failed to send response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/exists/indices/RestIndicesExistsAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/exists/indices/RestIndicesExistsAction.java index 08ed131ed50..fc8cb2e1386 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/exists/indices/RestIndicesExistsAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/exists/indices/RestIndicesExistsAction.java @@ -62,9 +62,9 @@ public class RestIndicesExistsAction extends BaseRestHandler { public void onResponse(IndicesExistsResponse response) { try { if (response.isExists()) { - channel.sendResponse(new StringRestResponse(OK)); + channel.sendResponse(new BytesRestResponse(OK)); } else { - channel.sendResponse(new StringRestResponse(NOT_FOUND)); + channel.sendResponse(new BytesRestResponse(NOT_FOUND)); } } catch (Throwable e) { onFailure(e); @@ -74,7 +74,7 @@ public class RestIndicesExistsAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new StringRestResponse(ExceptionsHelper.status(e))); + channel.sendResponse(new BytesRestResponse(ExceptionsHelper.status(e))); } catch (Exception e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/exists/types/RestTypesExistsAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/exists/types/RestTypesExistsAction.java index 7f4582f0039..e591e035be1 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/exists/types/RestTypesExistsAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/exists/types/RestTypesExistsAction.java @@ -57,9 +57,9 @@ public class RestTypesExistsAction extends BaseRestHandler { public void onResponse(TypesExistsResponse response) { try { if (response.isExists()) { - channel.sendResponse(new StringRestResponse(OK)); + channel.sendResponse(new BytesRestResponse(OK)); } else { - channel.sendResponse(new StringRestResponse(NOT_FOUND)); + channel.sendResponse(new BytesRestResponse(NOT_FOUND)); } } catch (Throwable e) { onFailure(e); @@ -69,7 +69,7 @@ public class RestTypesExistsAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new StringRestResponse(ExceptionsHelper.status(e))); + channel.sendResponse(new BytesRestResponse(ExceptionsHelper.status(e))); } catch (Exception e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/flush/RestFlushAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/flush/RestFlushAction.java index 152ffdfb9ab..7f73cce3936 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/flush/RestFlushAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/flush/RestFlushAction.java @@ -77,7 +77,7 @@ public class RestFlushAction extends BaseRestHandler { buildBroadcastShardsHeader(builder, response); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -86,7 +86,7 @@ public class RestFlushAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/mapping/get/RestGetFieldMappingAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/mapping/get/RestGetFieldMappingAction.java index 4ac48c0b855..87f72747b70 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/mapping/get/RestGetFieldMappingAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/mapping/get/RestGetFieldMappingAction.java @@ -76,7 +76,7 @@ public class RestGetFieldMappingAction extends BaseRestHandler { boolean isPossibleSingleFieldRequest = indices.length == 1 && types.length == 1 && fields.length == 1; if (isPossibleSingleFieldRequest && isFieldMappingMissingField(mappingsByIndex)) { - channel.sendResponse(new XContentRestResponse(request, OK, emptyBuilder(request))); + channel.sendResponse(new BytesRestResponse(OK, emptyBuilder(request))); return; } @@ -89,7 +89,7 @@ public class RestGetFieldMappingAction extends BaseRestHandler { builder.startObject(); response.toXContent(builder, ToXContent.EMPTY_PARAMS); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, status, builder)); + channel.sendResponse(new BytesRestResponse(status, builder)); } catch (Throwable e) { onFailure(e); } @@ -98,7 +98,7 @@ public class RestGetFieldMappingAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/mapping/get/RestGetMappingAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/mapping/get/RestGetMappingAction.java index 446525f16e2..bb87b0b0061 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/mapping/get/RestGetMappingAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/mapping/get/RestGetMappingAction.java @@ -78,14 +78,14 @@ public class RestGetMappingAction extends BaseRestHandler { ImmutableOpenMap> mappingsByIndex = response.getMappings(); if (mappingsByIndex.isEmpty()) { if (indices.length != 0 && types.length != 0) { - channel.sendResponse(new XContentRestResponse(request, OK, RestXContentBuilder.emptyBuilder(request))); + channel.sendResponse(new BytesRestResponse(OK, RestXContentBuilder.emptyBuilder(request))); } else if (indices.length != 0) { - channel.sendResponse(new XContentThrowableRestResponse(request, new IndexMissingException(new Index(indices[0])))); + channel.sendResponse(new BytesRestResponse(request, new IndexMissingException(new Index(indices[0])))); } else if (types.length != 0) { - channel.sendResponse(new XContentThrowableRestResponse(request, new TypeMissingException(new Index("_all"), types[0]))); + channel.sendResponse(new BytesRestResponse(request, new TypeMissingException(new Index("_all"), types[0]))); } else { builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } return; } @@ -105,7 +105,7 @@ public class RestGetMappingAction extends BaseRestHandler { } builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -114,7 +114,7 @@ public class RestGetMappingAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/optimize/RestOptimizeAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/optimize/RestOptimizeAction.java index 44f044c2291..4abc3c5d76e 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/optimize/RestOptimizeAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/optimize/RestOptimizeAction.java @@ -76,7 +76,7 @@ public class RestOptimizeAction extends BaseRestHandler { } catch (Exception e) { try { XContentBuilder builder = RestXContentBuilder.restContentBuilder(request); - channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); + channel.sendResponse(new BytesRestResponse(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 RestOptimizeAction extends BaseRestHandler { buildBroadcastShardsHeader(builder, response); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -101,7 +101,7 @@ public class RestOptimizeAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/recovery/RestRecoveryAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/recovery/RestRecoveryAction.java index 35da42edf53..4ba2f1fc017 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/recovery/RestRecoveryAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/recovery/RestRecoveryAction.java @@ -71,7 +71,7 @@ public class RestRecoveryAction extends BaseRestHandler { response.toXContent(builder, request); builder.endObject(); } - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -80,7 +80,7 @@ public class RestRecoveryAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException ioe) { logger.error("Failed to send failure response", ioe); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/refresh/RestRefreshAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/refresh/RestRefreshAction.java index 95d9abc83d4..f9da4b33987 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/refresh/RestRefreshAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/refresh/RestRefreshAction.java @@ -76,7 +76,7 @@ public class RestRefreshAction extends BaseRestHandler { buildBroadcastShardsHeader(builder, response); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -85,7 +85,7 @@ public class RestRefreshAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/segments/RestIndicesSegmentsAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/segments/RestIndicesSegmentsAction.java index 46bce191b85..87344325b84 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/segments/RestIndicesSegmentsAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/segments/RestIndicesSegmentsAction.java @@ -69,7 +69,7 @@ public class RestIndicesSegmentsAction extends BaseRestHandler { buildBroadcastShardsHeader(builder, response); response.toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -78,7 +78,7 @@ public class RestIndicesSegmentsAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/settings/RestGetSettingsAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/settings/RestGetSettingsAction.java index 14eab6303b3..3d0f4343f03 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/settings/RestGetSettingsAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/settings/RestGetSettingsAction.java @@ -78,7 +78,7 @@ public class RestGetSettingsAction extends BaseRestHandler { builder.endObject(); } builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (IOException e) { onFailure(e); } @@ -87,7 +87,7 @@ public class RestGetSettingsAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/settings/RestUpdateSettingsAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/settings/RestUpdateSettingsAction.java index e3fcfd102dc..5b325268898 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/settings/RestUpdateSettingsAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/settings/RestUpdateSettingsAction.java @@ -72,7 +72,7 @@ public class RestUpdateSettingsAction extends BaseRestHandler { } } catch (Exception e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, BAD_REQUEST, new SettingsException("Failed to parse index settings", e))); + channel.sendResponse(new BytesRestResponse(request, BAD_REQUEST, new SettingsException("Failed to parse index settings", e))); } catch (IOException e1) { logger.warn("Failed to send response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/stats/RestIndicesStatsAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/stats/RestIndicesStatsAction.java index bdb3f398e0c..1d5bb756f5c 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/stats/RestIndicesStatsAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/stats/RestIndicesStatsAction.java @@ -109,7 +109,7 @@ public class RestIndicesStatsAction extends BaseRestHandler { buildBroadcastShardsHeader(builder, response); response.toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -118,7 +118,7 @@ public class RestIndicesStatsAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/status/RestIndicesStatusAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/status/RestIndicesStatusAction.java index 173060710b3..5b1a34d456d 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/status/RestIndicesStatusAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/status/RestIndicesStatusAction.java @@ -78,7 +78,7 @@ public class RestIndicesStatusAction extends BaseRestHandler { buildBroadcastShardsHeader(builder, response); response.toXContent(builder, request, settingsFilter); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -87,7 +87,7 @@ public class RestIndicesStatusAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/template/get/RestGetIndexTemplateAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/template/get/RestGetIndexTemplateAction.java index 629e80dd4b1..5e31b2bbce7 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/template/get/RestGetIndexTemplateAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/template/get/RestGetIndexTemplateAction.java @@ -80,7 +80,7 @@ public class RestGetIndexTemplateAction extends BaseRestHandler { RestStatus restStatus = (templateExists || implicitAll) ? OK : NOT_FOUND; - channel.sendResponse(new XContentRestResponse(request, restStatus, builder)); + channel.sendResponse(new BytesRestResponse(restStatus, builder)); } catch (Throwable e) { onFailure(e); } @@ -89,7 +89,7 @@ public class RestGetIndexTemplateAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (Exception e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/template/head/RestHeadIndexTemplateAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/template/head/RestHeadIndexTemplateAction.java index 0b18217430f..d7cba1fd5c1 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/template/head/RestHeadIndexTemplateAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/template/head/RestHeadIndexTemplateAction.java @@ -54,9 +54,9 @@ public class RestHeadIndexTemplateAction extends BaseRestHandler { boolean templateExists = getIndexTemplatesResponse.getIndexTemplates().size() > 0; if (templateExists) { - channel.sendResponse(new StringRestResponse(OK)); + channel.sendResponse(new BytesRestResponse(OK)); } else { - channel.sendResponse(new StringRestResponse(NOT_FOUND)); + channel.sendResponse(new BytesRestResponse(NOT_FOUND)); } } catch (Throwable e) { onFailure(e); @@ -66,7 +66,7 @@ public class RestHeadIndexTemplateAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new StringRestResponse(ExceptionsHelper.status(e))); + channel.sendResponse(new BytesRestResponse(ExceptionsHelper.status(e))); } catch (Exception e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/template/put/RestPutIndexTemplateAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/template/put/RestPutIndexTemplateAction.java index d65fa123f83..29eeed0f009 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/template/put/RestPutIndexTemplateAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/template/put/RestPutIndexTemplateAction.java @@ -62,7 +62,7 @@ public class RestPutIndexTemplateAction extends BaseRestHandler { putRequest.source(request.content()); } catch (Exception e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.warn("Failed to send response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/validate/query/RestValidateQueryAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/validate/query/RestValidateQueryAction.java index a4cf05d49fb..d3493d34fd7 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/validate/query/RestValidateQueryAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/validate/query/RestValidateQueryAction.java @@ -93,7 +93,7 @@ public class RestValidateQueryAction extends BaseRestHandler { } catch (Exception e) { try { XContentBuilder builder = RestXContentBuilder.restContentBuilder(request); - channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); + channel.sendResponse(new BytesRestResponse(BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -129,7 +129,7 @@ public class RestValidateQueryAction extends BaseRestHandler { builder.endArray(); } builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -138,7 +138,7 @@ public class RestValidateQueryAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/indices/warmer/get/RestGetWarmerAction.java b/src/main/java/org/elasticsearch/rest/action/admin/indices/warmer/get/RestGetWarmerAction.java index 3634424fd1f..f16b679932e 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/indices/warmer/get/RestGetWarmerAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/indices/warmer/get/RestGetWarmerAction.java @@ -70,7 +70,7 @@ public class RestGetWarmerAction extends BaseRestHandler { public void onResponse(GetWarmersResponse response) { try { if (indices.length > 0 && response.warmers().isEmpty()) { - channel.sendResponse(new XContentRestResponse(request, OK, RestXContentBuilder.emptyBuilder(request))); + channel.sendResponse(new BytesRestResponse(OK, RestXContentBuilder.emptyBuilder(request))); return; } @@ -87,7 +87,7 @@ public class RestGetWarmerAction extends BaseRestHandler { } builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -96,7 +96,7 @@ public class RestGetWarmerAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/bulk/RestBulkAction.java b/src/main/java/org/elasticsearch/rest/action/bulk/RestBulkAction.java index 011f0ca5544..212adcfecbe 100644 --- a/src/main/java/org/elasticsearch/rest/action/bulk/RestBulkAction.java +++ b/src/main/java/org/elasticsearch/rest/action/bulk/RestBulkAction.java @@ -95,7 +95,7 @@ public class RestBulkAction extends BaseRestHandler { } catch (Exception e) { try { XContentBuilder builder = restContentBuilder(request); - channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); + channel.sendResponse(new BytesRestResponse(BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -155,7 +155,7 @@ public class RestBulkAction extends BaseRestHandler { builder.endArray(); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -164,7 +164,7 @@ public class RestBulkAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/cat/AbstractCatAction.java b/src/main/java/org/elasticsearch/rest/action/cat/AbstractCatAction.java index 7d5f507b21f..8c5f634fbf3 100644 --- a/src/main/java/org/elasticsearch/rest/action/cat/AbstractCatAction.java +++ b/src/main/java/org/elasticsearch/rest/action/cat/AbstractCatAction.java @@ -36,7 +36,9 @@ public abstract class AbstractCatAction extends BaseRestHandler { } abstract void doRequest(final RestRequest request, final RestChannel channel); + abstract void documentation(StringBuilder sb); + abstract Table getTableWithHeader(final RestRequest request); @Override @@ -55,7 +57,7 @@ public abstract class AbstractCatAction extends BaseRestHandler { pad(new Table.Cell(cell.attr.containsKey("desc") ? cell.attr.get("desc") : "not available"), width[2], request, out); out.append("\n"); } - channel.sendResponse(new StringRestResponse(RestStatus.OK, out.toString())); + channel.sendResponse(new BytesRestResponse(RestStatus.OK, out.toString())); } else { doRequest(request, channel); } diff --git a/src/main/java/org/elasticsearch/rest/action/cat/RestAliasAction.java b/src/main/java/org/elasticsearch/rest/action/cat/RestAliasAction.java index c204d65081c..d8f180f2bd6 100644 --- a/src/main/java/org/elasticsearch/rest/action/cat/RestAliasAction.java +++ b/src/main/java/org/elasticsearch/rest/action/cat/RestAliasAction.java @@ -28,10 +28,10 @@ import org.elasticsearch.common.Strings; import org.elasticsearch.common.Table; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.rest.BytesRestResponse; import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.XContentThrowableRestResponse; import org.elasticsearch.rest.action.support.RestTable; import java.io.IOException; @@ -73,7 +73,7 @@ public class RestAliasAction extends AbstractCatAction { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/cat/RestAllocationAction.java b/src/main/java/org/elasticsearch/rest/action/cat/RestAllocationAction.java index 94642a5dec8..ec7bbc08cd4 100644 --- a/src/main/java/org/elasticsearch/rest/action/cat/RestAllocationAction.java +++ b/src/main/java/org/elasticsearch/rest/action/cat/RestAllocationAction.java @@ -34,10 +34,10 @@ import org.elasticsearch.common.Table; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.unit.ByteSizeValue; +import org.elasticsearch.rest.BytesRestResponse; import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.XContentThrowableRestResponse; import org.elasticsearch.rest.action.support.RestTable; import java.io.IOException; @@ -87,7 +87,7 @@ public class RestAllocationAction extends AbstractCatAction { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -98,7 +98,7 @@ public class RestAllocationAction extends AbstractCatAction { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/cat/RestCatAction.java b/src/main/java/org/elasticsearch/rest/action/cat/RestCatAction.java index 765b6fbc15b..2ff2fca1fa7 100644 --- a/src/main/java/org/elasticsearch/rest/action/cat/RestCatAction.java +++ b/src/main/java/org/elasticsearch/rest/action/cat/RestCatAction.java @@ -50,10 +50,10 @@ public class RestCatAction extends BaseRestHandler { @Override public void handleRequest(final RestRequest request, final RestChannel channel) { try { - channel.sendResponse(new StringRestResponse(RestStatus.OK, HELP)); + channel.sendResponse(new BytesRestResponse(RestStatus.OK, HELP)); } catch (Throwable t) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, t)); + channel.sendResponse(new BytesRestResponse(request, t)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/cat/RestCountAction.java b/src/main/java/org/elasticsearch/rest/action/cat/RestCountAction.java index 95f1322d7bb..10e80f1f311 100644 --- a/src/main/java/org/elasticsearch/rest/action/cat/RestCountAction.java +++ b/src/main/java/org/elasticsearch/rest/action/cat/RestCountAction.java @@ -29,10 +29,10 @@ import org.elasticsearch.common.Strings; import org.elasticsearch.common.Table; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.rest.BytesRestResponse; import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.XContentThrowableRestResponse; import org.elasticsearch.rest.action.support.RestActions; import org.elasticsearch.rest.action.support.RestTable; import org.joda.time.format.DateTimeFormat; @@ -87,7 +87,7 @@ public class RestCountAction extends AbstractCatAction { @Override public void onFailure(Throwable t) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, t)); + channel.sendResponse(new BytesRestResponse(request, t)); } catch (IOException e) { logger.error("Failed to send failure response", e); } diff --git a/src/main/java/org/elasticsearch/rest/action/cat/RestHealthAction.java b/src/main/java/org/elasticsearch/rest/action/cat/RestHealthAction.java index 2d87686bcfe..b9a06cb3064 100644 --- a/src/main/java/org/elasticsearch/rest/action/cat/RestHealthAction.java +++ b/src/main/java/org/elasticsearch/rest/action/cat/RestHealthAction.java @@ -26,10 +26,10 @@ import org.elasticsearch.client.Client; import org.elasticsearch.common.Table; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.rest.BytesRestResponse; import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.XContentThrowableRestResponse; import org.elasticsearch.rest.action.support.RestTable; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; @@ -70,7 +70,7 @@ public class RestHealthAction extends AbstractCatAction { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/cat/RestIndicesAction.java b/src/main/java/org/elasticsearch/rest/action/cat/RestIndicesAction.java index 2051f0df464..c8567d1f688 100644 --- a/src/main/java/org/elasticsearch/rest/action/cat/RestIndicesAction.java +++ b/src/main/java/org/elasticsearch/rest/action/cat/RestIndicesAction.java @@ -91,7 +91,7 @@ public class RestIndicesAction extends AbstractCatAction { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -103,7 +103,7 @@ public class RestIndicesAction extends AbstractCatAction { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -114,7 +114,7 @@ public class RestIndicesAction extends AbstractCatAction { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/cat/RestMasterAction.java b/src/main/java/org/elasticsearch/rest/action/cat/RestMasterAction.java index b5d5f86788b..98c09305b72 100644 --- a/src/main/java/org/elasticsearch/rest/action/cat/RestMasterAction.java +++ b/src/main/java/org/elasticsearch/rest/action/cat/RestMasterAction.java @@ -28,10 +28,10 @@ import org.elasticsearch.cluster.node.DiscoveryNodes; import org.elasticsearch.common.Table; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.rest.BytesRestResponse; import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.XContentThrowableRestResponse; import org.elasticsearch.rest.action.support.RestTable; import java.io.IOException; @@ -71,7 +71,7 @@ public class RestMasterAction extends AbstractCatAction { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/cat/RestNodesAction.java b/src/main/java/org/elasticsearch/rest/action/cat/RestNodesAction.java index fc176657f78..7d825c74adb 100644 --- a/src/main/java/org/elasticsearch/rest/action/cat/RestNodesAction.java +++ b/src/main/java/org/elasticsearch/rest/action/cat/RestNodesAction.java @@ -36,10 +36,10 @@ import org.elasticsearch.common.Table; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTransportAddress; +import org.elasticsearch.rest.BytesRestResponse; import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.XContentThrowableRestResponse; import org.elasticsearch.rest.action.support.RestTable; import java.io.IOException; @@ -90,7 +90,7 @@ public class RestNodesAction extends AbstractCatAction { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -101,7 +101,7 @@ public class RestNodesAction extends AbstractCatAction { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -112,7 +112,7 @@ public class RestNodesAction extends AbstractCatAction { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/cat/RestPendingClusterTasksAction.java b/src/main/java/org/elasticsearch/rest/action/cat/RestPendingClusterTasksAction.java index 80e5f18bf52..8473aeccb3d 100644 --- a/src/main/java/org/elasticsearch/rest/action/cat/RestPendingClusterTasksAction.java +++ b/src/main/java/org/elasticsearch/rest/action/cat/RestPendingClusterTasksAction.java @@ -65,7 +65,7 @@ public class RestPendingClusterTasksAction extends AbstractCatAction { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/cat/RestRecoveryAction.java b/src/main/java/org/elasticsearch/rest/action/cat/RestRecoveryAction.java index 423d1787b2c..44905057795 100644 --- a/src/main/java/org/elasticsearch/rest/action/cat/RestRecoveryAction.java +++ b/src/main/java/org/elasticsearch/rest/action/cat/RestRecoveryAction.java @@ -30,10 +30,10 @@ import org.elasticsearch.common.Strings; import org.elasticsearch.common.Table; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.rest.BytesRestResponse; import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestController; import org.elasticsearch.rest.RestRequest; -import org.elasticsearch.rest.XContentThrowableRestResponse; import org.elasticsearch.rest.action.support.RestTable; import org.apache.lucene.util.CollectionUtil; @@ -79,7 +79,7 @@ public class RestRecoveryAction extends AbstractCatAction { channel.sendResponse(RestTable.buildResponse(buildRecoveryTable(request, response), request, channel)); } catch (Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e2) { logger.error("Unable to send recovery status response", e2); } @@ -89,7 +89,7 @@ public class RestRecoveryAction extends AbstractCatAction { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/cat/RestSegmentsAction.java b/src/main/java/org/elasticsearch/rest/action/cat/RestSegmentsAction.java index 761156b219a..0a95b3f516c 100644 --- a/src/main/java/org/elasticsearch/rest/action/cat/RestSegmentsAction.java +++ b/src/main/java/org/elasticsearch/rest/action/cat/RestSegmentsAction.java @@ -78,7 +78,7 @@ public class RestSegmentsAction extends AbstractCatAction { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -90,7 +90,7 @@ public class RestSegmentsAction extends AbstractCatAction { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/count/RestCountAction.java b/src/main/java/org/elasticsearch/rest/action/count/RestCountAction.java index da6a7732c58..ca31643e199 100644 --- a/src/main/java/org/elasticsearch/rest/action/count/RestCountAction.java +++ b/src/main/java/org/elasticsearch/rest/action/count/RestCountAction.java @@ -90,7 +90,7 @@ public class RestCountAction extends BaseRestHandler { } catch (Exception e) { try { XContentBuilder builder = RestXContentBuilder.restContentBuilder(request); - channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); + channel.sendResponse(new BytesRestResponse(BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -108,7 +108,7 @@ public class RestCountAction extends BaseRestHandler { buildBroadcastShardsHeader(builder, response); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, response.status(), builder)); + channel.sendResponse(new BytesRestResponse(response.status(), builder)); } catch (Throwable e) { onFailure(e); } @@ -117,7 +117,7 @@ public class RestCountAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/delete/RestDeleteAction.java b/src/main/java/org/elasticsearch/rest/action/delete/RestDeleteAction.java index 01d83e0d5b0..65f45731cdb 100644 --- a/src/main/java/org/elasticsearch/rest/action/delete/RestDeleteAction.java +++ b/src/main/java/org/elasticsearch/rest/action/delete/RestDeleteAction.java @@ -90,7 +90,7 @@ public class RestDeleteAction extends BaseRestHandler { if (!result.isFound()) { status = NOT_FOUND; } - channel.sendResponse(new XContentRestResponse(request, status, builder)); + channel.sendResponse(new BytesRestResponse(status, builder)); } catch (Throwable e) { onFailure(e); } @@ -99,7 +99,7 @@ public class RestDeleteAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/deletebyquery/RestDeleteByQueryAction.java b/src/main/java/org/elasticsearch/rest/action/deletebyquery/RestDeleteByQueryAction.java index 981bf55c837..aafad28e5a3 100644 --- a/src/main/java/org/elasticsearch/rest/action/deletebyquery/RestDeleteByQueryAction.java +++ b/src/main/java/org/elasticsearch/rest/action/deletebyquery/RestDeleteByQueryAction.java @@ -90,7 +90,7 @@ public class RestDeleteByQueryAction extends BaseRestHandler { } catch (Exception e) { try { XContentBuilder builder = RestXContentBuilder.restContentBuilder(request); - channel.sendResponse(new XContentRestResponse(request, PRECONDITION_FAILED, builder.startObject().field("error", e.getMessage()).endObject())); + channel.sendResponse(new BytesRestResponse(PRECONDITION_FAILED, builder.startObject().field("error", e.getMessage()).endObject())); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -129,7 +129,7 @@ public class RestDeleteByQueryAction extends BaseRestHandler { } builder.endObject(); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, restStatus, builder)); + channel.sendResponse(new BytesRestResponse(restStatus, builder)); } catch (Throwable e) { onFailure(e); } @@ -138,7 +138,7 @@ public class RestDeleteByQueryAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/explain/RestExplainAction.java b/src/main/java/org/elasticsearch/rest/action/explain/RestExplainAction.java index b6656ffdcd7..e1486d42664 100644 --- a/src/main/java/org/elasticsearch/rest/action/explain/RestExplainAction.java +++ b/src/main/java/org/elasticsearch/rest/action/explain/RestExplainAction.java @@ -127,7 +127,7 @@ public class RestExplainAction extends BaseRestHandler { builder.endObject(); } builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, response.isExists() ? OK : NOT_FOUND, builder)); + channel.sendResponse(new BytesRestResponse(response.isExists() ? OK : NOT_FOUND, builder)); } catch (Throwable e) { onFailure(e); } @@ -151,7 +151,7 @@ public class RestExplainAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/get/RestGetAction.java b/src/main/java/org/elasticsearch/rest/action/get/RestGetAction.java index 046c76c77d2..31ef77c1ce3 100644 --- a/src/main/java/org/elasticsearch/rest/action/get/RestGetAction.java +++ b/src/main/java/org/elasticsearch/rest/action/get/RestGetAction.java @@ -82,9 +82,9 @@ public class RestGetAction extends BaseRestHandler { XContentBuilder builder = restContentBuilder(request); response.toXContent(builder, request); if (!response.isExists()) { - channel.sendResponse(new XContentRestResponse(request, NOT_FOUND, builder)); + channel.sendResponse(new BytesRestResponse(NOT_FOUND, builder)); } else { - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } } catch (Throwable e) { onFailure(e); @@ -94,7 +94,7 @@ public class RestGetAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/get/RestGetSourceAction.java b/src/main/java/org/elasticsearch/rest/action/get/RestGetSourceAction.java index bb9f0e7aec9..497f261ce5a 100644 --- a/src/main/java/org/elasticsearch/rest/action/get/RestGetSourceAction.java +++ b/src/main/java/org/elasticsearch/rest/action/get/RestGetSourceAction.java @@ -66,7 +66,7 @@ public class RestGetSourceAction extends BaseRestHandler { try { ActionRequestValidationException validationError = new ActionRequestValidationException(); validationError.addValidationError("fetching source can not be disabled"); - channel.sendResponse(new XContentThrowableRestResponse(request, validationError)); + channel.sendResponse(new BytesRestResponse(request, validationError)); } catch (IOException e) { logger.error("Failed to send failure response", e); } @@ -79,10 +79,10 @@ public class RestGetSourceAction extends BaseRestHandler { try { XContentBuilder builder = restContentBuilder(request, response.getSourceInternal()); if (!response.isExists()) { - channel.sendResponse(new XContentRestResponse(request, NOT_FOUND, builder)); + channel.sendResponse(new BytesRestResponse(NOT_FOUND, builder)); } else { RestXContentBuilder.directSource(response.getSourceInternal(), builder, request); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } } catch (Throwable e) { onFailure(e); @@ -92,7 +92,7 @@ public class RestGetSourceAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/get/RestHeadAction.java b/src/main/java/org/elasticsearch/rest/action/get/RestHeadAction.java index dfa74cbdaa4..54cb4e9f515 100644 --- a/src/main/java/org/elasticsearch/rest/action/get/RestHeadAction.java +++ b/src/main/java/org/elasticsearch/rest/action/get/RestHeadAction.java @@ -64,9 +64,9 @@ public class RestHeadAction extends BaseRestHandler { public void onResponse(GetResponse response) { try { if (!response.isExists()) { - channel.sendResponse(new StringRestResponse(NOT_FOUND)); + channel.sendResponse(new BytesRestResponse(NOT_FOUND)); } else { - channel.sendResponse(new StringRestResponse(OK)); + channel.sendResponse(new BytesRestResponse(OK)); } } catch (Throwable e) { onFailure(e); @@ -76,7 +76,7 @@ public class RestHeadAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new StringRestResponse(ExceptionsHelper.status(e))); + channel.sendResponse(new BytesRestResponse(ExceptionsHelper.status(e))); } catch (Exception e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/get/RestMultiGetAction.java b/src/main/java/org/elasticsearch/rest/action/get/RestMultiGetAction.java index a89385fbe03..ef928f37a91 100644 --- a/src/main/java/org/elasticsearch/rest/action/get/RestMultiGetAction.java +++ b/src/main/java/org/elasticsearch/rest/action/get/RestMultiGetAction.java @@ -77,7 +77,7 @@ public class RestMultiGetAction extends BaseRestHandler { } catch (Exception e) { try { XContentBuilder builder = restContentBuilder(request); - channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); + channel.sendResponse(new BytesRestResponse(BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -90,7 +90,7 @@ public class RestMultiGetAction extends BaseRestHandler { try { XContentBuilder builder = restContentBuilder(request); response.toXContent(builder, request); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -99,7 +99,7 @@ public class RestMultiGetAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/index/RestIndexAction.java b/src/main/java/org/elasticsearch/rest/action/index/RestIndexAction.java index 29ba8686c0a..731795775d9 100644 --- a/src/main/java/org/elasticsearch/rest/action/index/RestIndexAction.java +++ b/src/main/java/org/elasticsearch/rest/action/index/RestIndexAction.java @@ -88,7 +88,7 @@ public class RestIndexAction extends BaseRestHandler { } else { try { XContentBuilder builder = RestXContentBuilder.restContentBuilder(request); - channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", "opType [" + sOpType + "] not allowed, either [index] or [create] are allowed").endObject())); + channel.sendResponse(new BytesRestResponse(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; @@ -119,7 +119,7 @@ public class RestIndexAction extends BaseRestHandler { if (response.isCreated()) { status = CREATED; } - channel.sendResponse(new XContentRestResponse(request, status, builder)); + channel.sendResponse(new BytesRestResponse(status, builder)); } catch (Throwable e) { onFailure(e); } @@ -128,7 +128,7 @@ public class RestIndexAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/main/RestMainAction.java b/src/main/java/org/elasticsearch/rest/action/main/RestMainAction.java index 8f26c9fbeac..2775af0a6fb 100644 --- a/src/main/java/org/elasticsearch/rest/action/main/RestMainAction.java +++ b/src/main/java/org/elasticsearch/rest/action/main/RestMainAction.java @@ -67,7 +67,7 @@ public class RestMainAction extends BaseRestHandler { status = RestStatus.SERVICE_UNAVAILABLE; } if (request.method() == RestRequest.Method.HEAD) { - channel.sendResponse(new StringRestResponse(status)); + channel.sendResponse(new BytesRestResponse(status)); return; } @@ -97,7 +97,7 @@ public class RestMainAction extends BaseRestHandler { .endObject(); builder.field("tagline", "You Know, for Search"); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, status, builder)); + channel.sendResponse(new BytesRestResponse(status, builder)); } catch (Throwable e) { onFailure(e); } @@ -107,9 +107,9 @@ public class RestMainAction extends BaseRestHandler { public void onFailure(Throwable e) { try { if (request.method() == HEAD) { - channel.sendResponse(new StringRestResponse(ExceptionsHelper.status(e))); + channel.sendResponse(new BytesRestResponse(ExceptionsHelper.status(e))); } else { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } } catch (Exception e1) { logger.warn("Failed to send response", e); diff --git a/src/main/java/org/elasticsearch/rest/action/mlt/RestMoreLikeThisAction.java b/src/main/java/org/elasticsearch/rest/action/mlt/RestMoreLikeThisAction.java index 4dacd0e8283..a87f8d58d7e 100644 --- a/src/main/java/org/elasticsearch/rest/action/mlt/RestMoreLikeThisAction.java +++ b/src/main/java/org/elasticsearch/rest/action/mlt/RestMoreLikeThisAction.java @@ -94,7 +94,7 @@ public class RestMoreLikeThisAction extends BaseRestHandler { } catch (Exception e) { try { XContentBuilder builder = restContentBuilder(request); - channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); + channel.sendResponse(new BytesRestResponse(BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -109,7 +109,7 @@ public class RestMoreLikeThisAction extends BaseRestHandler { builder.startObject(); response.toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -118,7 +118,7 @@ public class RestMoreLikeThisAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/percolate/RestMultiPercolateAction.java b/src/main/java/org/elasticsearch/rest/action/percolate/RestMultiPercolateAction.java index b8064594bff..fb3a9ae76b0 100644 --- a/src/main/java/org/elasticsearch/rest/action/percolate/RestMultiPercolateAction.java +++ b/src/main/java/org/elasticsearch/rest/action/percolate/RestMultiPercolateAction.java @@ -69,7 +69,7 @@ public class RestMultiPercolateAction extends BaseRestHandler { multiPercolateRequest.add(RestActions.getRestContent(restRequest), restRequest.contentUnsafe(), allowExplicitIndex); } catch (Exception e) { try { - restChannel.sendResponse(new XContentThrowableRestResponse(restRequest, e)); + restChannel.sendResponse(new BytesRestResponse(restRequest, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -83,7 +83,7 @@ public class RestMultiPercolateAction extends BaseRestHandler { try { XContentBuilder builder = restContentBuilder(restRequest); response.toXContent(builder, restRequest); - restChannel.sendResponse(new XContentRestResponse(restRequest, OK, builder)); + restChannel.sendResponse(new BytesRestResponse(OK, builder)); } catch (IOException e) { onFailure(e); } @@ -92,7 +92,7 @@ public class RestMultiPercolateAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - restChannel.sendResponse(new XContentThrowableRestResponse(restRequest, e)); + restChannel.sendResponse(new BytesRestResponse(restRequest, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/percolate/RestPercolateAction.java b/src/main/java/org/elasticsearch/rest/action/percolate/RestPercolateAction.java index 0b2f71a3bd8..54479af36b2 100644 --- a/src/main/java/org/elasticsearch/rest/action/percolate/RestPercolateAction.java +++ b/src/main/java/org/elasticsearch/rest/action/percolate/RestPercolateAction.java @@ -118,7 +118,7 @@ public class RestPercolateAction extends BaseRestHandler { try { XContentBuilder builder = RestXContentBuilder.restContentBuilder(restRequest); response.toXContent(builder, restRequest); - restChannel.sendResponse(new XContentRestResponse(restRequest, OK, builder)); + restChannel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -127,7 +127,7 @@ public class RestPercolateAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - restChannel.sendResponse(new XContentThrowableRestResponse(restRequest, e)); + restChannel.sendResponse(new BytesRestResponse(restRequest, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/search/RestClearScrollAction.java b/src/main/java/org/elasticsearch/rest/action/search/RestClearScrollAction.java index 21115c1928c..0781db8047c 100644 --- a/src/main/java/org/elasticsearch/rest/action/search/RestClearScrollAction.java +++ b/src/main/java/org/elasticsearch/rest/action/search/RestClearScrollAction.java @@ -62,7 +62,7 @@ public class RestClearScrollAction extends BaseRestHandler { XContentBuilder builder = restContentBuilder(request); builder.startObject(); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -71,7 +71,7 @@ public class RestClearScrollAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/search/RestMultiSearchAction.java b/src/main/java/org/elasticsearch/rest/action/search/RestMultiSearchAction.java index 10a1ec041ab..9e1752f0691 100644 --- a/src/main/java/org/elasticsearch/rest/action/search/RestMultiSearchAction.java +++ b/src/main/java/org/elasticsearch/rest/action/search/RestMultiSearchAction.java @@ -73,7 +73,7 @@ public class RestMultiSearchAction extends BaseRestHandler { } catch (Exception e) { try { XContentBuilder builder = restContentBuilder(request); - channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); + channel.sendResponse(new BytesRestResponse(BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -88,7 +88,7 @@ public class RestMultiSearchAction extends BaseRestHandler { builder.startObject(); response.toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -97,7 +97,7 @@ public class RestMultiSearchAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/search/RestSearchAction.java b/src/main/java/org/elasticsearch/rest/action/search/RestSearchAction.java index 600593d92ea..fed93140f66 100644 --- a/src/main/java/org/elasticsearch/rest/action/search/RestSearchAction.java +++ b/src/main/java/org/elasticsearch/rest/action/search/RestSearchAction.java @@ -89,7 +89,7 @@ public class RestSearchAction extends BaseRestHandler { } try { XContentBuilder builder = restContentBuilder(request); - channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); + channel.sendResponse(new BytesRestResponse(BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -103,7 +103,7 @@ public class RestSearchAction extends BaseRestHandler { builder.startObject(); response.toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, response.status(), builder)); + channel.sendResponse(new BytesRestResponse(response.status(), builder)); } catch (Exception e) { if (logger.isDebugEnabled()) { logger.debug("failed to execute search (building response)", e); @@ -115,7 +115,7 @@ public class RestSearchAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/search/RestSearchScrollAction.java b/src/main/java/org/elasticsearch/rest/action/search/RestSearchScrollAction.java index 7de4470297a..b64c1734103 100644 --- a/src/main/java/org/elasticsearch/rest/action/search/RestSearchScrollAction.java +++ b/src/main/java/org/elasticsearch/rest/action/search/RestSearchScrollAction.java @@ -78,7 +78,7 @@ public class RestSearchScrollAction extends BaseRestHandler { } catch (Exception e) { try { XContentBuilder builder = restContentBuilder(request); - channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); + channel.sendResponse(new BytesRestResponse(BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -93,7 +93,7 @@ public class RestSearchScrollAction extends BaseRestHandler { builder.startObject(); response.toXContent(builder, request); builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, response.status(), builder)); + channel.sendResponse(new BytesRestResponse(response.status(), builder)); } catch (Throwable e) { onFailure(e); } @@ -102,7 +102,7 @@ public class RestSearchScrollAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/suggest/RestSuggestAction.java b/src/main/java/org/elasticsearch/rest/action/suggest/RestSuggestAction.java index 2f3d6530453..f443aa658c7 100644 --- a/src/main/java/org/elasticsearch/rest/action/suggest/RestSuggestAction.java +++ b/src/main/java/org/elasticsearch/rest/action/suggest/RestSuggestAction.java @@ -83,7 +83,7 @@ public class RestSuggestAction extends BaseRestHandler { } catch (Exception e) { try { XContentBuilder builder = RestXContentBuilder.restContentBuilder(request); - channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); + channel.sendResponse(new BytesRestResponse(BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } @@ -102,7 +102,7 @@ public class RestSuggestAction extends BaseRestHandler { suggest.toXContent(builder, request); } builder.endObject(); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -111,7 +111,7 @@ public class RestSuggestAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/support/RestTable.java b/src/main/java/org/elasticsearch/rest/action/support/RestTable.java index 59ebbb368c3..b6ba3ae4207 100644 --- a/src/main/java/org/elasticsearch/rest/action/support/RestTable.java +++ b/src/main/java/org/elasticsearch/rest/action/support/RestTable.java @@ -58,7 +58,7 @@ public class RestTable { } builder.endArray(); - return new XContentRestResponse(request, RestStatus.OK, builder); + return new BytesRestResponse(RestStatus.OK, builder); } public static RestResponse buildTextPlainResponse(Table table, RestRequest request, RestChannel channel) { @@ -86,7 +86,7 @@ public class RestTable { out.append("\n"); } - return new StringRestResponse(RestStatus.OK, out.toString()); + return new BytesRestResponse(RestStatus.OK, out.toString()); } private static List buildDisplayHeaders(Table table, RestRequest request) { diff --git a/src/main/java/org/elasticsearch/rest/action/termvector/RestMultiTermVectorsAction.java b/src/main/java/org/elasticsearch/rest/action/termvector/RestMultiTermVectorsAction.java index e1b0b6f184b..2938aa6f5a9 100644 --- a/src/main/java/org/elasticsearch/rest/action/termvector/RestMultiTermVectorsAction.java +++ b/src/main/java/org/elasticsearch/rest/action/termvector/RestMultiTermVectorsAction.java @@ -64,7 +64,7 @@ public class RestMultiTermVectorsAction extends BaseRestHandler { multiTermVectorsRequest.add(template, RestActions.getRestContent(request)); } catch (Throwable t) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, t)); + channel.sendResponse(new BytesRestResponse(request, t)); } catch (Throwable tIO) { logger.error("Failed to send failure response", tIO); } @@ -77,7 +77,7 @@ public class RestMultiTermVectorsAction extends BaseRestHandler { try { XContentBuilder builder = restContentBuilder(request); response.toXContent(builder, request); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable t) { onFailure(t); } @@ -86,7 +86,7 @@ public class RestMultiTermVectorsAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (Throwable t) { logger.error("Failed to send failure response", t); } diff --git a/src/main/java/org/elasticsearch/rest/action/termvector/RestTermVectorAction.java b/src/main/java/org/elasticsearch/rest/action/termvector/RestTermVectorAction.java index 47d0a2893a6..85ea2399c37 100644 --- a/src/main/java/org/elasticsearch/rest/action/termvector/RestTermVectorAction.java +++ b/src/main/java/org/elasticsearch/rest/action/termvector/RestTermVectorAction.java @@ -67,7 +67,7 @@ public class RestTermVectorAction extends BaseRestHandler { } catch (IOException e) { try { XContentBuilder builder = RestXContentBuilder.restContentBuilder(request); - channel.sendResponse(new XContentRestResponse(request, BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); + channel.sendResponse(new BytesRestResponse(BAD_REQUEST, builder.startObject().field("error", e.getMessage()).endObject())); } catch (IOException e1) { logger.warn("Failed to send response", e1); @@ -87,7 +87,7 @@ public class RestTermVectorAction extends BaseRestHandler { try { XContentBuilder builder = restContentBuilder(request); response.toXContent(builder, request); - channel.sendResponse(new XContentRestResponse(request, OK, builder)); + channel.sendResponse(new BytesRestResponse(OK, builder)); } catch (Throwable e) { onFailure(e); } @@ -96,7 +96,7 @@ public class RestTermVectorAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/main/java/org/elasticsearch/rest/action/update/RestUpdateAction.java b/src/main/java/org/elasticsearch/rest/action/update/RestUpdateAction.java index 98f414aee4c..7a8cf3bb307 100644 --- a/src/main/java/org/elasticsearch/rest/action/update/RestUpdateAction.java +++ b/src/main/java/org/elasticsearch/rest/action/update/RestUpdateAction.java @@ -117,7 +117,7 @@ public class RestUpdateAction extends BaseRestHandler { } } catch (Exception e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.warn("Failed to send response", e1); } @@ -147,7 +147,7 @@ public class RestUpdateAction extends BaseRestHandler { if (response.isCreated()) { status = CREATED; } - channel.sendResponse(new XContentRestResponse(request, status, builder)); + channel.sendResponse(new BytesRestResponse(status, builder)); } catch (Throwable e) { onFailure(e); } @@ -156,7 +156,7 @@ public class RestUpdateAction extends BaseRestHandler { @Override public void onFailure(Throwable e) { try { - channel.sendResponse(new XContentThrowableRestResponse(request, e)); + channel.sendResponse(new BytesRestResponse(request, e)); } catch (IOException e1) { logger.error("Failed to send failure response", e1); } diff --git a/src/test/java/org/elasticsearch/plugin/responseheader/TestResponseHeaderRestAction.java b/src/test/java/org/elasticsearch/plugin/responseheader/TestResponseHeaderRestAction.java index 4d1c9eb80d0..28ef73f1c43 100644 --- a/src/test/java/org/elasticsearch/plugin/responseheader/TestResponseHeaderRestAction.java +++ b/src/test/java/org/elasticsearch/plugin/responseheader/TestResponseHeaderRestAction.java @@ -34,11 +34,11 @@ public class TestResponseHeaderRestAction extends BaseRestHandler { @Override public void handleRequest(RestRequest request, RestChannel channel) { if ("password".equals(request.header("Secret"))) { - RestResponse response = new StringRestResponse(RestStatus.OK, "Access granted"); + RestResponse response = new BytesRestResponse(RestStatus.OK, "Access granted"); response.addHeader("Secret", "granted"); channel.sendResponse(response); } else { - RestResponse response = new StringRestResponse(RestStatus.UNAUTHORIZED, "Access denied"); + RestResponse response = new BytesRestResponse(RestStatus.UNAUTHORIZED, "Access denied"); response.addHeader("Secret", "required"); channel.sendResponse(response); }