com.google.api.client.http.HttpExecuteInterceptor

Here are the examples of the java api class com.google.api.client.http.HttpExecuteInterceptor taken from open source projects.

1. BatchRequest#execute()

View license
/**
   * Executes all queued HTTP requests in a single call, parses the responses and invokes callbacks.
   *
   * <p>
   * Calling {@link #execute()} executes and clears the queued requests. This means that the
   * {@link BatchRequest} object can be reused to {@link #queue} and {@link #execute()} requests
   * again.
   * </p>
   */
public void execute() throws IOException {
    boolean retryAllowed;
    Preconditions.checkState(!requestInfos.isEmpty());
    HttpRequest batchRequest = requestFactory.buildPostRequest(this.batchUrl, null);
    // NOTE: batch does not support gzip encoding
    HttpExecuteInterceptor originalInterceptor = batchRequest.getInterceptor();
    batchRequest.setInterceptor(new BatchInterceptor(originalInterceptor));
    int retriesRemaining = batchRequest.getNumberOfRetries();
    BackOffPolicy backOffPolicy = batchRequest.getBackOffPolicy();
    if (backOffPolicy != null) {
        // Reset the BackOffPolicy at the start of each execute.
        backOffPolicy.reset();
    }
    do {
        retryAllowed = retriesRemaining > 0;
        MultipartContent batchContent = new MultipartContent();
        batchContent.getMediaType().setSubType("mixed");
        int contentId = 1;
        for (RequestInfo<?, ?> requestInfo : requestInfos) {
            batchContent.addPart(new MultipartContent.Part(new HttpHeaders().setAcceptEncoding(null).set("Content-ID", contentId++), new HttpRequestContent(requestInfo.request)));
        }
        batchRequest.setContent(batchContent);
        HttpResponse response = batchRequest.execute();
        BatchUnparsedResponse batchResponse;
        try {
            // Find the boundary from the Content-Type header.
            String boundary = "--" + response.getMediaType().getParameter("boundary");
            // Parse the content stream.
            InputStream contentStream = response.getContent();
            batchResponse = new BatchUnparsedResponse(contentStream, boundary, requestInfos, retryAllowed);
            while (batchResponse.hasNext) {
                batchResponse.parseNextResponse();
            }
        } finally {
            response.disconnect();
        }
        List<RequestInfo<?, ?>> unsuccessfulRequestInfos = batchResponse.unsuccessfulRequestInfos;
        if (!unsuccessfulRequestInfos.isEmpty()) {
            requestInfos = unsuccessfulRequestInfos;
            // backOff if required.
            if (batchResponse.backOffRequired && backOffPolicy != null) {
                long backOffTime = backOffPolicy.getNextBackOffMillis();
                if (backOffTime != BackOffPolicy.STOP) {
                    try {
                        sleeper.sleep(backOffTime);
                    } catch (InterruptedException exception) {
                    }
                }
            }
        } else {
            break;
        }
        retriesRemaining--;
    } while (retryAllowed);
    requestInfos.clear();
}