You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by ma...@apache.org on 2011/05/16 19:39:01 UTC

svn commit: r1103811 - in /zookeeper/trunk: CHANGES.txt src/java/main/org/apache/zookeeper/ZooKeeperMain.java src/java/test/org/apache/zookeeper/ZooKeeperTest.java

Author: mahadev
Date: Mon May 16 17:39:01 2011
New Revision: 1103811

URL: http://svn.apache.org/viewvc?rev=1103811&view=rev
Log:
ZOOKEEPER-1059. stat command isses on non-existing node causes NPE. (Bhallamudi Kamesh via mahadev)

Modified:
    zookeeper/trunk/CHANGES.txt
    zookeeper/trunk/src/java/main/org/apache/zookeeper/ZooKeeperMain.java
    zookeeper/trunk/src/java/test/org/apache/zookeeper/ZooKeeperTest.java

Modified: zookeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/trunk/CHANGES.txt?rev=1103811&r1=1103810&r2=1103811&view=diff
==============================================================================
--- zookeeper/trunk/CHANGES.txt (original)
+++ zookeeper/trunk/CHANGES.txt Mon May 16 17:39:01 2011
@@ -211,6 +211,8 @@ BUGFIXES: 
 
   ZOOKEEPER-1061. Zookeeper stop fails if start called twice. (Ted Dunning via mahadev)
 
+  ZOOKEEPER-1059. stat command isses on non-existing node causes NPE. (Bhallamudi Kamesh via mahadev)
+
 IMPROVEMENTS:
   ZOOKEEPER-724. Improve junit test integration - log harness information 
   (phunt via mahadev)

Modified: zookeeper/trunk/src/java/main/org/apache/zookeeper/ZooKeeperMain.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/main/org/apache/zookeeper/ZooKeeperMain.java?rev=1103811&r1=1103810&r2=1103811&view=diff
==============================================================================
--- zookeeper/trunk/src/java/main/org/apache/zookeeper/ZooKeeperMain.java (original)
+++ zookeeper/trunk/src/java/main/org/apache/zookeeper/ZooKeeperMain.java Mon May 16 17:39:01 2011
@@ -147,7 +147,7 @@ public class ZooKeeperMain {
      * A storage class for both command line options and shell commands.
      *
      */
-    static private class MyCommandOptions {
+    static class MyCommandOptions {
 
         private Map<String,String> options = new HashMap<String,String>();
         private List<String> cmdArgs = null;
@@ -724,6 +724,9 @@ public class ZooKeeperMain {
         } else if (cmd.equals("stat") && args.length >= 2) {
             path = args[1];
             stat = zk.exists(path, watch);
+            if (stat == null) {
+              throw new KeeperException.NoNodeException(path);	
+            }
             printStat(stat);
         } else if (cmd.equals("listquota") && args.length >= 2) {
             path = args[1];

Modified: zookeeper/trunk/src/java/test/org/apache/zookeeper/ZooKeeperTest.java
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/java/test/org/apache/zookeeper/ZooKeeperTest.java?rev=1103811&r1=1103810&r2=1103811&view=diff
==============================================================================
--- zookeeper/trunk/src/java/test/org/apache/zookeeper/ZooKeeperTest.java (original)
+++ zookeeper/trunk/src/java/test/org/apache/zookeeper/ZooKeeperTest.java Mon May 16 17:39:01 2011
@@ -122,4 +122,19 @@ public class ZooKeeperTest extends Clien
         }
         Assert.assertEquals(4, ((AtomicInteger) ctx).get());
     }
+    
+    @Test
+    public void testStatWhenPathDoesNotExist() throws IOException,
+    		InterruptedException {
+    	final ZooKeeper zk = createClient();
+    	ZooKeeperMain main = new ZooKeeperMain(zk);
+    	String cmdstring = "stat /invalidPath";
+    	main.cl.parseCommand(cmdstring);
+    	try {
+    		main.processZKCmd(main.cl);
+    		Assert.fail("As Node does not exist, command should fail by throwing No Node Exception.");
+    	} catch (KeeperException e) {
+    		Assert.assertEquals("KeeperErrorCode = NoNode for /invalidPath", e.getMessage());
+    	}
+    }
 }