Skip to content

Commit

Permalink
Handle sse
Browse files Browse the repository at this point in the history
  • Loading branch information
sinhaashish committed Jun 22, 2020
1 parent 40934b0 commit 65557a6
Showing 1 changed file with 29 additions and 18 deletions.
47 changes: 29 additions & 18 deletions api/src/main/java/io/minio/MinioClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -2636,7 +2636,6 @@ public ObjectWriteResponse composeObject(ComposeObjectArgs args)
List<ComposeSource> sources = args.sources();
for (int i = 0; i < sources.size(); i++) {
ComposeSource src = sources.get(i);
src.validateSse(this.baseUrl);
ObjectStat stat =
statObject(
StatObjectArgs.builder()
Expand Down Expand Up @@ -2719,7 +2718,7 @@ public ObjectWriteResponse composeObject(ComposeObjectArgs args)
ComposeSource src = sources.get(0);
Multimap<String, String> headers = HashMultimap.create();
headers.putAll(args.extraHeaders());
headers.putAll(args.headers);
headers.putAll(args.headers());
if (src.offset() == null && src.length() == null) {
return copyObject(
CopyObjectArgs.builder()
Expand All @@ -2739,15 +2738,21 @@ public ObjectWriteResponse composeObject(ComposeObjectArgs args)
}
}

Multimap<String, String> sseHeaders = HashMultimap.create();
Multimap<String, String> headerMap = HashMultimap.create();
if (args.sse() != null) {
sseHeaders.putAll(Multimaps.forMap(args.sse().headers()));
headerMap.putAll(args.extraHeaders());
headerMap.putAll(args.headers);
}
Multimap<String, String> headersCreateMultiPart = HashMultimap.create();
headersCreateMultiPart.putAll(args.extraHeaders());
headersCreateMultiPart.putAll(args.genHeaders());
String uploadId =
createMultipartUpload(
args.bucket(),
args.region(),
args.object(),
headersCreateMultiPart,
args.extraQueryParams());

String uploadId = createMultipartUpload(args.bucket(), null, args.object(), headerMap, null);
Multimap<String, String> ssecHeaders = HashMultimap.create();
if (args.sse() != null && args.sse().type() == ServerSideEncryption.Type.SSE_C) {
ssecHeaders.putAll(Multimaps.forMap(args.sse().headers()));
}

int partNumber = 0;
Part[] totalParts = new Part[partsCount];
Expand Down Expand Up @@ -2777,8 +2782,8 @@ public ObjectWriteResponse composeObject(ComposeObjectArgs args)
} else if (src.offset() != null) {
headers.put("x-amz-copy-source-range", "bytes=" + offset + "-" + (offset + size - 1));
}
if (sseHeaders != null) {
headers.putAll(sseHeaders);
if (ssecHeaders != null) {
headers.putAll(ssecHeaders);
}
String eTag = uploadPartCopy(args.bucket(), args.object(), uploadId, partNumber, headers);

Expand All @@ -2797,13 +2802,11 @@ public ObjectWriteResponse composeObject(ComposeObjectArgs args)

Multimap<String, String> headers = src.headers();
headers.put("x-amz-copy-source-range", "bytes=" + startBytes + "-" + endBytes);
if (sseHeaders != null) {
headers.putAll(sseHeaders);
if (ssecHeaders != null) {
headers.putAll(ssecHeaders);
}
String eTag = uploadPartCopy(args.bucket(), args.object(), uploadId, partNumber, headers);

totalParts[partNumber - 1] = new Part(partNumber, eTag);

offset = startBytes;
size -= (endBytes - startBytes);
}
Expand All @@ -2812,10 +2815,18 @@ public ObjectWriteResponse composeObject(ComposeObjectArgs args)
return completeMultipartUpload(
args.bucket(), getRegion(args.bucket()), args.object(), uploadId, totalParts, null, null);
} catch (RuntimeException e) {
abortMultipartUpload(args.bucket(), args.object(), uploadId);
if (!(args.sources().size() == 1
&& args.sources().get(0).offset() == null
&& args.sources().get(0).length() == null)) {
abortMultipartUpload(args.bucket(), args.object(), uploadId);
}
throw e;
} catch (Exception e) {
abortMultipartUpload(args.bucket(), args.object(), uploadId);
if (!(args.sources().size() == 1
&& args.sources().get(0).offset() == null
&& args.sources().get(0).length() == null)) {
abortMultipartUpload(args.bucket(), args.object(), uploadId);
}
throw e;
}
}
Expand Down

0 comments on commit 65557a6

Please sign in to comment.