Example #1
0
 private <S extends GenericResponse> S post(Object payload, boolean agressiveRetry)
     throws Exception {
   EndPointResponsePair endPointResponse =
       Preconditions.checkNotNull(
           REQUEST_TO_ENDPOINT.get(payload.getClass()), payload.getClass().getName());
   HttpPost request = new HttpPost(mApiEndPoint + endPointResponse.getEndpoint());
   try {
     String payloadString = mMapper.writeValueAsString(payload);
     StringEntity params = new StringEntity(payloadString);
     request.addHeader("content-type", "application/json");
     request.setEntity(params);
     if (agressiveRetry) {
       mHttpClient.setHttpRequestRetryHandler(new PTestHttpRequestRetryHandler());
     }
     HttpResponse httpResponse = mHttpClient.execute(request);
     StatusLine statusLine = httpResponse.getStatusLine();
     if (statusLine.getStatusCode() != 200) {
       throw new IllegalStateException(
           statusLine.getStatusCode() + " " + statusLine.getReasonPhrase());
     }
     String response = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
     @SuppressWarnings("unchecked")
     S result =
         (S)
             endPointResponse
                 .getResponseClass()
                 .cast(mMapper.readValue(response, endPointResponse.getResponseClass()));
     Status.assertOK(result.getStatus());
     if (System.getProperty("DEBUG_PTEST_CLIENT") != null) {
       System.err.println("payload " + payloadString);
       if (result instanceof TestLogResponse) {
         System.err.println(
             "response "
                 + ((TestLogResponse) result).getOffset()
                 + " "
                 + ((TestLogResponse) result).getStatus());
       } else {
         System.err.println("response " + response);
       }
     }
     Thread.sleep(1000);
     return result;
   } finally {
     request.abort();
   }
 }