List of usage examples for com.google.api.client.googleapis.json GoogleJsonError getErrors
public final List<ErrorInfo> getErrors()
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; }