diff --git a/src/main/java/org/gaul/s3proxy/S3ErrorCode.java b/src/main/java/org/gaul/s3proxy/S3ErrorCode.java index 39a558a..bba6483 100644 --- a/src/main/java/org/gaul/s3proxy/S3ErrorCode.java +++ b/src/main/java/org/gaul/s3proxy/S3ErrorCode.java @@ -26,6 +26,10 @@ import com.google.common.base.Preconditions; * http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html */ enum S3ErrorCode { + BUCKET_ALREADY_EXISTS(HttpServletResponse.SC_FORBIDDEN, + "The requested bucket name is not available." + + " The bucket namespace is shared by all users of the system." + + " Please select a different name and try again."), BUCKET_ALREADY_OWNED_BY_YOU(HttpServletResponse.SC_CONFLICT, "Your previous request to create the named bucket" + " succeeded and you already own it."), diff --git a/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java b/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java index e535850..4df9fd5 100644 --- a/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java +++ b/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java @@ -68,6 +68,7 @@ import org.jclouds.blobstore.options.PutOptions; import org.jclouds.domain.Location; import org.jclouds.http.HttpResponseException; import org.jclouds.io.ContentMetadata; +import org.jclouds.rest.AuthorizationException; import org.jclouds.util.Strings2; import org.jclouds.util.Throwables2; import org.slf4j.Logger; @@ -318,9 +319,10 @@ final class S3ProxyHandler extends AbstractHandler { S3ErrorCode.BUCKET_ALREADY_OWNED_BY_YOU, Optional.of(" " + containerName + "\r\n")); - } catch (RuntimeException re) { - logger.error("Error creating container: {}", re.getMessage()); - response.setStatus(HttpServletResponse.SC_FORBIDDEN); + } catch (AuthorizationException ae) { + sendSimpleErrorResponse(response, + S3ErrorCode.BUCKET_ALREADY_EXISTS); + return; } }