Skip to content

Commit 44f613a

Browse files
committed
Move Object Lock fields out of PUT/COPY requests and put into S3ObjectMetadata.
1 parent 51fefbb commit 44f613a

File tree

5 files changed

+34
-119
lines changed

5 files changed

+34
-119
lines changed

src/main/java/com/emc/object/s3/S3ObjectMetadata.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,15 @@ public Map<String, List<Object>> toHeaders() {
160160
RestUtil.putSingle(headers, RestUtil.HEADER_EXPIRES, RestUtil.headerFormat(httpExpires));
161161
RestUtil.putSingle(headers, RestUtil.EMC_RETENTION_PERIOD, retentionPeriod);
162162
RestUtil.putSingle(headers, RestUtil.EMC_RETENTION_POLICY, retentionPolicy);
163+
if (objectLockLegalHold != null)
164+
RestUtil.putSingle(headers, S3Constants.AMZ_OBJECT_LOCK_LEGAL_HOLD, objectLockLegalHold.getStatus());
165+
//Object Lock Mode and RetainUntilDate must both be supplied
166+
if (objectLockRetention != null && objectLockRetention.getMode() != null && objectLockRetention.getRetainUntilDate() != null) {
167+
RestUtil.putSingle(headers, S3Constants.AMZ_OBJECT_LOCK_MODE, objectLockRetention.getMode());
168+
RestUtil.putSingle(headers, S3Constants.AMZ_OBJECT_LOCK_RETAIN_UNTIL_DATE,
169+
RestUtil.iso8601MillisecondFormatter.format(objectLockRetention.getRetainUntilDate().toInstant()));
170+
}
171+
163172
headers.putAll(getUmdHeaders(userMetadata));
164173
return headers;
165174
}
@@ -315,10 +324,18 @@ public ObjectLockLegalHold getObjectLockLegalHold() {
315324
return objectLockLegalHold;
316325
}
317326

327+
public void setObjectLockLegalHold(ObjectLockLegalHold objectLockLegalHold) {
328+
this.objectLockLegalHold = objectLockLegalHold;
329+
}
330+
318331
public ObjectLockRetention getObjectLockRetention() {
319332
return objectLockRetention;
320333
}
321334

335+
public void setObjectLockRetention(ObjectLockRetention objectLockRetention) {
336+
this.objectLockRetention = objectLockRetention;
337+
}
338+
322339
public S3ObjectMetadata addUserMetadata(String name, String value) {
323340
userMetadata.put(name, value);
324341
return this;
@@ -377,4 +394,14 @@ public S3ObjectMetadata withRetentionPolicy(String retentionPolicy) {
377394
setRetentionPolicy(retentionPolicy);
378395
return this;
379396
}
397+
398+
public S3ObjectMetadata withObjectLockLegalHold(ObjectLockLegalHold objectLockLegalHold) {
399+
setObjectLockLegalHold(objectLockLegalHold);
400+
return this;
401+
}
402+
403+
public S3ObjectMetadata withObjectLockRetention(ObjectLockRetention objectLockRetention) {
404+
setObjectLockRetention(objectLockRetention);
405+
return this;
406+
}
380407
}

src/main/java/com/emc/object/s3/request/CopyObjectRequest.java

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@
3131
import com.emc.object.s3.S3ObjectMetadata;
3232
import com.emc.object.s3.bean.AccessControlList;
3333
import com.emc.object.s3.bean.CannedAcl;
34-
import com.emc.object.s3.bean.ObjectLockLegalHold;
35-
import com.emc.object.s3.bean.ObjectLockRetention;
3634
import com.emc.object.util.RestUtil;
3735

