Allow Quiet element in DeleteMultipleObjects

Fixes #173.
pull/176/merge
Andrew Gaul 2016-11-20 16:26:53 -08:00
rodzic aeb4ba57de
commit 4336000409
3 zmienionych plików z 39 dodań i 4 usunięć

Wyświetl plik

@ -23,6 +23,9 @@ import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
// CHECKSTYLE:OFF
final class DeleteMultipleObjectsRequest {
@JacksonXmlProperty(localName = "Quiet")
boolean quiet;
@JacksonXmlProperty(localName = "Object")
@JacksonXmlElementWrapper(useWrapping = false)
Collection<S3Object> objects;

Wyświetl plik

@ -1286,13 +1286,17 @@ public class S3ProxyHandler {
xml.writeStartDocument();
xml.writeStartElement("DeleteResult");
xml.writeDefaultNamespace(AWS_XMLNS);
for (String blobName : blobNames) {
xml.writeStartElement("Deleted");
writeSimpleElement(xml, "Key", blobName);
if (!dmor.quiet) {
for (String blobName : blobNames) {
xml.writeStartElement("Deleted");
xml.writeEndElement();
writeSimpleElement(xml, "Key", blobName);
xml.writeEndElement();
}
}
// TODO: emit error stanza
xml.writeEndElement();
xml.flush();

Wyświetl plik

@ -51,6 +51,8 @@ import com.amazonaws.services.s3.model.CompleteMultipartUploadRequest;
import com.amazonaws.services.s3.model.CompleteMultipartUploadResult;
import com.amazonaws.services.s3.model.CopyPartRequest;
import com.amazonaws.services.s3.model.CopyPartResult;
import com.amazonaws.services.s3.model.DeleteObjectsRequest;
import com.amazonaws.services.s3.model.DeleteObjectsResult;
import com.amazonaws.services.s3.model.GetObjectRequest;
import com.amazonaws.services.s3.model.GroupGrantee;
import com.amazonaws.services.s3.model.InitiateMultipartUploadRequest;
@ -501,6 +503,32 @@ public final class S3AwsSdkTest {
.isEqualTo(expiresTime);
}
@Test
public void testDeleteMultipleObjects() throws Exception {
String blobName = "foo";
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(BYTE_SOURCE.size());
DeleteObjectsRequest request = new DeleteObjectsRequest(containerName)
.withKeys(blobName);
// without quiet
client.putObject(containerName, blobName, BYTE_SOURCE.openStream(),
metadata);
DeleteObjectsResult result = client.deleteObjects(request);
assertThat(result.getDeletedObjects()).hasSize(1);
assertThat(result.getDeletedObjects().iterator().next().getKey())
.isEqualTo(blobName);
// with quiet
client.putObject(containerName, blobName, BYTE_SOURCE.openStream(),
metadata);
result = client.deleteObjects(request.withQuiet(true));
assertThat(result.getDeletedObjects()).isEmpty();
}
@Test
public void testPartNumberMarker() throws Exception {
String blobName = "foo";