Skip to content

Commit c1bddc1

Browse files
authored
ObjectWriteResponse: return checksums if any (#1609)
1 parent c71ccf2 commit c1bddc1

File tree

4 files changed

+98
-2
lines changed

4 files changed

+98
-2
lines changed

api/src/main/java/io/minio/MinioAsyncClient.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,8 @@ public CompletableFuture<ObjectWriteResponse> copyObject(CopyObjectArgs args)
532532
args.region(),
533533
args.object(),
534534
result.etag(),
535-
response.header("x-amz-version-id"));
535+
response.header("x-amz-version-id"),
536+
result);
536537
} catch (XmlParserException e) {
537538
throw new CompletionException(e);
538539
} finally {

api/src/main/java/io/minio/ObjectWriteResponse.java

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,68 @@
1616

1717
package io.minio;
1818

19+
import io.minio.messages.CompleteMultipartUploadOutput;
20+
import io.minio.messages.CopyObjectResult;
1921
import okhttp3.Headers;
2022

2123
/** Response class of any APIs doing object creation. */
2224
public class ObjectWriteResponse extends GenericResponse {
2325
private String etag;
2426
private String versionId;
27+
private String checksumCRC32;
28+
private String checksumCRC32C;
29+
private String checksumSHA1;
30+
private String checksumSHA256;
2531

2632
public ObjectWriteResponse(
2733
Headers headers, String bucket, String region, String object, String etag, String versionId) {
2834
super(headers, bucket, region, object);
2935
this.etag = etag;
3036
this.versionId = versionId;
37+
if (headers != null) {
38+
this.checksumCRC32 = headers.get("x-amz-checksum-crc32");
39+
this.checksumCRC32C = headers.get("x-amz-checksum-crc32c");
40+
this.checksumSHA1 = headers.get("x-amz-checksum-sha1");
41+
this.checksumSHA256 = headers.get("x-amz-checksum-sha256");
42+
}
43+
}
44+
45+
public ObjectWriteResponse(
46+
Headers headers,
47+
String bucket,
48+
String region,
49+
String object,
50+
String etag,
51+
String versionId,
52+
CopyObjectResult result) {
53+
super(headers, bucket, region, object);
54+
this.etag = etag;
55+
this.versionId = versionId;
56+
if (result != null) {
57+
this.checksumCRC32 = result.checksumCRC32();
58+
this.checksumCRC32C = result.checksumCRC32C();
59+
this.checksumSHA1 = result.checksumSHA1();
60+
this.checksumSHA256 = result.checksumSHA256();
61+
}
62+
}
63+
64+
public ObjectWriteResponse(
65+
Headers headers,
66+
String bucket,
67+
String region,
68+
String object,
69+
String etag,
70+
String versionId,
71+
CompleteMultipartUploadOutput result) {
72+
super(headers, bucket, region, object);
73+
this.etag = etag;
74+
this.versionId = versionId;
75+
if (result != null) {
76+
this.checksumCRC32 = result.checksumCRC32();
77+
this.checksumCRC32C = result.checksumCRC32C();
78+
this.checksumSHA1 = result.checksumSHA1();
79+
this.checksumSHA256 = result.checksumSHA256();
80+
}
3181
}
3282

3383
public String etag() {
@@ -37,4 +87,20 @@ public String etag() {
3787
public String versionId() {
3888
return versionId;
3989
}
90+
91+
public String checksumCRC32() {
92+
return checksumCRC32;
93+
}
94+
95+
public String checksumCRC32C() {
96+
return checksumCRC32C;
97+
}
98+
99+
public String checksumSHA1() {
100+
return checksumSHA1;
101+
}
102+
103+
public String checksumSHA256() {
104+
return checksumSHA256;
105+
}
40106
}

api/src/main/java/io/minio/S3Base.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2015,7 +2015,8 @@ public CompletableFuture<ObjectWriteResponse> completeMultipartUploadAsync(
20152015
result.location(),
20162016
result.object(),
20172017
result.etag(),
2018-
response.header("x-amz-version-id"));
2018+
response.header("x-amz-version-id"),
2019+
result);
20192020
} catch (XmlParserException e) {
20202021
// As this CompleteMultipartUpload REST call succeeded, just log it.
20212022
Logger.getLogger(S3Base.class.getName())

api/src/main/java/io/minio/messages/CopyObjectResult.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,18 @@ public class CopyObjectResult {
3535
@Element(name = "LastModified")
3636
private ResponseDate lastModified;
3737

38+
@Element(name = "ChecksumCRC32", required = false)
39+
private String checksumCRC32;
40+
41+
@Element(name = "ChecksumCRC32C", required = false)
42+
private String checksumCRC32C;
43+
44+
@Element(name = "ChecksumSHA1", required = false)
45+
private String checksumSHA1;
46+
47+
@Element(name = "ChecksumSHA256", required = false)
48+
private String checksumSHA256;
49+
3850
public CopyObjectResult() {}
3951

4052
/** Returns ETag of the object. */
@@ -46,4 +58,20 @@ public String etag() {
4658
public ZonedDateTime lastModified() {
4759
return lastModified.zonedDateTime();
4860
}
61+
62+
public String checksumCRC32() {
63+
return checksumCRC32;
64+
}
65+
66+
public String checksumCRC32C() {
67+
return checksumCRC32C;
68+
}
69+
70+
public String checksumSHA1() {
71+
return checksumSHA1;
72+
}
73+
74+
public String checksumSHA256() {
75+
return checksumSHA256;
76+
}
4977
}

0 commit comments

Comments
 (0)