Author: cnauroth Date: Wed Feb 26 16:22:56 2014 New Revision: 1572142 URL: http://svn.apache.org/r1572142 Log: HDFS-5908. Change AclFeature to capture list of ACL entries in an ImmutableList. Contributed by Chris Nauroth.
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/AclFeature.java hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/AclStorage.java hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSAclBaseTest.java Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1572142&r1=1572141&r2=1572142&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Wed Feb 26 16:22:56 2014 @@ -336,6 +336,9 @@ Trunk (Unreleased) checks are disabled, user is superuser or user is member of supergroup. (cnauroth) + HDFS-5908. Change AclFeature to capture list of ACL entries in an + ImmutableList. (cnauroth) + Release 2.5.0 - UNRELEASED INCOMPATIBLE CHANGES Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/AclFeature.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/AclFeature.java?rev=1572142&r1=1572141&r2=1572142&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/AclFeature.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/AclFeature.java Wed Feb 26 16:22:56 2014 @@ -18,26 +18,26 @@ package org.apache.hadoop.hdfs.server.namenode; -import java.util.Collections; -import java.util.List; - import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.fs.permission.AclEntry; +import com.google.common.collect.ImmutableList; + /** * Feature that represents the ACLs of the inode. */ @InterfaceAudience.Private public class AclFeature implements INode.Feature { - public static final List<AclEntry> EMPTY_ENTRY_LIST = Collections.emptyList(); + public static final ImmutableList<AclEntry> EMPTY_ENTRY_LIST = + ImmutableList.of(); - private final List<AclEntry> entries; + private final ImmutableList<AclEntry> entries; - public AclFeature(List<AclEntry> entries) { + public AclFeature(ImmutableList<AclEntry> entries) { this.entries = entries; } - public List<AclEntry> getEntries() { + public ImmutableList<AclEntry> getEntries() { return entries; } } Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/AclStorage.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/AclStorage.java?rev=1572142&r1=1572141&r2=1572142&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/AclStorage.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/AclStorage.java Wed Feb 26 16:22:56 2014 @@ -328,7 +328,7 @@ final class AclStorage { // Add all default entries to the feature. featureEntries.addAll(defaultEntries); - return new AclFeature(Collections.unmodifiableList(featureEntries)); + return new AclFeature(ImmutableList.copyOf(featureEntries)); } /** Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSAclBaseTest.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSAclBaseTest.java?rev=1572142&r1=1572141&r2=1572142&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSAclBaseTest.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/FSAclBaseTest.java Wed Feb 26 16:22:56 2014 @@ -48,6 +48,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; +import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; /** @@ -1272,6 +1273,12 @@ public abstract class FSAclBaseTest { AclFeature aclFeature = inode.getAclFeature(); if (expectAclFeature) { assertNotNull(aclFeature); + // Intentionally capturing a reference to the entries, not using nested + // calls. This way, we get compile-time enforcement that the entries are + // stored in an ImmutableList. + ImmutableList<AclEntry> entries = aclFeature.getEntries(); + assertNotNull(entries); + assertFalse(entries.isEmpty()); } else { assertNull(aclFeature); }