Skip to content

Commit 08a32d5

Browse files
zhuxiaolong37huiguangjun
authored andcommitted
SimplifiedObjectMeta returns all response headers
1 parent f22123f commit 08a32d5

File tree

3 files changed

+46
-1
lines changed

3 files changed

+46
-1
lines changed

src/main/java/com/aliyun/oss/internal/ResponseParsers.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1802,6 +1802,7 @@ public static SimplifiedObjectMeta parseSimplifiedObjectMeta(Map<String, String>
18021802
} else if (key.equalsIgnoreCase(OSSHeaders.OSS_HEADER_VERSION_ID)) {
18031803
objectMeta.setVersionId(headers.get(key));
18041804
}
1805+
objectMeta.setHeader(key, headers.get(key));
18051806
}
18061807

18071808
return objectMeta;

src/main/java/com/aliyun/oss/model/SimplifiedObjectMeta.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
package com.aliyun.oss.model;
2121

2222
import java.util.Date;
23+
import java.util.Map;
24+
import java.util.TreeMap;
2325

2426
/**
2527
* The simplified metadata information of an OSS object. It includes ETag, size,
@@ -31,6 +33,7 @@ public class SimplifiedObjectMeta extends GenericResult {
3133
private long size;
3234
private Date lastModified;
3335
private String versionId;
36+
private Map<String, String> headers = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
3437

3538
public String getETag() {
3639
return eTag;
@@ -64,6 +67,21 @@ public void setVersionId(String versionId) {
6467
this.versionId = versionId;
6568
}
6669

70+
public Map<String, String> getHeaders() {
71+
return headers;
72+
}
73+
74+
public void setHeaders(Map<String, String> headers) {
75+
this.headers.clear();
76+
if (headers != null && !headers.isEmpty()) {
77+
this.headers.putAll(headers);
78+
}
79+
}
80+
81+
public void setHeader(String key, String value) {
82+
this.headers.put(key, value);
83+
}
84+
6785
@Override
6886
public String toString() {
6987
return "ObjectMeta [ETag=" + this.eTag + ", Size=" + this.size + ", LastModified=" + getLastModified() + "]";

src/test/java/com/aliyun/oss/integrationtests/ObjectRequestPaymentTest.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1161,7 +1161,7 @@ public void testAccessMonitor() throws Throwable {
11611161

11621162
prepareObject(key);
11631163

1164-
// Verify x-oss-last-access-time response header
1164+
// Verify access monitor
11651165
try {
11661166
Payer payer = Payer.Requester;
11671167
GenericRequest genericRequest = new GenericRequest(bucketName, key);
@@ -1194,4 +1194,30 @@ public void testAccessMonitor() throws Throwable {
11941194
ossClient.deleteObject(bucketName, key);
11951195
}
11961196
}
1197+
1198+
1199+
@Test
1200+
public void testAccessMonitorWithGetObjectMeta() {
1201+
String key = "test-get-object-last-access-time";
1202+
1203+
prepareObject(key);
1204+
1205+
// Verify x-oss-last-access-time response header
1206+
try {
1207+
Payer payer = Payer.Requester;
1208+
GenericRequest genericRequest = new GenericRequest(bucketName, key);
1209+
genericRequest.setRequestPayer(payer);
1210+
Object accessTime = ossPayerClient.getSimplifiedObjectMeta(genericRequest).getHeaders().get("x-oss-last-access-time");
1211+
Assert.assertNull(accessTime);
1212+
1213+
ossClient.putBucketAccessMonitor(bucketName, AccessMonitor.AccessMonitorStatus.Enabled.toString());
1214+
1215+
Object accessTime2 = ossPayerClient.getSimplifiedObjectMeta(genericRequest).getHeaders().get("x-oss-last-access-time");
1216+
Assert.assertNotNull(accessTime2);
1217+
} catch (OSSException e) {
1218+
System.out.println("Accessmonitor x-oss-last-access-time execution failed.");
1219+
} finally {
1220+
ossClient.deleteObject(bucketName, key);
1221+
}
1222+
}
11971223
}

0 commit comments

Comments
 (0)