diff --git a/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java b/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java index 829da07..6446a22 100644 --- a/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java +++ b/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java @@ -792,6 +792,14 @@ final class S3ProxyHandler extends AbstractHandler { return; } + // TODO: how to handle XML ACLs? + try (InputStream is = request.getInputStream()) { + int ch = is.read(); + if (ch != -1) { + throw new S3Exception(S3ErrorCode.NOT_IMPLEMENTED); + } + } + blobStore.setBlobAccess(containerName, blobName, access); } diff --git a/src/test/java/org/gaul/s3proxy/S3AwsSdkTest.java b/src/test/java/org/gaul/s3proxy/S3AwsSdkTest.java index 5417f29..26cc710 100644 --- a/src/test/java/org/gaul/s3proxy/S3AwsSdkTest.java +++ b/src/test/java/org/gaul/s3proxy/S3AwsSdkTest.java @@ -44,6 +44,7 @@ import com.amazonaws.SDKGlobalConfiguration; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3Client; +import com.amazonaws.services.s3.model.AccessControlList; import com.amazonaws.services.s3.model.AmazonS3Exception; import com.amazonaws.services.s3.model.CompleteMultipartUploadRequest; import com.amazonaws.services.s3.model.CompleteMultipartUploadResult; @@ -54,6 +55,7 @@ import com.amazonaws.services.s3.model.GetObjectRequest; import com.amazonaws.services.s3.model.InitiateMultipartUploadRequest; import com.amazonaws.services.s3.model.InitiateMultipartUploadResult; import com.amazonaws.services.s3.model.ObjectMetadata; +import com.amazonaws.services.s3.model.Owner; import com.amazonaws.services.s3.model.PartETag; import com.amazonaws.services.s3.model.S3Object; import com.amazonaws.services.s3.model.UploadPartRequest; @@ -294,6 +296,32 @@ public final class S3AwsSdkTest { } } + @Test + public void testUpdateBlobXmlAcls() throws Exception { + AmazonS3 client = new AmazonS3Client(awsCreds, + new ClientConfiguration().withSignerOverride("S3SignerType")); + client.setEndpoint(s3Endpoint.toString()); + + String blobName = "testUpdateBlobXmlAcls-blob"; + ObjectMetadata metadata = new ObjectMetadata(); + metadata.setContentLength(BYTE_SOURCE.size()); + client.putObject(containerName, blobName, BYTE_SOURCE.openStream(), + metadata); + + AccessControlList acl = new AccessControlList(); + Owner owner = new Owner(); + owner.setId("id"); + owner.setDisplayName("display-name"); + acl.setOwner(owner); + + try { + client.setObjectAcl(containerName, blobName, acl); + Fail.failBecauseExceptionWasNotThrown(AmazonS3Exception.class); + } catch (AmazonS3Exception e) { + assertThat(e.getErrorCode()).isEqualTo("NotImplemented"); + } + } + private static final class NullX509TrustManager implements X509TrustManager { @Override