Example usage for com.google.api.client.googleapis.json GoogleJsonError getErrors

List of usage examples for com.google.api.client.googleapis.json GoogleJsonError getErrors

Introduction

In this page you can find the example usage for com.google.api.client.googleapis.json GoogleJsonError getErrors.

Prototype

public final List<ErrorInfo> getErrors() 

Source Link

Document

Returns the list of detailed errors or null for none.

Usage

From source file:com.evolveum.polygon.connector.googleapps.GoogleAppsConnector.java

License:Open Source License

protected <G extends AbstractGoogleJsonClientRequest, T, R> R execute(G request,
        RequestResultHandler<G, T, R> handler, int retry) {
    try {/* w  w w.  j  a  v  a2  s . com*/
        if (retry >= 0) {
            long sleep = (long) ((1000 * Math.pow(2, retry)) + nextLong(1000));
            try {
                Thread.sleep(sleep);
            } catch (InterruptedException e) {
                throw ConnectorException.wrap(e);
            }
        }
        return handler.handleResult(request, (T) request.execute());
    } catch (GoogleJsonResponseException e) {

        GoogleJsonError details = e.getDetails();
        if (null != details && null != details.getErrors()) {
            GoogleJsonError.ErrorInfo errorInfo = details.getErrors().get(0);
            // error: 403
            //if (e.getStatusCode() == HttpStatusCodes.STATUS_CODE_FORBIDDEN) { //TODO commented out to be retryable finetune later to fast end on nonretryable errors
            //    if ("userRateLimitExceeded".equalsIgnoreCase(errorInfo.getReason())
            //            || "rateLimitExceeded".equalsIgnoreCase(errorInfo.getReason())) {
            //        logger.info("System should retry");
            //        throw RetryableException.wrap(e.getMessage(), e);
            //    }else{
            //if we are forbidden to do something we should not try again
            //        return handler.handleError(e);
            //    }
            //} else 
            if (e.getStatusCode() == HttpStatusCodes.STATUS_CODE_NOT_FOUND) {
                if ("notFound".equalsIgnoreCase(errorInfo.getReason())) {
                    return handler.handleNotFound(e);
                }
                //} else if (e.getStatusCode() == 409) { //TODO commented out to be retryable finetune later to fast end on nonretryable errors
                //    if ("duplicate".equalsIgnoreCase(errorInfo.getReason())) {
                // Already Exists
                //        handler.handleDuplicate(e);
                //    }
                //} else if (e.getStatusCode() == 400) { //TODO commented out to be retryable finetune later to fast end on nonretryable errors
                //    if ("invalid".equalsIgnoreCase(errorInfo.getReason())) {
                // Already Exists "Invalid Ou Id"
                //    }
            } else if (e.getStatusCode() == HttpStatusCodes.STATUS_CODE_SERVICE_UNAVAILABLE) {
                if ("backendError".equalsIgnoreCase(errorInfo.getReason()) && retry < 5) {
                    logger.warn("retrying 503 backendError retry number " + retry);
                    return execute(request, handler, ++retry);
                } else {
                    throw RetryableException.wrap(e.getMessage(), e);
                }
            } else if (e.getStatusCode() == HttpStatusCodes.STATUS_CODE_SERVER_ERROR) {
                if ("backendError".equalsIgnoreCase(errorInfo.getReason())
                        || "internalError".equalsIgnoreCase(errorInfo.getReason()) && retry < 5) {
                    logger.warn("retrying 500" + errorInfo.getReason() + "retry number " + retry);
                    return execute(request, handler, ++retry);
                } else {
                    throw RetryableException.wrap(e.getMessage(), e);
                }
            } else {
                if (retry < 5) { //last resort retry. We must right all wrongs!
                    logger.warn("retrying " + e.getStatusCode() + " " + errorInfo.getReason() + "retry number "
                            + retry);
                    return execute(request, handler, ++retry);
                } else {
                    if (e.getStatusCode() == 409) { //TODO commented out to be retryable finetune later to fast end on nonretryable errors
                        if ("duplicate".equalsIgnoreCase(errorInfo.getReason())) {
                            // Already Exists
                            logger.warn("handling duplicate");
                            return handler.handleDuplicate(e);
                        }
                    } else {
                        throw RetryableException.wrap(e.getMessage(), e);
                    }
                }
            }

        }
        throw ConnectorException.wrap(e);
    } catch (IOException e) {
        // https://developers.google.com/admin-sdk/directory/v1/limits
        // rateLimitExceeded or userRateLimitExceeded
        if (retry < 5) {
            return execute(request, handler, ++retry);
        } else {
            return handler.handleError(e);
        }
    }
}

