This is an automated email from the ASF dual-hosted git repository.

jensdeppe pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git

commit a29f5466b736ee0aedd581fb817472d1b68742b2
Author: Jens Deppe <[email protected]>
AuthorDate: Wed Oct 4 13:36:37 2017 -0700

    GEODE-3542: Add null guards in the case of invalid commands
    
    - Prior commits seem to have introduced some instability
---
 .../geode/test/junit/rules/GfshParserRule.java     | 49 ++++++++++++----------
 1 file changed, 27 insertions(+), 22 deletions(-)

diff --git 
a/geode-core/src/test/java/org/apache/geode/test/junit/rules/GfshParserRule.java
 
b/geode-core/src/test/java/org/apache/geode/test/junit/rules/GfshParserRule.java
index db6b20d..ba0be92 100644
--- 
a/geode-core/src/test/java/org/apache/geode/test/junit/rules/GfshParserRule.java
+++ 
b/geode-core/src/test/java/org/apache/geode/test/junit/rules/GfshParserRule.java
@@ -16,25 +16,23 @@ package org.apache.geode.test.junit.rules;
 
 import static org.mockito.Mockito.spy;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
 import org.apache.geode.internal.ClassPathLoader;
 import org.apache.geode.management.cli.CliMetaData;
 import org.apache.geode.management.cli.Result;
 import org.apache.geode.management.internal.cli.CliAroundInterceptor;
+import org.apache.geode.management.internal.cli.CommandManager;
+import org.apache.geode.management.internal.cli.GfshParseResult;
+import org.apache.geode.management.internal.cli.GfshParser;
+import org.apache.geode.management.internal.cli.result.CommandResult;
 import org.apache.geode.management.internal.cli.result.ResultBuilder;
 import org.junit.rules.ExternalResource;
 import org.springframework.shell.core.Completion;
 import org.springframework.shell.core.Converter;
-import org.springframework.shell.event.ParseResult;
 import org.springframework.util.ReflectionUtils;
 
-import org.apache.geode.management.internal.cli.CommandManager;
-import org.apache.geode.management.internal.cli.GfshParseResult;
-import org.apache.geode.management.internal.cli.GfshParser;
-import org.apache.geode.management.internal.cli.result.CommandResult;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
 
 public class GfshParserRule extends ExternalResource {
 
@@ -54,20 +52,27 @@ public class GfshParserRule extends ExternalResource {
   public <T> CommandResult executeCommandWithInstance(T instance, String 
command) {
     GfshParseResult parseResult = parse(command);
 
-    CliAroundInterceptor interceptor = null;
-    String interceptorClass =
-        parseResult.getMethod().getAnnotation(CliMetaData.class).interceptor();
-    if (!CliMetaData.ANNOTATION_NULL_VALUE.equals(interceptorClass)) {
-      try {
-        interceptor = (CliAroundInterceptor) 
ClassPathLoader.getLatest().forName(interceptorClass)
-            .newInstance();
-      } catch (Exception e) {
-        throw new RuntimeException(e);
-      }
+    if (parseResult == null) {
+      return ResultBuilder.createUserErrorResult("Invalid command: " + 
command);
+    }
 
-      Result preExecResult = interceptor.preExecution(parseResult);
-      if (Result.Status.ERROR.equals(preExecResult.getStatus())) {
-        return (CommandResult) preExecResult;
+    CliAroundInterceptor interceptor = null;
+    CliMetaData cliMetaData = 
parseResult.getMethod().getAnnotation(CliMetaData.class);
+
+    if (cliMetaData != null) {
+      String interceptorClass = cliMetaData.interceptor();
+      if (!CliMetaData.ANNOTATION_NULL_VALUE.equals(interceptorClass)) {
+        try {
+          interceptor = (CliAroundInterceptor) 
ClassPathLoader.getLatest().forName(interceptorClass)
+              .newInstance();
+        } catch (Exception e) {
+          throw new RuntimeException(e);
+        }
+
+        Result preExecResult = interceptor.preExecution(parseResult);
+        if (Result.Status.ERROR.equals(preExecResult.getStatus())) {
+          return (CommandResult) preExecResult;
+        }
       }
     }
 

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to