Updated Branches:
  refs/heads/1.4.5-SNAPSHOT 6648056ca -> d059d0077
  refs/heads/1.5.1-SNAPSHOT 7f403df24 -> 8b5f26116
  refs/heads/1.6.0-SNAPSHOT d868e30d7 -> 48128c045
  refs/heads/master f63448c9c -> 7a4eb2b0c


ACCUMULO-1434 Added 'empty' node to CV parse tree


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/d059d007
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/d059d007
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/d059d007

Branch: refs/heads/1.4.5-SNAPSHOT
Commit: d059d007766920b58946a52e2c051ab19b8e8bda
Parents: 6648056
Author: Mike Drob <md...@mdrob.com>
Authored: Mon Nov 11 14:10:20 2013 -0500
Committer: Mike Drob <md...@mdrob.com>
Committed: Mon Nov 11 14:16:34 2013 -0500

----------------------------------------------------------------------
 .../accumulo/core/security/ColumnVisibility.java       | 13 +++++++++++--
 .../accumulo/core/security/ColumnVisibilityTest.java   |  7 +++++++
 2 files changed, 18 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/d059d007/src/core/src/main/java/org/apache/accumulo/core/security/ColumnVisibility.java
----------------------------------------------------------------------
diff --git 
a/src/core/src/main/java/org/apache/accumulo/core/security/ColumnVisibility.java
 
b/src/core/src/main/java/org/apache/accumulo/core/security/ColumnVisibility.java
index a7ac8e0..e628c23 100644
--- 
a/src/core/src/main/java/org/apache/accumulo/core/security/ColumnVisibility.java
+++ 
b/src/core/src/main/java/org/apache/accumulo/core/security/ColumnVisibility.java
@@ -46,8 +46,13 @@ public class ColumnVisibility {
   }
   
   public static enum NodeType {
-    TERM, OR, AND,
+    EMPTY, TERM, OR, AND,
   }
+
+  /**
+   * All empty nodes are equal and represent the same value.
+   */
+  private static final Node EMPTY_NODE = new Node(NodeType.EMPTY);
   
   public static class Node {
     public final static List<Node> EMPTY = Collections.emptyList();
@@ -104,6 +109,8 @@ public class ColumnVisibility {
       if (diff != 0)
         return diff;
       switch (a.type) {
+        case EMPTY:
+          return 0; // All empty nodes are the same
         case TERM:
           return WritableComparator.compareBytes(text, a.start, a.end - 
a.start, text, b.start, b.end - b.start);
         case OR:
@@ -255,6 +262,8 @@ public class ColumnVisibility {
     if (expression != null && expression.length > 0) {
       ColumnVisibilityParser p = new ColumnVisibilityParser();
       node = p.parse(expression);
+    } else {
+      node = EMPTY_NODE;
     }
     this.expression = expression;
   }
@@ -263,7 +272,7 @@ public class ColumnVisibility {
    * Empty visibility. Normally, elements with empty visibility can be seen by 
everyone. Though, one could change this behavior with filters.
    */
   public ColumnVisibility() {
-    expression = new byte[0];
+    this(new byte[] {});
   }
   
   /**

http://git-wip-us.apache.org/repos/asf/accumulo/blob/d059d007/src/core/src/test/java/org/apache/accumulo/core/security/ColumnVisibilityTest.java
----------------------------------------------------------------------
diff --git 
a/src/core/src/test/java/org/apache/accumulo/core/security/ColumnVisibilityTest.java
 
b/src/core/src/test/java/org/apache/accumulo/core/security/ColumnVisibilityTest.java
index df1863a..e698599 100644
--- 
a/src/core/src/test/java/org/apache/accumulo/core/security/ColumnVisibilityTest.java
+++ 
b/src/core/src/test/java/org/apache/accumulo/core/security/ColumnVisibilityTest.java
@@ -47,6 +47,13 @@ public class ColumnVisibilityTest {
   }
   
   @Test
+  public void testEmptyFlatten() {
+    // empty visibility is valid
+    new ColumnVisibility().flatten();
+    new ColumnVisibility("").flatten();
+  }
+
+  @Test
   public void testSimple() {
     shouldNotThrow("test", "(one)");
   }

Reply via email to