Browse Source

HADOOP-4408. FsAction functions need not create new objects.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/core/trunk@705121 13f79535-47bb-0310-9956-ffa450edef68
Christopher Douglas 16 years ago
parent
commit
790a656b3f

+ 2 - 0
CHANGES.txt

@@ -54,6 +54,8 @@ Trunk (unreleased changes)
     HADOOP-4325. SocketInputStream.read() should return -1 in case EOF.
     (Raghu Angadi)
 
+    HADOOP-4408. FsAction functions need not create new objects. (cdouglas)
+
 Release 0.19.0 - Unreleased
 
   INCOMPATIBLE CHANGES

+ 17 - 18
src/core/org/apache/hadoop/fs/permission/FsAction.java

@@ -21,24 +21,23 @@ package org.apache.hadoop.fs.permission;
  * File system actions, e.g. read, write, etc.
  */
 public enum FsAction {
-  //POSIX style
-  NONE(0, "---"),
-  EXECUTE(1, "--x"),
-  WRITE(2, "-w-"),
-  WRITE_EXECUTE(3, "-wx"),
-  READ(4, "r--"),
-  READ_EXECUTE(5, "r-x"),
-  READ_WRITE(6, "rw-"),
-  ALL(7, "rwx");
+  // POSIX style
+  NONE("---"),
+  EXECUTE("--x"),
+  WRITE("-w-"),
+  WRITE_EXECUTE("-wx"),
+  READ("r--"),
+  READ_EXECUTE("r-x"),
+  READ_WRITE("rw-"),
+  ALL("rwx");
+
+  /** Retain reference to value array. */
+  private final static FsAction[] vals = values();
 
-  //constants
-  /** Octal representation */
-  public final int INDEX;
   /** Symbolic representation */
   public final String SYMBOL;
 
-  private FsAction(int v, String s) {
-    INDEX = v;
+  private FsAction(String s) {
     SYMBOL = s;
   }
 
@@ -48,21 +47,21 @@ public enum FsAction {
    */
   public boolean implies(FsAction that) {
     if (that != null) {
-      return (this.INDEX & that.INDEX) == that.INDEX;
+      return (ordinal() & that.ordinal()) == that.ordinal();
     }
     return false;
   }
 
   /** AND operation. */
   public FsAction and(FsAction that) {
-    return values()[this.INDEX & that.INDEX];
+    return vals[ordinal() & that.ordinal()];
   }
   /** OR operation. */
   public FsAction or(FsAction that) {
-    return values()[this.INDEX | that.INDEX];
+    return vals[ordinal() | that.ordinal()];
   }
   /** NOT operation. */
   public FsAction not() {
-    return values()[7 - INDEX];
+    return vals[7 - ordinal()];
   }
 }

+ 2 - 1
src/core/org/apache/hadoop/fs/permission/FsPermission.java

@@ -122,7 +122,8 @@ public class FsPermission implements Writable {
    * Encode the object to a short.
    */
   public short toShort() {
-    int s = (useraction.INDEX<<6) | (groupaction.INDEX<<3) | otheraction.INDEX;
+    int s = (useraction.ordinal() << 6) | (groupaction.ordinal() << 3) |
+             otheraction.ordinal();
     return (short)s;
   }