3836
import java.util.Date;
@@ -55,8 +53,6 @@ public class CopyObjectRequest extends S3ObjectRequest {
5553
private S3ObjectMetadata objectMetadata;
5654
private AccessControlList acl;
5755
private CannedAcl cannedAcl;
58-
private ObjectLockLegalHold objectLockLegalHold;
59-
private ObjectLockRetention objectLockRetention;
6056

6157
public CopyObjectRequest(String sourceBucketName, String sourceKey, String bucketName, String key) {
6258
super(Method.PUT, bucketName, key, null);
@@ -87,14 +83,6 @@ public Map<String, List<Object>> getHeaders() {
8783
}
8884
if (acl != null) headers.putAll(acl.toHeaders());
8985
if (cannedAcl != null) RestUtil.putSingle(headers, S3Constants.AMZ_ACL, cannedAcl.getHeaderValue());
90-
if (objectLockLegalHold != null) RestUtil.putSingle(headers, S3Constants.AMZ_OBJECT_LOCK_LEGAL_HOLD, objectLockLegalHold.getStatus());
91-
if (objectLockRetention != null) {
92-
RestUtil.putSingle(headers, S3Constants.AMZ_OBJECT_LOCK_MODE, objectLockRetention.getMode());
93-
if (objectLockRetention.getRetainUntilDate() != null) {
94-
RestUtil.putSingle(headers, S3Constants.AMZ_OBJECT_LOCK_RETAIN_UNTIL_DATE,
95-
RestUtil.iso8601MillisecondFormatter.format(objectLockRetention.getRetainUntilDate().toInstant()));
96-
}
97-
}
9886
return headers;
9987
}
10088

@@ -186,22 +174,6 @@ public void setCannedAcl(CannedAcl cannedAcl) {
186174
this.cannedAcl = cannedAcl;
187175
}
188176

189-
public ObjectLockLegalHold getObjectLockLegalHold() {
190-
return objectLockLegalHold;
191-
}
192-
193-
public void setObjectLockLegalHold(ObjectLockLegalHold objectLockLegalHold) {
194-
this.objectLockLegalHold = objectLockLegalHold;
195-
}
196-
197-
public ObjectLockRetention getObjectLockRetention() {
198-
return objectLockRetention;
199-
}
200-
201-
public void setObjectLockRetention(ObjectLockRetention objectLockRetention) {
202-
this.objectLockRetention = objectLockRetention;
203-
}
204-
205177
public CopyObjectRequest withSourceVersionId(String sourceVersionId) {
206178
setSourceVersionId(sourceVersionId);
207179
return this;
@@ -241,13 +213,4 @@ public CopyObjectRequest withCannedAcl(CannedAcl cannedAcl) {
241213
setCannedAcl(cannedAcl);
242214
return this;
243215
}
244-
245-
public CopyObjectRequest withObjectLockLegalHold(ObjectLockLegalHold objectLockLegalHold) {
246-
setObjectLockLegalHold(objectLockLegalHold);
247-
return this;
248-
}
249-
public CopyObjectRequest withObjectLockRetention(ObjectLockRetention objectLockRetention) {
250-
setObjectLockRetention(objectLockRetention);
251-
return this;
252-
}
253216
}

src/main/java/com/emc/object/s3/request/InitiateMultipartUploadRequest.java

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@
3131
import com.emc.object.s3.S3ObjectMetadata;
3232
import com.emc.object.s3.bean.AccessControlList;
3333
import com.emc.object.s3.bean.CannedAcl;
34-
import com.emc.object.s3.bean.ObjectLockLegalHold;
35-
import com.emc.object.s3.bean.ObjectLockRetention;
3634
import com.emc.object.util.RestUtil;
3735

3836
import java.util.List;
@@ -42,8 +40,6 @@ public class InitiateMultipartUploadRequest extends S3ObjectRequest {
4240
private S3ObjectMetadata objectMetadata;
4341
private AccessControlList acl;
4442
private CannedAcl cannedAcl;
45-
private ObjectLockLegalHold objectLockLegalHold;
46-
private ObjectLockRetention objectLockRetention;
4743

4844
public InitiateMultipartUploadRequest(String bucketName, String key) {
4945
super(Method.POST, bucketName, key, "uploads");
@@ -55,14 +51,6 @@ public Map<String, List<Object>> getHeaders() {
5551
if (objectMetadata != null) headers.putAll(objectMetadata.toHeaders());
5652
if (acl != null) headers.putAll(acl.toHeaders());
5753
if (cannedAcl != null) RestUtil.putSingle(headers, S3Constants.AMZ_ACL, cannedAcl.getHeaderValue());
58-
if (objectLockLegalHold != null) RestUtil.putSingle(headers, S3Constants.AMZ_OBJECT_LOCK_LEGAL_HOLD, objectLockLegalHold.getStatus());
59-
if (objectLockRetention != null) {
60-
RestUtil.putSingle(headers, S3Constants.AMZ_OBJECT_LOCK_MODE, objectLockRetention.getMode());
61-
if (objectLockRetention.getRetainUntilDate() != null) {
62-
RestUtil.putSingle(headers, S3Constants.AMZ_OBJECT_LOCK_RETAIN_UNTIL_DATE,
63-
RestUtil.iso8601MillisecondFormatter.format(objectLockRetention.getRetainUntilDate().toInstant()));
64-
}
65-
}
6654
return headers;
6755
}
6856

@@ -90,22 +78,6 @@ public void setCannedAcl(CannedAcl cannedAcl) {
9078
this.cannedAcl = cannedAcl;
9179
}
9280

93-
public ObjectLockLegalHold getObjectLockLegalHold() {
94-
return objectLockLegalHold;
95-
}
96-
97-
public void setObjectLockLegalHold(ObjectLockLegalHold objectLockLegalHold) {
98-
this.objectLockLegalHold = objectLockLegalHold;
99-
}
100-
101-
public ObjectLockRetention getObjectLockRetention() {
102-
return objectLockRetention;
103-
}
104-
105-
public void setObjectLockRetention(ObjectLockRetention objectLockRetention) {
106-
this.objectLockRetention = objectLockRetention;
107-
}
108-
10981
public InitiateMultipartUploadRequest withObjectMetadata(S3ObjectMetadata objectMetadata) {
11082
setObjectMetadata(objectMetadata);
11183
return this;
@@ -120,13 +92,4 @@ public InitiateMultipartUploadRequest withCannedAcl(CannedAcl cannedAcl) {
12092
setCannedAcl(cannedAcl);
12193
return this;
12294
}
123-
124-
public InitiateMultipartUploadRequest withObjectLockLegalHold(ObjectLockLegalHold objectLockLegalHold) {
125-
setObjectLockLegalHold(objectLockLegalHold);
126-
return this;
127-
}
128-
public InitiateMultipartUploadRequest withObjectLockRetention(ObjectLockRetention objectLockRetention) {
129-
setObjectLockRetention(objectLockRetention);
130-
return this;
131-
}
13295
}

src/main/java/com/emc/object/s3/request/PutObjectRequest.java

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@
3333
import com.emc.object.s3.S3ObjectMetadata;
3434
import com.emc.object.s3.bean.AccessControlList;
3535
import com.emc.object.s3.bean.CannedAcl;
36-
import com.emc.object.s3.bean.ObjectLockLegalHold;
37-
import com.emc.object.s3.bean.ObjectLockRetention;
3836
import com.emc.object.util.RestUtil;
3937

4038
import java.util.Date;
@@ -51,8 +49,6 @@ public class PutObjectRequest extends S3ObjectRequest implements EntityRequest {
5149
private String ifNoneMatch;
5250
private AccessControlList acl;
5351
private CannedAcl cannedAcl;
54-
private ObjectLockLegalHold objectLockLegalHold;
55-
private ObjectLockRetention objectLockRetention;
5652

5753
public PutObjectRequest(String bucketName, String key, Object object) {
5854
super(Method.PUT, bucketName, key, null);
@@ -66,8 +62,6 @@ public PutObjectRequest(PutObjectRequest other) {
6662
this.range = other.range;
6763
this.acl = other.acl;
6864
this.cannedAcl = other.cannedAcl;
69-
this.objectLockLegalHold = other.objectLockLegalHold;
70-
this.objectLockRetention = other.objectLockRetention;
7165
}
7266

7367
@Override
@@ -83,14 +77,6 @@ public Map<String, List<Object>> getHeaders() {
8377
if (ifNoneMatch != null) RestUtil.putSingle(headers, RestUtil.HEADER_IF_NONE_MATCH, ifNoneMatch);
8478
if (acl != null) headers.putAll(acl.toHeaders());
8579
if (cannedAcl != null) RestUtil.putSingle(headers, S3Constants.AMZ_ACL, cannedAcl.getHeaderValue());
86-
if (objectLockLegalHold != null) RestUtil.putSingle(headers, S3Constants.AMZ_OBJECT_LOCK_LEGAL_HOLD, objectLockLegalHold.getStatus());
87-
if (objectLockRetention != null) {
88-
RestUtil.putSingle(headers, S3Constants.AMZ_OBJECT_LOCK_MODE, objectLockRetention.getMode());
89-
if (objectLockRetention.getRetainUntilDate() != null) {
90-
RestUtil.putSingle(headers, S3Constants.AMZ_OBJECT_LOCK_RETAIN_UNTIL_DATE,
91-
RestUtil.iso8601MillisecondFormatter.format(objectLockRetention.getRetainUntilDate().toInstant()));
92-
}
93-
}
9480
return headers;
9581
}
9682

@@ -231,22 +217,6 @@ public PutObjectRequest withObjectMetadata(S3ObjectMetadata objectMetadata) {
231217
return this;
232218
}
233219

234-
public ObjectLockLegalHold getObjectLockLegalHold() {
235-
return objectLockLegalHold;
236-
}
237-
238-
public void setObjectLockLegalHold(ObjectLockLegalHold objectLockLegalHold) {
239-
this.objectLockLegalHold = objectLockLegalHold;
240-
}
241-
242-
public ObjectLockRetention getObjectLockRetention() {
243-
return objectLockRetention;
244-
}
245-
246-
public void setObjectLockRetention(ObjectLockRetention objectLockRetention) {
247-
this.objectLockRetention = objectLockRetention;
248-
}
249-
250220
public PutObjectRequest withRange(Range range) {
251221
setRange(range);
252222
return this;
@@ -305,13 +275,4 @@ public PutObjectRequest withRetentionPolicy(String retentionPolicy) {
305275
setRetentionPolicy(retentionPolicy);
306276
return this;
307277
}
308-
309-
public PutObjectRequest withObjectLockLegalHold(ObjectLockLegalHold objectLockLegalHold) {
310-
setObjectLockLegalHold(objectLockLegalHold);
311-
return this;
312-
}
313-
public PutObjectRequest withObjectLockRetention(ObjectLockRetention objectLockRetention) {
314-
setObjectLockRetention(objectLockRetention);
315-
return this;
316-
}
317278
}

src/test/java/com/emc/object/s3/S3JerseyClientTest.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ public void testDeleteObjectWithLegalHoldNotAllowed() throws Exception {
276276
client.enableObjectLock(bucketName);
277277
ObjectLockLegalHold objectLockLegalHold = new ObjectLockLegalHold().withStatus(ObjectLockLegalHold.Status.ON);
278278
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, "test Delete With LegalHold Not Allowed")
279-
.withObjectLockLegalHold(objectLockLegalHold);
279+
.withObjectMetadata(new S3ObjectMetadata().withObjectLockLegalHold(objectLockLegalHold));
280280
client.putObject(putObjectRequest);
281281
String versionId = client.listVersions(bucketName, key).getVersions().get(0).getVersionId();
282282

@@ -305,7 +305,7 @@ public void testPutObjectLegalHold() throws Exception {
305305
//Put Legal Hold on create
306306
ObjectLockLegalHold objectLockLegalHold = new ObjectLockLegalHold().withStatus(ObjectLockLegalHold.Status.ON);
307307
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, "test Put Object LegalHold")
308-
.withObjectLockLegalHold(objectLockLegalHold);
308+
.withObjectMetadata(new S3ObjectMetadata().withObjectLockLegalHold(objectLockLegalHold));
309309
client.putObject(putObjectRequest);
310310
String versionId = client.listVersions(bucketName, key).getVersions().get(0).getVersionId();
311311
GetObjectLegalHoldRequest getObjectLegalHoldRequest = new GetObjectLegalHoldRequest(bucketName, key).withVersionId(versionId);
@@ -334,7 +334,7 @@ public void testPutObjectRetention() throws Exception {
334334
.withRetainUntilDate(retentionDate);
335335
//Put Retention on Create
336336
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, "test Put Object Retention")
337-
.withObjectLockRetention(objectLockRetention);
337+
.withObjectMetadata(new S3ObjectMetadata().withObjectLockRetention(objectLockRetention));
338338
client.putObject(putObjectRequest);
339339
String versionId = client.listVersions(bucketName, key).getVersions().get(0).getVersionId();
340340
GetObjectRetentionRequest request = new GetObjectRetentionRequest(bucketName, key).withVersionId(versionId);
@@ -376,7 +376,7 @@ public void testDeleteObjectWithBypassGovernance() throws Exception {
376376
.withRetainUntilDate(retentionDate);
377377

378378
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, "test DeleteObjectWithBypassGovernance")
379-
.withObjectLockRetention(objectLockRetention);
379+
.withObjectMetadata(new S3ObjectMetadata().withObjectLockRetention(objectLockRetention));
380380
client.putObject(putObjectRequest);
381381
String versionId = client.listVersions(bucketName, key).getVersions().get(0).getVersionId();
382382

@@ -409,7 +409,7 @@ public void testCopyObjectWithLegalHoldON() throws Exception {
409409
client.enableObjectLock(bucketName);
410410
ObjectLockLegalHold objectLockLegalHold = new ObjectLockLegalHold().withStatus(ObjectLockLegalHold.Status.ON);
411411
CopyObjectRequest copyObjectRequest = new CopyObjectRequest(bucketName, key1, bucketName, key2)
412-
.withObjectLockLegalHold(objectLockLegalHold);
412+
.withObjectMetadata(new S3ObjectMetadata().withObjectLockLegalHold(objectLockLegalHold));
413413
client.copyObject(copyObjectRequest);
414414
Assert.assertEquals(content, client.readObject(bucketName, key2, String.class));
415415
String versionId = client.listVersions(bucketName, key2).getVersions().get(0).getVersionId();
@@ -437,7 +437,8 @@ public void testSingleMultipartUploadWithRetention() throws Exception {
437437
ObjectLockRetention objectLockRetention = new ObjectLockRetention().withMode(ObjectLockRetentionMode.GOVERNANCE).withRetainUntilDate(retentionDate);
438438

439439
client.enableObjectLock(bucketName);
440-
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, key).withObjectLockRetention(objectLockRetention);
440+
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, key)
441+
.withObjectMetadata(new S3ObjectMetadata().withObjectLockRetention(objectLockRetention));
441442
String uploadId = client.initiateMultipartUpload(request).getUploadId();
442443
MultipartPartETag mp1 = client.uploadPart(
443444
new UploadPartRequest(bucketName, key, uploadId, 1, is1).withContentLength((long) fiveMB));

0 commit comments

Comments
 (0)