From source file:com.google.cloud.BaseServiceException.java

License:Open Source License

public BaseServiceException(IOException exception, boolean idempotent) {
    super(message(exception), exception);
    int code = UNKNOWN_CODE;
    String reason = null;//from   w ww .  ja  va 2s . co m
    String location = null;
    String debugInfo = null;
    Boolean retryable = null;
    if (exception instanceof GoogleJsonResponseException) {
        GoogleJsonError jsonError = ((GoogleJsonResponseException) exception).getDetails();
        if (jsonError != null) {
            Error error = new Error(jsonError.getCode(), reason(jsonError));
            code = error.code;
            reason = error.reason;
            retryable = isRetryable(idempotent, error);
            if (reason != null) {
                GoogleJsonError.ErrorInfo errorInfo = jsonError.getErrors().get(0);
                location = errorInfo.getLocation();
                debugInfo = (String) errorInfo.get("debugInfo");
            }
        } else {
            code = ((GoogleJsonResponseException) exception).getStatusCode();
        }
    }
    this.retryable = MoreObjects.firstNonNull(retryable, isRetryable(idempotent, exception));
    this.code = code;
    this.reason = reason;
    this.idempotent = idempotent;
    this.location = location;
    this.debugInfo = debugInfo;
}

From source file:com.google.cloud.BaseServiceException.java

License:Open Source License

public BaseServiceException(GoogleJsonError googleJsonError, boolean idempotent) {
    super(googleJsonError.getMessage());
    Error error = new Error(googleJsonError.getCode(), reason(googleJsonError));
    this.code = error.code;
    this.reason = error.reason;
    this.retryable = isRetryable(idempotent, error);
    if (this.reason != null) {
        GoogleJsonError.ErrorInfo errorInfo = googleJsonError.getErrors().get(0);
        this.location = errorInfo.getLocation();
        this.debugInfo = (String) errorInfo.get("debugInfo");
    } else {//from  www . j  a va  2 s .  c o  m
        this.location = null;
        this.debugInfo = null;
    }
    this.idempotent = idempotent;
}

From source file:com.google.cloud.BaseServiceException.java

License:Open Source License

private static String reason(GoogleJsonError error) {
    if (error.getErrors() != null && !error.getErrors().isEmpty()) {
        return error.getErrors().get(0).getReason();
    }/*from  ww  w .j  av a 2s  .c o m*/
    return null;
}

From source file:com.google.cloud.hadoop.util.ApiErrorExtractor.java

License:Open Source License

/**
 * Get the first ErrorInfo from a GoogleJsonError, or null if
 * there is not one.//  ww w . j a v a 2  s  .com
 */
protected ErrorInfo getErrorInfo(GoogleJsonError details) {
    if (details == null) {
        return null;
    }
    List<ErrorInfo> errors = details.getErrors();
    if (errors.isEmpty()) {
        return null;
    } else {
        return errors.get(0);
    }
}

From source file:com.google.cloud.http.BaseHttpServiceException.java

License:Apache License

