Repository: geode
Updated Branches:
  refs/heads/develop b47450667 -> ae1c56f70


GEODE-1597: fix auto-complete when user input ends with space


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

Branch: refs/heads/develop
Commit: ae1c56f7077eb807584af58c8755a74c753db442
Parents: b474506
Author: Jinmei Liao <jil...@pivotal.io>
Authored: Thu May 18 12:40:41 2017 -0700
Committer: Jinmei Liao <jil...@pivotal.io>
Committed: Mon May 22 14:59:12 2017 -0700

----------------------------------------------------------------------
 .../management/internal/cli/GfshParser.java     | 22 ++++++++++----------
 .../cli/GfshParserAutoCompletionTest.java       | 18 ++++++++++++----
 .../internal/cli/GfshParserJUnitTest.java       | 11 ++++++++++
 3 files changed, 36 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/geode/blob/ae1c56f7/geode-core/src/main/java/org/apache/geode/management/internal/cli/GfshParser.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/GfshParser.java
 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/GfshParser.java
index f9adeb3..288ea05 100755
--- 
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/GfshParser.java
+++ 
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/GfshParser.java
@@ -237,17 +237,9 @@ public class GfshParser extends SimpleParser {
     // initially assume we are trying to complete the last token
     List<Completion> potentials = getCandidates(buffer);
 
-    if (potentials.size() > 0) {
-      if (lastTokenIsOption) {
-        candidateBeginAt = buffer.length() - lastToken.length();
-      } else {
-        // need to return the index before the "=" sign, since later on we are 
going to add the
-        // "=" sign to the completion candidates
-        candidateBeginAt = buffer.length() - lastToken.length() - 1;
-      }
-    }
-    // if the last token is already complete, add either space or " --" and 
try again
-    else {
+    // if the last token is already complete (or user deliberately ends with a 
space denoting the
+    // last token is complete, then add either space or " --" and try again
+    if (potentials.size() == 0 || userInput.endsWith(" ")) {
       candidateBeginAt = buffer.length();
       // last token is an option
       if (lastTokenIsOption) {
@@ -260,6 +252,14 @@ public class GfshParser extends SimpleParser {
         potentials = getCandidates(buffer + " --");
         lastTokenIsOption = true;
       }
+    } else {
+      if (lastTokenIsOption) {
+        candidateBeginAt = buffer.length() - lastToken.length();
+      } else {
+        // need to return the index before the "=" sign, since later on we are 
going to add the
+        // "=" sign to the completion candidates
+        candidateBeginAt = buffer.length() - lastToken.length() - 1;
+      }
     }
 
     // manipulate the candidate strings

http://git-wip-us.apache.org/repos/asf/geode/blob/ae1c56f7/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserAutoCompletionTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserAutoCompletionTest.java
 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserAutoCompletionTest.java
index 31a5ceb..a122de0 100644
--- 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserAutoCompletionTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserAutoCompletionTest.java
@@ -250,10 +250,20 @@ public class GfshParserAutoCompletionTest {
   }
 
   @Test
-  public void testCompletHelp() throws Exception {
-    buffer = "create region --name=test --type LO";
-    cursor = parser.completeSuperAdvanced(buffer, candidates);
-    System.out.println("");
+  public void testCompletWithRegionTypeWithNoSpace() throws Exception {
+    buffer = "create region --name=test --type=REPLICATE";
+    cursor = parser.completeAdvanced(buffer, candidates);
+    assertThat(candidates.size()).isEqualTo(5);
+    assertThat(getCompleted(buffer, cursor, 
candidates.get(0))).isEqualTo(buffer + "_HEAP_LRU");
+  }
+
+  @Test
+  public void testCompletWithRegionTypeWithSpace() throws Exception {
+    buffer = "create region --name=test --type=REPLICATE ";
+    cursor = parser.completeAdvanced(buffer, candidates);
+    assertThat(candidates.size()).isEqualTo(37);
+    assertThat(getCompleted(buffer, cursor, candidates.get(0)))
+        .isEqualTo(buffer + "--async-event-queue-id");
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/geode/blob/ae1c56f7/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserJUnitTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserJUnitTest.java
 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserJUnitTest.java
index 2fd8c2f..95d5292 100644
--- 
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserJUnitTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserJUnitTest.java
@@ -61,6 +61,17 @@ public class GfshParserJUnitTest {
   }
 
   @Test
+  public void testSplitUserInputWithMixedQuotes() {
+    input = "command option='test1 \"test \" test1'";
+    tokens = GfshParser.splitUserInput(input);
+    assertThat(tokens.size()).isEqualTo(3);
+    assertThat(tokens.get(0)).isEqualTo("command");
+    assertThat(tokens.get(1)).isEqualTo("option");
+    assertThat(tokens.get(2)).isEqualTo("'test1 \"test \" test1'");
+  }
+
+
+  @Test
   public void testSplitUserInputWithJ() {
     input =
         "start server --name=server1  
--J=\"-Dgemfire.start-dev-rest-api=true\" 
--J='-Dgemfire.http-service-port=8080' 
--J='-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=30000'";

Reply via email to