Skip to content

Commit d5b9267

Browse files
authored
HDDS-14147. Use AclListBuilder in OmDirectoryInfo and OmKeyArgs (apache#9494)
1 parent 9ed1c82 commit d5b9267

File tree

2 files changed

+61
-52
lines changed

2 files changed

+61
-52
lines changed

hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmDirectoryInfo.java

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
package org.apache.hadoop.ozone.om.helpers;
1919

20-
import java.util.LinkedList;
20+
import com.google.common.collect.ImmutableList;
2121
import java.util.List;
2222
import java.util.Map;
2323
import java.util.Objects;
@@ -48,13 +48,13 @@ public class OmDirectoryInfo extends WithParentObjectId
4848
private final long creationTime;
4949
private final long modificationTime;
5050

51-
private final List<OzoneAcl> acls;
51+
private final ImmutableList<OzoneAcl> acls;
5252

5353
public OmDirectoryInfo(Builder builder) {
5454
super(builder);
5555
this.name = builder.name;
5656
this.owner = builder.owner;
57-
this.acls = builder.acls;
57+
this.acls = builder.acls.build();
5858
this.creationTime = builder.creationTime;
5959
this.modificationTime = builder.modificationTime;
6060
}
@@ -72,6 +72,10 @@ public static OmDirectoryInfo.Builder newBuilder() {
7272
return new OmDirectoryInfo.Builder();
7373
}
7474

75+
public Builder toBuilder() {
76+
return new Builder(this);
77+
}
78+
7579
/**
7680
* Builder for Directory Info.
7781
*/
@@ -82,11 +86,23 @@ public static class Builder extends WithParentObjectId.Builder<OmDirectoryInfo>
8286
private long creationTime;
8387
private long modificationTime;
8488

85-
private final List<OzoneAcl> acls;
89+
private final AclListBuilder acls;
8690

8791
public Builder() {
88-
//Default values
89-
this.acls = new LinkedList<>();
92+
this(AclListBuilder.empty());
93+
}
94+
95+
private Builder(AclListBuilder acls) {
96+
this.acls = acls;
97+
}
98+
99+
public Builder(OmDirectoryInfo obj) {
100+
super(obj);
101+
this.name = obj.name;
102+
this.owner = obj.owner;
103+
this.creationTime = obj.creationTime;
104+
this.modificationTime = obj.modificationTime;
105+
this.acls = AclListBuilder.of(obj.acls);
90106
}
91107

92108
@Override
@@ -128,9 +144,7 @@ public Builder setModificationTime(long newModificationTime) {
128144
}
129145

130146
public Builder setAcls(List<OzoneAcl> listOfAcls) {
131-
if (listOfAcls != null) {
132-
this.acls.addAll(listOfAcls);
133-
}
147+
this.acls.addAll(listOfAcls);
134148
return this;
135149
}
136150

@@ -272,20 +286,6 @@ public int hashCode() {
272286
*/
273287
@Override
274288
public OmDirectoryInfo copyObject() {
275-
OmDirectoryInfo.Builder builder = new Builder()
276-
.setName(name)
277-
.setOwner(owner)
278-
.setCreationTime(creationTime)
279-
.setModificationTime(modificationTime)
280-
.setAcls(acls)
281-
.setParentObjectID(getParentObjectID())
282-
.setObjectID(getObjectID())
283-
.setUpdateID(getUpdateID());
284-
285-
if (getMetadata() != null) {
286-
builder.addAllMetadata(getMetadata());
287-
}
288-
289-
return builder.build();
289+
return toBuilder().build();
290290
}
291291
}

hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmKeyArgs.java

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package org.apache.hadoop.ozone.om.helpers;
1919

2020
import com.google.common.annotations.VisibleForTesting;
21+
import com.google.common.collect.ImmutableList;
2122
import jakarta.annotation.Nonnull;
2223
import java.util.ArrayList;
2324
import java.util.HashMap;
@@ -48,7 +49,7 @@ public final class OmKeyArgs implements Auditable {
4849
private final int multipartUploadPartNumber;
4950
private final Map<String, String> metadata;
5051
private final boolean sortDatanodesInPipeline;
51-
private final List<OzoneAcl> acls;
52+
private final ImmutableList<OzoneAcl> acls;
5253
private final boolean latestVersionLocation;
5354
private final boolean recursive;
5455
private final boolean headOp;
@@ -73,7 +74,7 @@ private OmKeyArgs(Builder b) {
7374
this.multipartUploadID = b.multipartUploadID;
7475
this.multipartUploadPartNumber = b.multipartUploadPartNumber;
7576
this.metadata = b.metadata;
76-
this.acls = b.acls;
77+
this.acls = b.acls.build();
7778
this.sortDatanodesInPipeline = b.sortDatanodesInPipeline;
7879
this.latestVersionLocation = b.latestVersionLocation;
7980
this.recursive = b.recursive;
@@ -191,30 +192,7 @@ public void addLocationInfo(OmKeyLocationInfo locationInfo) {
191192
}
192193

193194
public OmKeyArgs.Builder toBuilder() {
194-
OmKeyArgs.Builder builder = new OmKeyArgs.Builder()
195-
.setVolumeName(volumeName)
196-
.setBucketName(bucketName)
197-
.setKeyName(keyName)
198-
.setOwnerName(ownerName)
199-
.setDataSize(dataSize)
200-
.setReplicationConfig(replicationConfig)
201-
.setLocationInfoList(locationInfoList)
202-
.setIsMultipartKey(isMultipartKey)
203-
.setMultipartUploadID(multipartUploadID)
204-
.setMultipartUploadPartNumber(multipartUploadPartNumber)
205-
.addAllMetadata(metadata)
206-
.setSortDatanodesInPipeline(sortDatanodesInPipeline)
207-
.setHeadOp(headOp)
208-
.setLatestVersionLocation(latestVersionLocation)
209-
.setAcls(acls)
210-
.setForceUpdateContainerCacheFromSCM(forceUpdateContainerCacheFromSCM)
211-
.addAllTags(tags);
212-
213-
if (expectedDataGeneration != null) {
214-
builder.setExpectedDataGeneration(expectedDataGeneration);
215-
}
216-
217-
return builder;
195+
return new Builder(this);
218196
}
219197

220198
@Nonnull
@@ -256,13 +234,44 @@ public static class Builder {
256234
private final Map<String, String> metadata = new HashMap<>();
257235
private boolean sortDatanodesInPipeline;
258236
private boolean latestVersionLocation;
259-
private List<OzoneAcl> acls;
237+
private final AclListBuilder acls;
260238
private boolean recursive;
261239
private boolean headOp;
262240
private boolean forceUpdateContainerCacheFromSCM;
263241
private final Map<String, String> tags = new HashMap<>();
264242
private Long expectedDataGeneration = null;
265243

244+
public Builder() {
245+
this(AclListBuilder.empty());
246+
}
247+
248+
private Builder(AclListBuilder acls) {
249+
this.acls = acls;
250+
}
251+
252+
public Builder(OmKeyArgs obj) {
253+
this.volumeName = obj.volumeName;
254+
this.bucketName = obj.bucketName;
255+
this.keyName = obj.keyName;
256+
this.ownerName = obj.ownerName;
257+
this.dataSize = obj.dataSize;
258+
this.replicationConfig = obj.replicationConfig;
259+
this.locationInfoList = obj.locationInfoList;
260+
this.isMultipartKey = obj.isMultipartKey;
261+
this.multipartUploadID = obj.multipartUploadID;
262+
this.multipartUploadPartNumber = obj.multipartUploadPartNumber;
263+
this.sortDatanodesInPipeline = obj.sortDatanodesInPipeline;
264+
this.latestVersionLocation = obj.latestVersionLocation;
265+
this.recursive = obj.recursive;
266+
this.headOp = obj.headOp;
267+
this.forceUpdateContainerCacheFromSCM =
268+
obj.forceUpdateContainerCacheFromSCM;
269+
this.expectedDataGeneration = obj.expectedDataGeneration;
270+
this.metadata.putAll(obj.metadata);
271+
this.tags.putAll(obj.tags);
272+
this.acls = AclListBuilder.of(obj.acls);
273+
}
274+
266275
public Builder setVolumeName(String volume) {
267276
this.volumeName = volume;
268277
return this;
@@ -299,7 +308,7 @@ public Builder setLocationInfoList(List<OmKeyLocationInfo> locationInfos) {
299308
}
300309

301310
public Builder setAcls(List<OzoneAcl> listOfAcls) {
302-
this.acls = listOfAcls;
311+
this.acls.addAll(listOfAcls);
303312
return this;
304313
}
305314

0 commit comments

Comments
 (0)