Ejemplo n.º 1
0
 @Test
 public void testIt() {
   UriBuilder uriBuilder = new UriBuilderImpl().uriTemplate("/");
   ClientExecutor executor = ClientRequest.getDefaultExecutor();
   ClientRequest request = new ClientRequest(uriBuilder, executor);
   _test(request, uriBuilder, "/set");
   _test(request, uriBuilder, "/headers");
   _test(request, uriBuilder, "/headers/fromField");
   _test(request, uriBuilder, "/cookieparam");
   _test(request, uriBuilder, "/param");
   _test(request, uriBuilder, "/default");
 }
  public <T> OpenStackResponse request(OpenStackRequest<T> request) {
    ClientRequest client =
        new ClientRequest(
            UriBuilder.fromUri(request.endpoint() + "/" + request.path()),
            ClientRequest.getDefaultExecutor(),
            providerFactory);

    for (Map.Entry<String, List<Object>> entry : request.queryParams().entrySet()) {
      for (Object o : entry.getValue()) {
        client = client.queryParameter(entry.getKey(), String.valueOf(o));
      }
    }

    for (Entry<String, List<Object>> h : request.headers().entrySet()) {
      StringBuilder sb = new StringBuilder();
      for (Object v : h.getValue()) {
        sb.append(String.valueOf(v));
      }
      client.header(h.getKey(), sb);
    }

    if (request.entity() != null) {
      client.body(request.entity().getContentType(), request.entity().getEntity());
    }

    ClientResponse<T> response;

    try {
      response = client.httpMethod(request.method().name(), request.returnType());
    } catch (Exception e) {
      throw new RuntimeException("Unexpected client exception", e);
    }

    if (response.getStatus() == HttpStatus.SC_OK
        || response.getStatus() == HttpStatus.SC_CREATED
        || response.getStatus() == HttpStatus.SC_NO_CONTENT) {
      return new RESTEasyResponse(response);
    }

    response.releaseConnection();

    throw new OpenStackResponseException(
        response.getResponseStatus().getReasonPhrase(), response.getStatus());
  }