Search in sources :

Example 21 with RestStatus

use of org.elasticsearch.rest.RestStatus in project elasticsearch by elastic.

the class RestMainActionTests method testGetResponse.

public void testGetResponse() throws Exception {
    final String nodeName = "node1";
    final ClusterName clusterName = new ClusterName("cluster1");
    final String clusterUUID = randomAsciiOfLengthBetween(10, 20);
    final boolean available = randomBoolean();
    final RestStatus expectedStatus = available ? RestStatus.OK : RestStatus.SERVICE_UNAVAILABLE;
    final Version version = Version.CURRENT;
    final Build build = Build.CURRENT;
    final boolean prettyPrint = randomBoolean();
    final MainResponse mainResponse = new MainResponse(nodeName, version, clusterName, clusterUUID, build, available);
    XContentBuilder builder = JsonXContent.contentBuilder();
    Map<String, String> params = new HashMap<>();
    if (prettyPrint == false) {
        params.put("pretty", String.valueOf(prettyPrint));
    }
    RestRequest restRequest = new FakeRestRequest.Builder(xContentRegistry()).withParams(params).build();
    BytesRestResponse response = RestMainAction.convertMainResponse(mainResponse, restRequest, builder);
    assertNotNull(response);
    assertEquals(expectedStatus, response.status());
    assertThat(response.content().length(), greaterThan(0));
    XContentBuilder responseBuilder = JsonXContent.contentBuilder();
    if (prettyPrint) {
        // do this to mimic what the rest layer does
        responseBuilder.prettyPrint().lfAtEnd();
    }
    mainResponse.toXContent(responseBuilder, ToXContent.EMPTY_PARAMS);
    BytesReference xcontentBytes = responseBuilder.bytes();
    assertEquals(xcontentBytes, response.content());
}
Also used : BytesReference(org.elasticsearch.common.bytes.BytesReference) HashMap(java.util.HashMap) XContentBuilder(org.elasticsearch.common.xcontent.XContentBuilder) FakeRestRequest(org.elasticsearch.test.rest.FakeRestRequest) RestRequest(org.elasticsearch.rest.RestRequest) RestStatus(org.elasticsearch.rest.RestStatus) Version(org.elasticsearch.Version) MainResponse(org.elasticsearch.action.main.MainResponse) Build(org.elasticsearch.Build) BytesRestResponse(org.elasticsearch.rest.BytesRestResponse) ClusterName(org.elasticsearch.cluster.ClusterName) XContentBuilder(org.elasticsearch.common.xcontent.XContentBuilder)

Example 22 with RestStatus

use of org.elasticsearch.rest.RestStatus in project elasticsearch by elastic.

the class RemoteScrollableHitSource method wrapExceptionToPreserveStatus.

/**
     * Wrap the ResponseException in an exception that'll preserve its status code if possible so we can send it back to the user. We might
     * not have a constant for the status code so in that case we just use 500 instead. We also extract make sure to include the response
     * body in the message so the user can figure out *why* the remote Elasticsearch service threw the error back to us.
     */
static ElasticsearchStatusException wrapExceptionToPreserveStatus(int statusCode, @Nullable HttpEntity entity, Exception cause) {
    RestStatus status = RestStatus.fromCode(statusCode);
    String messagePrefix = "";
    if (status == null) {
        messagePrefix = "Couldn't extract status [" + statusCode + "]. ";
        status = RestStatus.INTERNAL_SERVER_ERROR;
    }
    try {
        return new ElasticsearchStatusException(messagePrefix + bodyMessage(entity), status, cause);
    } catch (IOException ioe) {
        ElasticsearchStatusException e = new ElasticsearchStatusException(messagePrefix + "Failed to extract body.", status, cause);
        e.addSuppressed(ioe);
        return e;
    }
}
Also used : RestStatus(org.elasticsearch.rest.RestStatus) IOException(java.io.IOException) ElasticsearchStatusException(org.elasticsearch.ElasticsearchStatusException)

Aggregations

RestStatus (org.elasticsearch.rest.RestStatus)22 IOException (java.io.IOException)15 ElasticsearchException (org.elasticsearch.ElasticsearchException)11 MainResponse (org.elasticsearch.action.main.MainResponse)11 XContentBuilder (org.elasticsearch.common.xcontent.XContentBuilder)10 HttpHost (org.apache.http.HttpHost)8 HttpResponse (org.apache.http.HttpResponse)8 BasicHttpResponse (org.apache.http.message.BasicHttpResponse)8 Version (org.elasticsearch.Version)8 HttpEntity (org.apache.http.HttpEntity)7 StringEntity (org.apache.http.entity.StringEntity)7 Build (org.elasticsearch.Build)7 ClusterName (org.elasticsearch.cluster.ClusterName)7 Collections (java.util.Collections)6 List (java.util.List)6 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)6 ActionListener (org.elasticsearch.action.ActionListener)6 ActionRequestValidationException (org.elasticsearch.action.ActionRequestValidationException)6 XContentParser (org.elasticsearch.common.xcontent.XContentParser)6 JsonParseException (com.fasterxml.jackson.core.JsonParseException)5