In DefaultStorageRpc (and also other services as DefaultBigQueryRpc) we have code handling the translation of IOException to service specific exceptions:
private static BigQueryException translate(IOException exception) {
BigQueryException translated;
if (exception instanceof GoogleJsonResponseException
&& ((GoogleJsonResponseException) exception).getDetails() != null) {
translated = translate(((GoogleJsonResponseException) exception).getDetails());
} else {
translated =
new BigQueryException(BigQueryException.UNKNOWN_CODE, exception.getMessage(), false);
}
translated.initCause(exception);
return translated;
}
private static BigQueryException translate(GoogleJsonError exception) {
boolean retryable = RETRYABLE_CODES.contains(exception.getCode());
return new BigQueryException(exception.getCode(), exception.getMessage(), retryable);
}
Part of this logic should be moved to BaseServiceException
In
DefaultStorageRpc(and also other services asDefaultBigQueryRpc) we have code handling the translation ofIOExceptionto service specific exceptions:Part of this logic should be moved to
BaseServiceException