Skip to content

Commit

Permalink
resolving comments
Browse files Browse the repository at this point in the history
  • Loading branch information
sinhaashish committed Jun 22, 2020
1 parent 21d5df8 commit e22aef8
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 52 deletions.
5 changes: 5 additions & 0 deletions api/src/main/java/io/minio/ComposeSource.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.google.common.collect.Multimap;
import com.google.common.collect.Multimaps;
import java.time.ZonedDateTime;
import okhttp3.HttpUrl;

/** Source information to compose object. */
public class ComposeSource extends ObjectVersionArgs {
Expand Down Expand Up @@ -71,6 +72,10 @@ public ServerSideEncryptionCustomerKey ssec() {
return ssec;
}

public void validateSse(HttpUrl url) {
checkSse(ssec, url);
}

public static Builder builder() {
return new Builder();
}
Expand Down
64 changes: 21 additions & 43 deletions api/src/main/java/io/minio/MinioClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -972,17 +972,6 @@ private void checkReadRequestSse(ServerSideEncryption sse) throws IllegalArgumen
}
}

private void checkWriteRequestSse(ServerSideEncryption sse) throws IllegalArgumentException {
if (sse == null) {
return;
}

if (sse.type().requiresTls() && !this.baseUrl.isHttps()) {
throw new IllegalArgumentException(
sse.type().name() + " operations must be performed over a secure connection.");
}
}

private Map<String, String> normalizeHeaders(Map<String, String> headerMap) {
Map<String, String> normHeaderMap = new HashMap<String, String>();
for (Map.Entry<String, String> entry : headerMap.entrySet()) {
Expand Down Expand Up @@ -2640,16 +2629,14 @@ public ObjectWriteResponse composeObject(ComposeObjectArgs args)
InvalidResponseException, IOException, NoSuchAlgorithmException, ServerException,
XmlParserException {

checkWriteRequestSse(args.sse());
args.validateSse(this.baseUrl);

long objectSize = 0;
int partsCount = 0;
List<ComposeSource> sources = args.sources();
for (int i = 0; i < sources.size(); i++) {
ComposeSource src = sources.get(i);

checkReadRequestSse(src.ssec());

src.validateSse(this.baseUrl);
ObjectStat stat =
statObject(
StatObjectArgs.builder()
Expand All @@ -2661,7 +2648,7 @@ public ObjectWriteResponse composeObject(ComposeObjectArgs args)

src.buildHeaders(stat.length(), stat.etag());

if (i != 0 && src.extraHeaders().containsKey("x-amz-meta-x-amz-key")) {
if (i != 0 && src.headers().containsKey("x-amz-meta-x-amz-key")) {
throw new IllegalArgumentException(
"Client side encryption is not supported for more than one source");
}
Expand Down Expand Up @@ -2716,7 +2703,6 @@ public ObjectWriteResponse composeObject(ComposeObjectArgs args)
+ ", last part size is less than "
+ ObjectWriteArgs.MIN_MULTIPART_SIZE);
}

partsCount += (int) count;
} else {
partsCount++;
Expand All @@ -2729,35 +2715,28 @@ public ObjectWriteResponse composeObject(ComposeObjectArgs args)
}
}

if (partsCount == 1) {
if (args.sources().size() == 1) {
ComposeSource src = sources.get(0);
Multimap<String, String> headers = HashMultimap.create();
headers.putAll(args.extraHeaders());
headers.putAll(args.headers);
if ((src.offset() != null) && (src.length() == null)) {
headers.put("x-amz-copy-source-range", "bytes=" + src.offset() + "-");
}

if ((src.offset() != null) && (src.length() != null)) {
headers.put(
"x-amz-copy-source-range",
"bytes=" + src.offset() + "-" + (src.offset() + src.length() - 1));
if (src.offset() == null && src.length() == null) {
return copyObject(
CopyObjectArgs.builder()
.bucket(args.bucket())
.object(args.object())
.headers(args.extraHeaders())
.sse(args.sse())
.srcBucket(src.bucket())
.srcObject(src.object())
.srcVersionId(src.versionId())
.srcSsec(src.ssec())
.srcMatchETag(src.matchETag())
.srcNotMatchETag(src.notMatchETag())
.srcModifiedSince(src.modifiedSince())
.srcUnmodifiedSince(src.unmodifiedSince())
.build());
}
return copyObject(
CopyObjectArgs.builder()
.bucket(args.bucket())
.object(args.object())
.headers(args.extraHeaders)
.sse(args.sse())
.srcBucket(src.bucket())
.srcObject(src.object())
.srcVersionId(src.versionId())
.srcSsec(src.ssec())
.srcMatchETag(src.matchETag())
.srcNotMatchETag(src.notMatchETag())
.srcModifiedSince(src.modifiedSince())
.srcUnmodifiedSince(src.unmodifiedSince())
.build());
}

Multimap<String, String> sseHeaders = HashMultimap.create();
Expand All @@ -2766,7 +2745,6 @@ public ObjectWriteResponse composeObject(ComposeObjectArgs args)
sseHeaders.putAll(Multimaps.forMap(args.sse().headers()));
headerMap.putAll(args.extraHeaders());
headerMap.putAll(args.headers);
headerMap.putAll(sseHeaders);
}

String uploadId = createMultipartUpload(args.bucket(), null, args.object(), headerMap, null);
Expand Down Expand Up @@ -8244,7 +8222,7 @@ protected String uploadPart(
* @throws NoSuchAlgorithmException thrown to indicate missing of MD5 or SHA-256 digest library.
* @throws XmlParserException thrown to indicate XML parsing error.
*/
private String uploadPartCopy(
protected String uploadPartCopy(
String bucketName,
String objectName,
String uploadId,
Expand Down
18 changes: 9 additions & 9 deletions docs/API.md
Original file line number Diff line number Diff line change
Expand Up @@ -1001,9 +1001,9 @@ Creates an object by combining data from different source objects using server-s
|:---------------|:-------------------------|:--------------|
| ``args`` | _[ComposeObjectArgs]_ | Arguments. |

| Returns |
|:----------------------------------------------------------------------------|
| _[ObjectWriteResponse]_ - Contains information of created object. |
| Returns |
|:-----------------------------------------------------------------|
| _[ObjectWriteResponse]_ - Contains information of created object.|

__Example__
```java
Expand Down Expand Up @@ -1056,9 +1056,9 @@ __Parameters__
|:----------|:-------------------|:------------|
| ``args`` | _[CopyObjectArgs]_ | Arguments. |

| Returns |
|:----------------------------------------------------------------------------|
| _[ObjectWriteResponse]_ - Contains information of created object. |
| Returns |
|:-----------------------------------------------------------------|
| _[ObjectWriteResponse]_ - Contains information of created object.|

__Example__

Expand Down Expand Up @@ -1489,9 +1489,9 @@ __Parameters__
|:----------|:------------------|:------------|
| ``args`` | _[PutObjectArgs]_ | Arguments. |

| Returns |
|:----------------------------------------------------------------------------|
| _[ObjectWriteResponse]_ - Contains information of created object. |
| Returns |
|:-----------------------------------------------------------------|
| _[ObjectWriteResponse]_ - Contains information of created object.|

__Example__
```java
Expand Down

0 comments on commit e22aef8

Please sign in to comment.