You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@curator.apache.org by ca...@apache.org on 2014/08/04 02:04:49 UTC
git commit: CURATOR-132 - Modified the NamespaceFacade so that it
does not proxy getACL() and setACL() calls to the underlying client (which is
not namespace aware), and instead handles them itself.
Repository: curator
Updated Branches:
refs/heads/CURATOR-132 [created] 973513855
CURATOR-132 - Modified the NamespaceFacade so that it does not proxy
getACL() and setACL() calls to the underlying client (which is not
namespace aware), and instead handles them itself.
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/97351385
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/97351385
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/97351385
Branch: refs/heads/CURATOR-132
Commit: 97351385561f3038b2aba9a25a617a204a14e023
Parents: f5767c8
Author: Cam McKenzie <ca...@apache.org>
Authored: Mon Aug 4 10:04:22 2014 +1000
Committer: Cam McKenzie <ca...@apache.org>
Committed: Mon Aug 4 10:04:22 2014 +1000
----------------------------------------------------------------------
.../curator/framework/imps/NamespaceFacade.java | 12 -----
.../framework/imps/TestNamespaceFacade.java | 46 ++++++++++++++++++++
2 files changed, 46 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/curator/blob/97351385/curator-framework/src/main/java/org/apache/curator/framework/imps/NamespaceFacade.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/imps/NamespaceFacade.java b/curator-framework/src/main/java/org/apache/curator/framework/imps/NamespaceFacade.java
index 3584ff9..818fe5f 100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/NamespaceFacade.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/NamespaceFacade.java
@@ -71,18 +71,6 @@ class NamespaceFacade extends CuratorFrameworkImpl
}
@Override
- public GetACLBuilder getACL()
- {
- return client.getACL();
- }
-
- @Override
- public SetACLBuilder setACL()
- {
- return client.setACL();
- }
-
- @Override
public Listenable<ConnectionStateListener> getConnectionStateListenable()
{
return client.getConnectionStateListenable();
http://git-wip-us.apache.org/repos/asf/curator/blob/97351385/curator-framework/src/test/java/org/apache/curator/framework/imps/TestNamespaceFacade.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/test/java/org/apache/curator/framework/imps/TestNamespaceFacade.java b/curator-framework/src/test/java/org/apache/curator/framework/imps/TestNamespaceFacade.java
index f67c603..475e7e9 100644
--- a/curator-framework/src/test/java/org/apache/curator/framework/imps/TestNamespaceFacade.java
+++ b/curator-framework/src/test/java/org/apache/curator/framework/imps/TestNamespaceFacade.java
@@ -18,11 +18,18 @@
*/
package org.apache.curator.framework.imps;
+import java.util.Collections;
+import java.util.List;
+
import org.apache.curator.test.BaseClassForTests;
import org.apache.curator.utils.CloseableUtils;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
+import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.curator.retry.RetryOneTime;
+import org.apache.zookeeper.ZooDefs;
+import org.apache.zookeeper.KeeperException.NoAuthException;
+import org.apache.zookeeper.data.ACL;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -183,4 +190,43 @@ public class TestNamespaceFacade extends BaseClassForTests
client.close();
Assert.assertEquals(client.isStarted(), namespaced.isStarted());
}
+
+ /**
+ * Test that ACLs work on a NamespaceFacade. See CURATOR-132
+ * @throws Exception
+ */
+ @Test
+ public void testACL() throws Exception
+ {
+ CuratorFramework client = CuratorFrameworkFactory.newClient(server.getConnectString(), new RetryOneTime(1));
+ client.start();
+ client.getZookeeperClient().blockUntilConnectedOrTimedOut();
+
+ client.create().creatingParentsIfNeeded().forPath("/parent/child", "A string".getBytes());
+ CuratorFramework client2 = client.usingNamespace("parent");
+
+ Assert.assertNotNull(client2.getData().forPath("/child"));
+ client.setACL().withACL(Collections.singletonList(
+ new ACL(ZooDefs.Perms.WRITE, ZooDefs.Ids.ANYONE_ID_UNSAFE))).
+ forPath("/parent/child");
+ // This will attempt to setACL on /parent/child, Previously this failed because /child
+ // isn't present. Using "child" would case a failure because the path didn't start with
+ // a slash
+ try
+ {
+ List<ACL> acls = client2.getACL().forPath("/child");
+ Assert.assertNotNull(acls);
+ Assert.assertEquals(acls.size(), 1);
+ Assert.assertEquals(acls.get(0).getId(), ZooDefs.Ids.ANYONE_ID_UNSAFE);
+ Assert.assertEquals(acls.get(0).getPerms(), ZooDefs.Perms.WRITE);
+ client2.setACL().withACL(Collections.singletonList(
+ new ACL(ZooDefs.Perms.DELETE, ZooDefs.Ids.ANYONE_ID_UNSAFE))).
+ forPath("/child");
+ Assert.fail("Expected auth exception was not thrown");
+ }
+ catch(NoAuthException e)
+ {
+ //Expected
+ }
+ }
}