From 1ae596e8705bff671d8efc37aafb791fd3054d04 Mon Sep 17 00:00:00 2001 From: Andrew Gaul Date: Sun, 31 Jan 2016 13:55:23 -0800 Subject: [PATCH] Support list multipart upload parts with Azure Map the Azure subparts back into S3 parts. --- .../java/org/gaul/s3proxy/S3ProxyHandler.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java b/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java index dce51f7..6975e86 100644 --- a/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java +++ b/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java @@ -1816,7 +1816,25 @@ final class S3ProxyHandler extends AbstractHandler { blobName, uploadId, createFakeBlobMetadata(blobStore), new PutOptions()); - List parts = blobStore.listMultipartUpload(mpu); + List parts; + if (getBlobStoreType(blobStore).equals("azureblob")) { + // map Azure subparts back into S3 parts + SortedMap map = new TreeMap<>(); + for (MultipartPart part : blobStore.listMultipartUpload(mpu)) { + int virtualPartNumber = part.partNumber() / 10_000; + Long size = map.get(virtualPartNumber); + map.put(virtualPartNumber, + (size == null ? 0L : (long) size) + part.partSize()); + } + parts = new ArrayList<>(); + for (Map.Entry entry : map.entrySet()) { + String eTag = ""; // TODO: bogus value + parts.add(MultipartPart.create(entry.getKey(), + entry.getValue(), eTag)); + } + } else { + parts = blobStore.listMultipartUpload(mpu); + } String encodingType = request.getParameter("encoding-type");