private static ExceptionData makeExceptionData(IOException exception, boolean idempotent,
        Set<BaseServiceException.Error> retryableErrors) {
    int code = UNKNOWN_CODE;
    String reason = null;/*from  w w  w  .  j a va 2  s  .c o  m*/
    String location = null;
    String debugInfo = null;
    Boolean retryable = null;
    if (exception instanceof HttpResponseException) {
        if (exception instanceof GoogleJsonResponseException) {
            GoogleJsonError jsonError = ((GoogleJsonResponseException) exception).getDetails();
            if (jsonError != null) {
                BaseServiceException.Error error = new BaseServiceException.Error(jsonError.getCode(),
                        reason(jsonError));
                code = error.getCode();
                reason = error.getReason();
                retryable = error.isRetryable(idempotent, retryableErrors);
                if (reason != null) {
                    GoogleJsonError.ErrorInfo errorInfo = jsonError.getErrors().get(0);
                    location = errorInfo.getLocation();
                    debugInfo = (String) errorInfo.get("debugInfo");
                }
            } else {
                code = ((GoogleJsonResponseException) exception).getStatusCode();
                retryable = BaseServiceException.isRetryable(code, null, idempotent, retryableErrors);
            }
        } else {
            // In cases where an exception is an instance of HttpResponseException but not
            // an instance of GoogleJsonResponseException, check the status code to determine whether it's retryable
            code = ((HttpResponseException) exception).getStatusCode();
            retryable = BaseServiceException.isRetryable(code, null, idempotent, retryableErrors);
        }
    }
    return ExceptionData.newBuilder().setMessage(message(exception)).setCause(exception)
            .setRetryable(MoreObjects.firstNonNull(retryable,
                    BaseServiceException.isRetryable(idempotent, exception)))
            .setCode(code).setReason(reason).setLocation(location).setDebugInfo(debugInfo).build();
}

From source file:com.google.cloud.http.BaseHttpServiceException.java

License:Apache License

private static ExceptionData makeExceptionData(GoogleJsonError googleJsonError, boolean idempotent,
        Set<BaseServiceException.Error> retryableErrors) {
    int code = googleJsonError.getCode();
    String reason = reason(googleJsonError);

    ExceptionData.Builder exceptionData = ExceptionData.newBuilder();
    exceptionData.setMessage(googleJsonError.getMessage()).setCause(null)
            .setRetryable(BaseServiceException.isRetryable(code, reason, idempotent, retryableErrors))
            .setCode(code).setReason(reason);
    if (reason != null) {
        GoogleJsonError.ErrorInfo errorInfo = googleJsonError.getErrors().get(0);
        exceptionData.setLocation(errorInfo.getLocation());
        exceptionData.setDebugInfo((String) errorInfo.get("debugInfo"));
    } else {/*from  ww  w .ja va2s.  c  o  m*/
        exceptionData.setLocation(null);
        exceptionData.setDebugInfo(null);
    }
    return exceptionData.build();
}

From source file:com.google.gcloud.BaseServiceException.java

License:Open Source License

public BaseServiceException(IOException exception, boolean idempotent) {
    super(message(exception), exception);
    int code = UNKNOWN_CODE;
    String reason = null;/*from   w w  w. ja  va  2 s.  co m*/
    String location = null;
    String debugInfo = null;
    if (exception instanceof GoogleJsonResponseException) {
        GoogleJsonError jsonError = ((GoogleJsonResponseException) exception).getDetails();
        Error error = error(jsonError);
        code = error.code;
        reason = error.reason;
        if (reason != null) {
            GoogleJsonError.ErrorInfo errorInfo = jsonError.getErrors().get(0);
            location = errorInfo.getLocation();
            debugInfo = (String) errorInfo.get("debugInfo");
        }
    }
    this.code = code;
    this.retryable = idempotent && isRetryable(exception);
    this.reason = reason;
    this.idempotent = idempotent;
    this.location = location;
    this.debugInfo = debugInfo;
}

From source file:com.google.gcloud.BaseServiceException.java

License:Open Source License

protected static String reason(GoogleJsonError error) {
    if (error.getErrors() != null && !error.getErrors().isEmpty()) {
        return error.getErrors().get(0).getReason();
    }//  w ww .  j av a2s  .  c  om
    return null;
}

From source file:de.jlo.talendcomp.google.analytics.realtime.Util.java

License:Apache License

public static boolean canBeIgnored(Exception e) {
    boolean ignore = false;
    if (e instanceof GoogleJsonResponseException) {
        GoogleJsonResponseException gre = (GoogleJsonResponseException) e;
        GoogleJsonError gje = gre.getDetails();
        if (gje != null) {
            List<ErrorInfo> errors = gje.getErrors();
            if (errors != null && errors.isEmpty() == false) {
                ErrorInfo ei = errors.get(0);
                for (IgnorableError error : listIgnorableErrors) {
                    if (error.code == gre.getStatusCode()) {
                        if (error.reason == null || error.reason.equals(ei.getReason())) {
                            ignore = true;
                            break;
                        }/*from   w w w  .  ja v  a  2s.  c  o m*/
                    }
                }
            }
        }
    }
    return ignore;
}