You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2016/12/12 22:36:06 UTC
[03/46] geode git commit: GEODE-2104: Fix parsing of options
following --J
GEODE-2104: Fix parsing of options following --J
This closes #286
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/4a913fe7
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/4a913fe7
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/4a913fe7
Branch: refs/heads/feature/GEODE-1930
Commit: 4a913fe7a65ea4d5d91ff04f671bf94205b60b62
Parents: bb3db4a
Author: Jared Stewart <js...@pivotal.io>
Authored: Tue Nov 15 10:57:11 2016 -0800
Committer: Kirk Lund <kl...@apache.org>
Committed: Tue Nov 15 17:02:09 2016 -0800
----------------------------------------------------------------------
.../internal/cli/util/HyphenFormatter.java | 6 +-
.../internal/cli/util/HyphenFormatterTest.java | 66 ++++++++++++++++++++
2 files changed, 69 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/4a913fe7/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/HyphenFormatter.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/HyphenFormatter.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/HyphenFormatter.java
index 80816e9..7f7bf5c 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/HyphenFormatter.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/HyphenFormatter.java
@@ -15,6 +15,7 @@
package org.apache.geode.management.internal.cli.util;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -24,7 +25,7 @@ import java.util.regex.Pattern;
*/
public class HyphenFormatter {
- private static final String OPTION_PATTERN = "\\-\\-[a-zA-Z]+\\-?[a-zA-Z]*\\=";
+ private static final String OPTION_PATTERN = "--[a-zA-Z]+[a-zA-Z\\-]*=*";
private static final String QUOTE = "\"";
private static final String EQUAL_HYPHEN = "=-";
@@ -67,13 +68,12 @@ public class HyphenFormatter {
private List<String> split(String cmd) {
List<String> strings = new ArrayList<>();
-
Matcher matcher = Pattern.compile(OPTION_PATTERN).matcher(cmd);
int index = 0; // first index of --option=
while (matcher.find()) {
- if (matcher.start() - index > 0) {
+ if (matcher.start() > index) {
String option = cmd.substring(index, matcher.start()).trim();
strings.add(option);
}
http://git-wip-us.apache.org/repos/asf/geode/blob/4a913fe7/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/HyphenFormatterTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/HyphenFormatterTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/HyphenFormatterTest.java
index c9a3268..55fe9cf 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/HyphenFormatterTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/util/HyphenFormatterTest.java
@@ -207,4 +207,70 @@ public class HyphenFormatterTest {
assertThat(formattedCmd).as(cmd).isEqualTo(expected);
}
+ @Test
+ public void optionAfterOneJOption() {
+ String cmd = "start locator --name=loc1 --J=-Dfoo=bar --http-service=8080";
+ String formattedCmd = this.formatter.formatCommand(cmd);
+ String expected = "start locator --name=loc1 --J=\"-Dfoo=bar\" --http-service=8080";
+ assertThat(formattedCmd).as(cmd).isEqualTo(expected);
+ }
+
+ @Test
+ public void optionWithMoreThanOneHyphen() {
+ String cmd = "start locator --name=loc1 --http-service-port=8080";
+ String formattedCmd = this.formatter.formatCommand(cmd);
+ String expected = "start locator --name=loc1 --http-service-port=8080";
+ assertThat(formattedCmd).as(cmd).isEqualTo(expected);
+ }
+
+ @Test
+ public void optionWithOneHyphenAfterOneJOption() {
+ String cmd = "start server --name=me3 --J=-Dgemfire.jmx-manager=true --redis-port=8080";
+ String formattedCmd = this.formatter.formatCommand(cmd);
+ String expected =
+ "start server --name=me3 --J=\"-Dgemfire.jmx-manager=true\" --redis-port=8080";
+ assertThat(formattedCmd).as(cmd).isEqualTo(expected);
+ }
+
+ @Test // reproduces GEODE-2104
+ public void optionWithMoreThanOneHyphenAfterOneJOption() {
+ String cmd = "start server --name=me3 --J=-Dgemfire.jmx-manager=true --http-service-port=8080";
+ String formattedCmd = this.formatter.formatCommand(cmd);
+ String expected =
+ "start server --name=me3 --J=\"-Dgemfire.jmx-manager=true\" --http-service-port=8080";
+ assertThat(formattedCmd).as(cmd).isEqualTo(expected);
+ }
+
+ @Test
+ public void optionWithOneHyphenAfterTwoJOptions() {
+ String cmd =
+ "start server --name=me3 --J=-Dgemfire.jmx-manager=true --J=-Dgemfire.jmx-manager-start=true --redis-port=8080";
+ String formattedCmd = this.formatter.formatCommand(cmd);
+ String expected =
+ "start server --name=me3 --J=\"-Dgemfire.jmx-manager=true\" --J=\"-Dgemfire.jmx-manager-start=true\" --redis-port=8080";
+ assertThat(formattedCmd).as(cmd).isEqualTo(expected);
+ }
+
+ @Test // reproduces GEODE-2104
+ public void optionWithMoreThanOneHyphenAfterTwoJOptions() {
+ String cmd =
+ "start server --name=me3 --J=-Dgemfire.jmx-manager=true --J=-Dgemfire.jmx-manager-start=true --http-service-port=8080";
+ String formattedCmd = this.formatter.formatCommand(cmd);
+ String expected =
+ "start server --name=me3 --J=\"-Dgemfire.jmx-manager=true\" --J=\"-Dgemfire.jmx-manager-start=true\" --http-service-port=8080";
+ assertThat(formattedCmd).as(cmd).isEqualTo(expected);
+ }
+
+ @Test // reproduces GEODE-2075
+ public void optionWithMoreThanOneHyphenWithoutValueAfterJOptions() {
+ String cmd =
+ "start server --name=Server2 --log-level=config --J=-Dgemfire.locators=localhost[10334] --disable-default-server";
+ String formattedCmd = this.formatter.formatCommand(cmd);
+ String expected =
+ "start server --name=Server2 --log-level=config --J=\"-Dgemfire.locators=localhost[10334]\" --disable-default-server";
+ assertThat(formattedCmd).as(cmd).isEqualTo(expected);
+ }
+
+
+
}