示例#1
0
 public static ResponseParser performHttpRequest(
     String hostname, int hostPort, RequestBuilder builder) throws IOException {
   Socket socket = new Socket(hostname, hostPort);
   OutputStream socketOut = socket.getOutputStream();
   InputStream socketIn = socket.getInputStream();
   builder.send(socketOut);
   socketOut.flush();
   try {
     return new ResponseParser(socketIn);
   } finally {
     socketOut.close();
     socket.close();
   }
 }
示例#2
0
  private void updateFeatureLocation(final AnnotationInfo originalInfo) {
    String url = Annotator.getRootUrl() + "annotator/updateFeatureLocation";
    RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, URL.encode(url));
    builder.setHeader("Content-type", "application/x-www-form-urlencoded");
    StringBuilder sb = new StringBuilder();
    sb.append(
        "data="
            + AnnotationInfoConverter.convertAnnotationInfoToJSONObject(this.internalAnnotationInfo)
                .toString());
    final AnnotationInfo updatedInfo = this.internalAnnotationInfo;
    builder.setRequestData(sb.toString());
    enableFields(false);
    RequestCallback requestCallback =
        new RequestCallback() {
          @Override
          public void onResponseReceived(Request request, Response response) {
            JSONValue returnValue = JSONParser.parseStrict(response.getText());
            GWT.log("return value: " + returnValue.toString());
            enableFields(true);
            Annotator.eventBus.fireEvent(
                new AnnotationInfoChangeEvent(
                    updatedInfo, AnnotationInfoChangeEvent.Action.UPDATE));
            updateDetailData(updatedInfo);
            redrawExonTable();
          }

          @Override
          public void onError(Request request, Throwable exception) {
            // todo: handling different types of errors
            Bootbox.alert("Error updating exon: " + exception.toString());
            coordinatesToPrime(originalInfo.getMin(), originalInfo.getMax());
            enableFields(true);
          }
        };
    try {
      builder.setCallback(requestCallback);
      builder.send();
    } catch (RequestException e) {
      Bootbox.alert(e.getMessage());
      enableFields(true);
    }
  }
  public void deliver() {
    String url = Configuration.getEndpointUrl();
    RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, url);

    List<PerformanceTiming> timings = deliveryQueue.popTimings();
    List<IncidentReport> incidents = deliveryQueue.popIncidents();

    ResultInjector injector = new RequestBodyInjector();
    HeaderInjector.Result result = injector.inject(builder, timings, incidents);

    if (result.shouldSend()) {
      MeasurementRequestCallback callback = new MeasurementRequestCallback(timings, incidents);
      builder.setCallback(callback);
      try {
        builder.send();
      } catch (RequestException e) {
        deliveryQueue.pushTiming(timings);
        deliveryQueue.pushIncident(incidents);
        // TODO Consider lost piggybacked timings as well
      }
    }
  }
示例#4
0
  private Request executeRequest(
      final AsyncCallback<DMRResponse> resultCallback, final ModelNode operation) {
    if (idCounter == Long.MAX_VALUE) {
      idCounter = 0;
    }

    Request request = null;
    try {
      final String id = String.valueOf(idCounter++);
      trace(Type.BEGIN, id, operation);

      final RequestBuilder requestBuilder = chooseRequestBuilder(operation);
      trace(Type.SERIALIZED, id, operation);

      final RequestCallback requestCallback =
          new RequestCallback() {
            @Override
            public void onResponseReceived(Request request, Response response) {
              trace(Type.RECEIVE, id, operation);

              int statusCode = response.getStatusCode();
              if (200 == statusCode) {
                resultCallback.onSuccess(
                    new DMRResponse(
                        requestBuilder.getHTTPMethod(),
                        response.getText(),
                        response.getHeader(HEADER_CONTENT_TYPE)));
              } else if (401 == statusCode || 0 == statusCode) {
                resultCallback.onFailure(new DispatchError("Authentication required.", statusCode));
              } else if (403 == statusCode) {
                resultCallback.onFailure(new DispatchError("Authentication required.", statusCode));
              } else if (307 == statusCode) {
                String location = response.getHeader("Location");
                Log.error("Redirect '" + location + "'. Could not execute " + operation.toString());
                redirect(location);
              } else if (503 == statusCode) {
                resultCallback.onFailure(
                    new DispatchError(
                        "Service temporarily unavailable. Is the server still booting?",
                        statusCode));
              } else {
                StringBuilder sb = new StringBuilder();
                sb.append("Unexpected HTTP response").append(": ").append(statusCode);
                sb.append("\n\n");
                sb.append("Request\n");
                sb.append(operation.toString());
                sb.append("\n\nResponse\n\n");
                sb.append(response.getStatusText()).append("\n");
                String payload =
                    response.getText().equals("")
                        ? "No details"
                        : ModelNode.fromBase64(response.getText()).toString();
                sb.append(payload);
                resultCallback.onFailure(new DispatchError(sb.toString(), statusCode));
              }
              trace(Type.END, id, operation);
            }

            @Override
            public void onError(Request request, Throwable e) {
              trace(Type.RECEIVE, id, operation);
              resultCallback.onFailure(e);
              trace(Type.END, id, operation);
            }
          };
      requestBuilder.setCallback(requestCallback);
      request = requestBuilder.send();
      trace(Type.SEND, id, operation);
    } catch (RequestException e) {
      resultCallback.onFailure(e);
    }
    return request;
  }