From e22aef88283dca2335dfe183e5e4d76f7bf9e9e2 Mon Sep 17 00:00:00 2001 From: sinhaashish Date: Mon, 22 Jun 2020 07:11:35 +0530 Subject: [PATCH] resolving comments --- api/src/main/java/io/minio/ComposeSource.java | 5 ++ api/src/main/java/io/minio/MinioClient.java | 64 ++++++------------- docs/API.md | 18 +++--- 3 files changed, 35 insertions(+), 52 deletions(-) diff --git a/api/src/main/java/io/minio/ComposeSource.java b/api/src/main/java/io/minio/ComposeSource.java index 40a83bef9..4be0a2353 100644 --- a/api/src/main/java/io/minio/ComposeSource.java +++ b/api/src/main/java/io/minio/ComposeSource.java @@ -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 { @@ -71,6 +72,10 @@ public ServerSideEncryptionCustomerKey ssec() { return ssec; } + public void validateSse(HttpUrl url) { + checkSse(ssec, url); + } + public static Builder builder() { return new Builder(); } diff --git a/api/src/main/java/io/minio/MinioClient.java b/api/src/main/java/io/minio/MinioClient.java index 0a72ca580..8777b9681 100755 --- a/api/src/main/java/io/minio/MinioClient.java +++ b/api/src/main/java/io/minio/MinioClient.java @@ -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 normalizeHeaders(Map headerMap) { Map normHeaderMap = new HashMap(); for (Map.Entry entry : headerMap.entrySet()) { @@ -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 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() @@ -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"); } @@ -2716,7 +2703,6 @@ public ObjectWriteResponse composeObject(ComposeObjectArgs args) + ", last part size is less than " + ObjectWriteArgs.MIN_MULTIPART_SIZE); } - partsCount += (int) count; } else { partsCount++; @@ -2729,35 +2715,28 @@ public ObjectWriteResponse composeObject(ComposeObjectArgs args) } } - if (partsCount == 1) { + if (args.sources().size() == 1) { ComposeSource src = sources.get(0); Multimap 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 sseHeaders = HashMultimap.create(); @@ -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); @@ -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, diff --git a/docs/API.md b/docs/API.md index 8e5d9e3d6..2a2553c7e 100644 --- a/docs/API.md +++ b/docs/API.md @@ -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 @@ -1056,9 +1056,9 @@ __Parameters__ |:----------|:-------------------|:------------| | ``args`` | _[CopyObjectArgs]_ | Arguments. | -| Returns | -|:----------------------------------------------------------------------------| -| _[ObjectWriteResponse]_ - Contains information of created object. | +| Returns | +|:-----------------------------------------------------------------| +| _[ObjectWriteResponse]_ - Contains information of created object.| __Example__ @@ -1489,9 +1489,9 @@ __Parameters__ |:----------|:------------------|:------------| | ``args`` | _[PutObjectArgs]_ | Arguments. | -| Returns | -|:----------------------------------------------------------------------------| -| _[ObjectWriteResponse]_ - Contains information of created object. | +| Returns | +|:-----------------------------------------------------------------| +| _[ObjectWriteResponse]_ - Contains information of created object.| __Example__ ```java