KNOX-501: Avoid NPE , in case of passing invalid argument to KnoxCli.
Contributed by J.Andreina.


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

Branch: refs/heads/KNOX-481
Commit: 7d839171a7c2ecda217732718ae5aedf4d429fba
Parents: 2192932
Author: Kevin Minder <kevin.min...@hortonworks.com>
Authored: Thu Feb 12 10:40:26 2015 -0500
Committer: Kevin Minder <kevin.min...@hortonworks.com>
Committed: Thu Feb 12 10:40:26 2015 -0500

----------------------------------------------------------------------
 CHANGES                                                  |  1 +
 .../java/org/apache/hadoop/gateway/util/KnoxCLI.java     |  8 +++++---
 .../java/org/apache/hadoop/gateway/util/KnoxCLITest.java | 11 +++++++++++
 3 files changed, 17 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/knox/blob/7d839171/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 4d072b6..9f2677a 100644
--- a/CHANGES
+++ b/CHANGES
@@ -10,6 +10,7 @@ Release Notes - Apache Knox - Version 0.6.0
 
 ** Improvement
   * [KNOX-462] - Proper error message when root tag of topology file incorrect
+  * [KNOX-501] - Avoid NPE in case of passing invalid argument to KnoxCli.
 
 ------------------------------------------------------------------------------
 Release Notes - Apache Knox - Version 0.5.1

http://git-wip-us.apache.org/repos/asf/knox/blob/7d839171/gateway-server/src/main/java/org/apache/hadoop/gateway/util/KnoxCLI.java
----------------------------------------------------------------------
diff --git 
a/gateway-server/src/main/java/org/apache/hadoop/gateway/util/KnoxCLI.java 
b/gateway-server/src/main/java/org/apache/hadoop/gateway/util/KnoxCLI.java
index dd379aa..8366f2e 100644
--- a/gateway-server/src/main/java/org/apache/hadoop/gateway/util/KnoxCLI.java
+++ b/gateway-server/src/main/java/org/apache/hadoop/gateway/util/KnoxCLI.java
@@ -89,10 +89,12 @@ public class KnoxCLI extends Configured implements Tool {
       if (exitCode != 0) {
         return exitCode;
       }
-      if (command.validate()) {
-          initializeServices( command instanceof MasterCreateCommand );
-          command.execute();
+      if (command != null && command.validate()) {
+        initializeServices( command instanceof MasterCreateCommand );
+        command.execute();
       } else {
+        out.println("ERROR: Invalid Command" + "\n" + "Unrecognized option:" + 
args[0] + "\n"
+            + "A fatal exception has occurred. Program will exit.");
         exitCode = -2;
       }
     } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/knox/blob/7d839171/gateway-server/src/test/java/org/apache/hadoop/gateway/util/KnoxCLITest.java
----------------------------------------------------------------------
diff --git 
a/gateway-server/src/test/java/org/apache/hadoop/gateway/util/KnoxCLITest.java 
b/gateway-server/src/test/java/org/apache/hadoop/gateway/util/KnoxCLITest.java
index 82fc9cc..82f380a 100644
--- 
a/gateway-server/src/test/java/org/apache/hadoop/gateway/util/KnoxCLITest.java
+++ 
b/gateway-server/src/test/java/org/apache/hadoop/gateway/util/KnoxCLITest.java
@@ -120,6 +120,17 @@ public class KnoxCLITest {
   }
 
   @Test
+  public void testForInvalidArgument() throws Exception {
+    outContent.reset();
+    String[] args1 = { "--value", "testvalue1", "--master", "master" };
+    KnoxCLI cli = new KnoxCLI();
+    cli.setConf(new GatewayConfigImpl());
+    int rc = cli.run(args1);
+    assertEquals(-2, rc);
+    assertTrue(outContent.toString().contains("ERROR: Invalid Command"));
+  }
+
+  @Test
   public void testListAndDeleteOfAliasForValidClusterName() throws Exception {
     outContent.reset();
     String[] args1 =

Reply via email to