use of org.jets3t.service.ServiceException in project cyberduck by iterate-ch.
the class S3ExceptionMappingServiceTest method testDNSFailure.
@Test
public void testDNSFailure() {
assertEquals("Custom.", new S3ExceptionMappingService().map("custom", new ServiceException("message", new UnknownHostException("h"))).getMessage());
assertEquals("H. DNS is the network service that translates a server name to its Internet address. This error is most often caused by having no connection to the Internet or a misconfigured network. It can also be caused by an unresponsive DNS server or a firewall preventing access to the network.", new S3ExceptionMappingService().map("custom", new ServiceException("message", new UnknownHostException("h"))).getDetail());
}
use of org.jets3t.service.ServiceException in project cyberduck by iterate-ch.
the class S3ExceptionMappingServiceTest method testBadRequest.
@Test
public void testBadRequest() {
final ServiceException f = new ServiceException("m", "<null/>");
f.setErrorMessage("m");
f.setResponseCode(400);
assertTrue(new S3ExceptionMappingService().map(f) instanceof InteroperabilityException);
}
use of org.jets3t.service.ServiceException in project hadoop by apache.
the class Jets3tNativeFileSystemStore method processException.
/**
* Handle any service exception by translating it into an IOException
* @param thrown exception
* @param original original exception -thrown if no other translation could
* be made
* @param key key sought from object store or "" for undefined
* @return an exception to throw. If isProcessingCause==true this may be null.
*/
private IOException processException(Throwable thrown, Throwable original, String key) {
IOException result;
if (thrown.getCause() != null) {
// recurse down
result = processException(thrown.getCause(), original, key);
} else if (thrown instanceof HttpException) {
// nested HttpException - examine error code and react
HttpException httpException = (HttpException) thrown;
String responseMessage = httpException.getResponseMessage();
int responseCode = httpException.getResponseCode();
String bucketName = "s3n://" + bucket.getName();
String text = String.format("%s : %03d : %s", bucketName, responseCode, responseMessage);
String filename = !key.isEmpty() ? (bucketName + "/" + key) : text;
IOException ioe;
switch(responseCode) {
case 404:
result = new FileNotFoundException(filename);
break;
case // invalid range
416:
result = new EOFException(FSExceptionMessages.CANNOT_SEEK_PAST_EOF + ": " + filename);
break;
case // forbidden
403:
result = new AccessControlException("Permission denied" + ": " + filename);
break;
default:
result = new IOException(text);
}
result.initCause(thrown);
} else if (thrown instanceof S3ServiceException) {
S3ServiceException se = (S3ServiceException) thrown;
LOG.debug("S3ServiceException: {}: {} : {}", se.getS3ErrorCode(), se.getS3ErrorMessage(), se, se);
if ("InvalidRange".equals(se.getS3ErrorCode())) {
result = new EOFException(FSExceptionMessages.CANNOT_SEEK_PAST_EOF);
} else {
result = new S3Exception(se);
}
} else if (thrown instanceof ServiceException) {
ServiceException se = (ServiceException) thrown;
LOG.debug("S3ServiceException: {}: {} : {}", se.getErrorCode(), se.toString(), se, se);
result = new S3Exception(se);
} else if (thrown instanceof IOException) {
result = (IOException) thrown;
} else {
// here there is no exception derived yet.
// this means no inner cause, and no translation made yet.
// convert the original to an IOException -rather than just the
// exception at the base of the tree
result = new S3Exception(original);
}
return result;
}
use of org.jets3t.service.ServiceException in project hadoop by apache.
the class Jets3tNativeFileSystemStore method retrieve.
/**
* @param key
* The key is the object name that is being retrieved from the S3 bucket
* @return
* This method returns null if the key is not found
* @throws IOException
*/
@Override
public InputStream retrieve(String key) throws IOException {
try {
LOG.debug("Getting key: {} from bucket: {}", key, bucket.getName());
S3Object object = s3Service.getObject(bucket.getName(), key);
return object.getDataInputStream();
} catch (ServiceException e) {
handleException(e, key);
// return null if key not found
return null;
}
}
use of org.jets3t.service.ServiceException in project hadoop by apache.
the class Jets3tNativeFileSystemStore method retrieve.
/**
* @param key
* The key is the object name that is being retrieved from the S3 bucket
* @return
* This method returns null if the key is not found
* @throws IOException
*/
@Override
public InputStream retrieve(String key, long byteRangeStart) throws IOException {
try {
LOG.debug("Getting key: {} from bucket: {} with byteRangeStart: {}", key, bucket.getName(), byteRangeStart);
S3Object object = s3Service.getObject(bucket, key, null, null, null, null, byteRangeStart, null);
return object.getDataInputStream();
} catch (ServiceException e) {
handleException(e, key);
return null;
}
}
Aggregations