You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by la...@apache.org on 2017/04/29 00:12:38 UTC

[08/18] geode git commit: GEODE-1597: use Spring shell's parser and delete our own parsing code

http://git-wip-us.apache.org/repos/asf/geode/blob/63ffe764/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ClientCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ClientCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ClientCommands.java
index 39d0442..3d155e5 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ClientCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ClientCommands.java
@@ -15,16 +15,6 @@
 
 package org.apache.geode.management.internal.cli.commands;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import javax.management.ObjectName;
-
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheFactory;
 import org.apache.geode.cache.execute.FunctionService;
@@ -47,12 +37,21 @@ import org.apache.geode.management.internal.cli.shell.Gfsh;
 import org.apache.geode.management.internal.security.ResourceOperation;
 import org.apache.geode.security.ResourcePermission.Operation;
 import org.apache.geode.security.ResourcePermission.Resource;
-
 import org.springframework.shell.core.CommandMarker;
 import org.springframework.shell.core.annotation.CliAvailabilityIndicator;
 import org.springframework.shell.core.annotation.CliCommand;
 import org.springframework.shell.core.annotation.CliOption;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import javax.management.ObjectName;
+
 /**
  * 
  * @since GemFire 8.0
@@ -65,7 +64,7 @@ public class ClientCommands implements CommandMarker {
   }
 
   @CliCommand(value = CliStrings.LIST_CLIENTS, help = CliStrings.LIST_CLIENT__HELP)
-  @CliMetaData(relatedTopic = {CliStrings.TOPIC_LIST})
+  @CliMetaData(relatedTopic = {CliStrings.TOPIC_CLIENT})
   @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.READ)
   public Result listClient() {
     Result result = null;
@@ -154,7 +153,7 @@ public class ClientCommands implements CommandMarker {
 
 
   @CliCommand(value = CliStrings.DESCRIBE_CLIENT, help = CliStrings.DESCRIBE_CLIENT__HELP)
-  @CliMetaData(relatedTopic = {CliStrings.TOPIC_LIST})
+  @CliMetaData(relatedTopic = {CliStrings.TOPIC_CLIENT})
   @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.READ)
   public Result describeClient(@CliOption(key = CliStrings.DESCRIBE_CLIENT__ID, mandatory = true,
       help = CliStrings.DESCRIBE_CLIENT__ID__HELP) String clientId) {

http://git-wip-us.apache.org/repos/asf/geode/blob/63ffe764/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ConfigCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ConfigCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ConfigCommands.java
index 50c9caa..5dfc1b8 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ConfigCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ConfigCommands.java
@@ -202,11 +202,9 @@ public class ConfigCommands extends AbstractCommandsSupport {
   public Result exportConfig(
       @CliOption(key = {CliStrings.EXPORT_CONFIG__MEMBER},
           optionContext = ConverterHint.ALL_MEMBER_IDNAME,
-          help = CliStrings.EXPORT_CONFIG__MEMBER__HELP) @CliMetaData(
-              valueSeparator = ",") String member,
+          help = CliStrings.EXPORT_CONFIG__MEMBER__HELP) String member,
       @CliOption(key = {CliStrings.EXPORT_CONFIG__GROUP}, optionContext = ConverterHint.MEMBERGROUP,
-          help = CliStrings.EXPORT_CONFIG__GROUP__HELP) @CliMetaData(
-              valueSeparator = ",") String group,
+          help = CliStrings.EXPORT_CONFIG__GROUP__HELP) String group,
       @CliOption(key = {CliStrings.EXPORT_CONFIG__DIR},
           help = CliStrings.EXPORT_CONFIG__DIR__HELP) String dir) {
     InfoResultData infoData = ResultBuilder.createInfoResultData();

http://git-wip-us.apache.org/repos/asf/geode/blob/63ffe764/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateAlterDestroyRegionCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateAlterDestroyRegionCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateAlterDestroyRegionCommands.java
index 28ce092..c4455ad 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateAlterDestroyRegionCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateAlterDestroyRegionCommands.java
@@ -124,8 +124,7 @@ public class CreateAlterDestroyRegionCommands extends AbstractCommandsSupport {
           help = CliStrings.CREATE_REGION__USEATTRIBUTESFROM__HELP) String useAttributesFrom,
       @CliOption(key = CliStrings.CREATE_REGION__GROUP, optionContext = ConverterHint.MEMBERGROUP,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-          help = CliStrings.CREATE_REGION__GROUP__HELP) @CliMetaData(
-              valueSeparator = ",") String[] groups,
+          help = CliStrings.CREATE_REGION__GROUP__HELP) String[] groups,
       @CliOption(key = CliStrings.CREATE_REGION__SKIPIFEXISTS, unspecifiedDefaultValue = "true",
           specifiedDefaultValue = "true",
           help = CliStrings.CREATE_REGION__SKIPIFEXISTS__HELP) boolean skipIfExists,
@@ -133,11 +132,9 @@ public class CreateAlterDestroyRegionCommands extends AbstractCommandsSupport {
       // the following should all be in alphabetical order according to
       // their key string
       @CliOption(key = CliStrings.CREATE_REGION__ASYNCEVENTQUEUEID,
-          help = CliStrings.CREATE_REGION__ASYNCEVENTQUEUEID__HELP) @CliMetaData(
-              valueSeparator = ",") String[] asyncEventQueueIds,
+          help = CliStrings.CREATE_REGION__ASYNCEVENTQUEUEID__HELP) String[] asyncEventQueueIds,
       @CliOption(key = CliStrings.CREATE_REGION__CACHELISTENER,
-          help = CliStrings.CREATE_REGION__CACHELISTENER__HELP) @CliMetaData(
-              valueSeparator = ",") String[] cacheListener,
+          help = CliStrings.CREATE_REGION__CACHELISTENER__HELP) String[] cacheListener,
       @CliOption(key = CliStrings.CREATE_REGION__CACHELOADER,
           help = CliStrings.CREATE_REGION__CACHELOADER__HELP) String cacheLoader,
       @CliOption(key = CliStrings.CREATE_REGION__CACHEWRITER,
@@ -186,8 +183,7 @@ public class CreateAlterDestroyRegionCommands extends AbstractCommandsSupport {
       @CliOption(key = CliStrings.CREATE_REGION__ENTRYEXPIRATIONTTLACTION,
           help = CliStrings.CREATE_REGION__ENTRYEXPIRATIONTTLACTION__HELP) String entryExpirationTTLAction,
       @CliOption(key = CliStrings.CREATE_REGION__GATEWAYSENDERID,
-          help = CliStrings.CREATE_REGION__GATEWAYSENDERID__HELP) @CliMetaData(
-              valueSeparator = ",") String[] gatewaySenderIds,
+          help = CliStrings.CREATE_REGION__GATEWAYSENDERID__HELP) String[] gatewaySenderIds,
       @CliOption(key = CliStrings.CREATE_REGION__KEYCONSTRAINT,
           help = CliStrings.CREATE_REGION__KEYCONSTRAINT__HELP) String keyConstraint,
       @CliOption(key = CliStrings.CREATE_REGION__LOCALMAXMEMORY,
@@ -424,8 +420,7 @@ public class CreateAlterDestroyRegionCommands extends AbstractCommandsSupport {
           help = CliStrings.ALTER_REGION__REGION__HELP) String regionPath,
       @CliOption(key = CliStrings.ALTER_REGION__GROUP, optionContext = ConverterHint.MEMBERGROUP,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-          help = CliStrings.ALTER_REGION__GROUP__HELP) @CliMetaData(
-              valueSeparator = ",") String[] groups,
+          help = CliStrings.ALTER_REGION__GROUP__HELP) String[] groups,
       @CliOption(key = CliStrings.ALTER_REGION__ENTRYEXPIRATIONIDLETIME,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE, specifiedDefaultValue = "-1",
           help = CliStrings.ALTER_REGION__ENTRYEXPIRATIONIDLETIME__HELP) Integer entryExpirationIdleTime,
@@ -456,8 +451,7 @@ public class CreateAlterDestroyRegionCommands extends AbstractCommandsSupport {
           help = CliStrings.ALTER_REGION__REGIONEXPIRATIONTTLACTION__HELP) String regionExpirationTTLAction,
       @CliOption(key = CliStrings.ALTER_REGION__CACHELISTENER,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE, specifiedDefaultValue = "",
-          help = CliStrings.ALTER_REGION__CACHELISTENER__HELP) @CliMetaData(
-              valueSeparator = ",") String[] cacheListeners,
+          help = CliStrings.ALTER_REGION__CACHELISTENER__HELP) String[] cacheListeners,
       @CliOption(key = CliStrings.ALTER_REGION__CACHELOADER,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
           specifiedDefaultValue = "null",
@@ -468,12 +462,10 @@ public class CreateAlterDestroyRegionCommands extends AbstractCommandsSupport {
           help = CliStrings.ALTER_REGION__CACHEWRITER__HELP) String cacheWriter,
       @CliOption(key = CliStrings.ALTER_REGION__ASYNCEVENTQUEUEID,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE, specifiedDefaultValue = "",
-          help = CliStrings.ALTER_REGION__ASYNCEVENTQUEUEID__HELP) @CliMetaData(
-              valueSeparator = ",") String[] asyncEventQueueIds,
+          help = CliStrings.ALTER_REGION__ASYNCEVENTQUEUEID__HELP) String[] asyncEventQueueIds,
       @CliOption(key = CliStrings.ALTER_REGION__GATEWAYSENDERID,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE, specifiedDefaultValue = "",
-          help = CliStrings.ALTER_REGION__GATEWAYSENDERID__HELP) @CliMetaData(
-              valueSeparator = ",") String[] gatewaySenderIds,
+          help = CliStrings.ALTER_REGION__GATEWAYSENDERID__HELP) String[] gatewaySenderIds,
       @CliOption(key = CliStrings.ALTER_REGION__CLONINGENABLED,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
           specifiedDefaultValue = "false",

http://git-wip-us.apache.org/repos/asf/geode/blob/63ffe764/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommands.java
index 6324b5c..29d68bd 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DataCommands.java
@@ -14,29 +14,6 @@
  */
 package org.apache.geode.management.internal.cli.commands;
 
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.StringTokenizer;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import org.apache.geode.security.ResourcePermission.Operation;
-import org.apache.geode.security.ResourcePermission.Resource;
-import org.apache.shiro.subject.Subject;
-import org.springframework.shell.core.CommandMarker;
-import org.springframework.shell.core.annotation.CliAvailabilityIndicator;
-import org.springframework.shell.core.annotation.CliCommand;
-import org.springframework.shell.core.annotation.CliOption;
-
 import org.apache.geode.LogWriter;
 import org.apache.geode.cache.Cache;
 import org.apache.geode.cache.CacheClosedException;
@@ -80,6 +57,28 @@ import org.apache.geode.management.internal.cli.result.ResultBuilder;
 import org.apache.geode.management.internal.cli.result.TabularResultData;
 import org.apache.geode.management.internal.cli.shell.Gfsh;
 import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.security.ResourcePermission.Operation;
+import org.apache.geode.security.ResourcePermission.Resource;
+import org.apache.shiro.subject.Subject;
+import org.springframework.shell.core.CommandMarker;
+import org.springframework.shell.core.annotation.CliAvailabilityIndicator;
+import org.springframework.shell.core.annotation.CliCommand;
+import org.springframework.shell.core.annotation.CliOption;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
 
 /**
  * 
@@ -1080,7 +1079,8 @@ public class DataCommands implements CommandMarker {
       relatedTopic = {CliStrings.TOPIC_GEODE_DATA, CliStrings.TOPIC_GEODE_REGION})
   @CliCommand(value = {CliStrings.REMOVE}, help = CliStrings.REMOVE__HELP)
   public Result remove(
-      @CliOption(key = {CliStrings.REMOVE__KEY}, help = CliStrings.REMOVE__KEY__HELP) String key,
+      @CliOption(key = {CliStrings.REMOVE__KEY}, help = CliStrings.REMOVE__KEY__HELP,
+          specifiedDefaultValue = "") String key,
       @CliOption(key = {CliStrings.REMOVE__REGION}, mandatory = true,
           help = CliStrings.REMOVE__REGION__HELP,
           optionContext = ConverterHint.REGIONPATH) String regionPath,

http://git-wip-us.apache.org/repos/asf/geode/blob/63ffe764/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DeployCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DeployCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DeployCommands.java
index 1444088..0cf7078 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DeployCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DeployCommands.java
@@ -77,8 +77,7 @@ public final class DeployCommands extends AbstractCommandsSupport {
       relatedTopic = {CliStrings.TOPIC_GEODE_CONFIG})
   public final Result deploy(
       @CliOption(key = {CliStrings.DEPLOY__GROUP}, help = CliStrings.DEPLOY__GROUP__HELP,
-          optionContext = ConverterHint.MEMBERGROUP) @CliMetaData(
-              valueSeparator = ",") String[] groups,
+          optionContext = ConverterHint.MEMBERGROUP) String[] groups,
       @CliOption(key = {CliStrings.DEPLOY__JAR}, help = CliStrings.DEPLOY__JAR__HELP) String jar,
       @CliOption(key = {CliStrings.DEPLOY__DIR}, help = CliStrings.DEPLOY__DIR__HELP) String dir) {
     try {
@@ -156,11 +155,9 @@ public final class DeployCommands extends AbstractCommandsSupport {
   @ResourceOperation(resource = Resource.DATA, operation = Operation.MANAGE)
   public final Result undeploy(
       @CliOption(key = {CliStrings.UNDEPLOY__GROUP}, help = CliStrings.UNDEPLOY__GROUP__HELP,
-          optionContext = ConverterHint.MEMBERGROUP) @CliMetaData(
-              valueSeparator = ",") String[] groups,
+          optionContext = ConverterHint.MEMBERGROUP) String[] groups,
       @CliOption(key = {CliStrings.UNDEPLOY__JAR}, help = CliStrings.UNDEPLOY__JAR__HELP,
-          unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE) @CliMetaData(
-              valueSeparator = ",") String jars) {
+          unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE) String jars) {
 
     try {
       TabularResultData tabularData = ResultBuilder.createTabularResultData();
@@ -227,8 +224,7 @@ public final class DeployCommands extends AbstractCommandsSupport {
   @CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_CONFIG})
   @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.READ)
   public final Result listDeployed(@CliOption(key = {CliStrings.LIST_DEPLOYED__GROUP},
-      help = CliStrings.LIST_DEPLOYED__GROUP__HELP) @CliMetaData(
-          valueSeparator = ",") String group) {
+      help = CliStrings.LIST_DEPLOYED__GROUP__HELP) String group) {
 
     try {
       TabularResultData tabularData = ResultBuilder.createTabularResultData();

http://git-wip-us.apache.org/repos/asf/geode/blob/63ffe764/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DiskStoreCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DiskStoreCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DiskStoreCommands.java
index 9ad2060..a96d3c2 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DiskStoreCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DiskStoreCommands.java
@@ -317,13 +317,10 @@ public class DiskStoreCommands extends AbstractCommandsSupport {
           unspecifiedDefaultValue = "32768",
           help = CliStrings.CREATE_DISK_STORE__WRITE_BUFFER_SIZE__HELP) int writeBufferSize,
       @CliOption(key = CliStrings.CREATE_DISK_STORE__DIRECTORY_AND_SIZE, mandatory = true,
-          help = CliStrings.CREATE_DISK_STORE__DIRECTORY_AND_SIZE__HELP,
-          optionContext = ConverterHint.STRING_DISABLER) @CliMetaData(
-              valueSeparator = ",") String[] directoriesAndSizes,
+          help = CliStrings.CREATE_DISK_STORE__DIRECTORY_AND_SIZE__HELP) String[] directoriesAndSizes,
       @CliOption(key = CliStrings.CREATE_DISK_STORE__GROUP,
           help = CliStrings.CREATE_DISK_STORE__GROUP__HELP,
-          optionContext = ConverterHint.MEMBERGROUP) @CliMetaData(
-              valueSeparator = ",") String[] groups,
+          optionContext = ConverterHint.MEMBERGROUP) String[] groups,
       @CliOption(key = CliStrings.CREATE_DISK_STORE__DISK_USAGE_WARNING_PCT,
           unspecifiedDefaultValue = "90",
           help = CliStrings.CREATE_DISK_STORE__DISK_USAGE_WARNING_PCT__HELP) float diskUsageWarningPercentage,
@@ -425,9 +422,7 @@ public class DiskStoreCommands extends AbstractCommandsSupport {
           help = CliStrings.COMPACT_DISK_STORE__NAME__HELP) String diskStoreName,
       @CliOption(key = CliStrings.COMPACT_DISK_STORE__GROUP,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-          help = CliStrings.COMPACT_DISK_STORE__GROUP__HELP,
-          optionContext = ConverterHint.STRING_DISABLER) @CliMetaData(
-              valueSeparator = ",") String[] groups) {
+          help = CliStrings.COMPACT_DISK_STORE__GROUP__HELP) String[] groups) {
     Result result = null;
 
     try {
@@ -568,16 +563,13 @@ public class DiskStoreCommands extends AbstractCommandsSupport {
           help = CliStrings.COMPACT_OFFLINE_DISK_STORE__NAME__HELP) String diskStoreName,
       @CliOption(key = CliStrings.COMPACT_OFFLINE_DISK_STORE__DISKDIRS, mandatory = true,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-          help = CliStrings.COMPACT_OFFLINE_DISK_STORE__DISKDIRS__HELP,
-          optionContext = ConverterHint.DIRS + ":" + ConverterHint.STRING_DISABLER) @CliMetaData(
-              valueSeparator = ",") String[] diskDirs,
+          help = CliStrings.COMPACT_OFFLINE_DISK_STORE__DISKDIRS__HELP) String[] diskDirs,
       @CliOption(key = CliStrings.COMPACT_OFFLINE_DISK_STORE__MAXOPLOGSIZE,
           unspecifiedDefaultValue = "-1",
           help = CliStrings.COMPACT_OFFLINE_DISK_STORE__MAXOPLOGSIZE__HELP) long maxOplogSize,
       @CliOption(key = CliStrings.COMPACT_OFFLINE_DISK_STORE__J,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-          help = CliStrings.COMPACT_OFFLINE_DISK_STORE__J__HELP) @CliMetaData(
-              valueSeparator = ",") String[] jvmProps) {
+          help = CliStrings.COMPACT_OFFLINE_DISK_STORE__J__HELP) String[] jvmProps) {
     Result result = null;
     LogWrapper logWrapper = LogWrapper.getInstance();
 
@@ -712,16 +704,13 @@ public class DiskStoreCommands extends AbstractCommandsSupport {
           help = CliStrings.UPGRADE_OFFLINE_DISK_STORE__NAME__HELP) String diskStoreName,
       @CliOption(key = CliStrings.UPGRADE_OFFLINE_DISK_STORE__DISKDIRS, mandatory = true,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-          help = CliStrings.UPGRADE_OFFLINE_DISK_STORE__DISKDIRS__HELP,
-          optionContext = ConverterHint.DIRS + ":" + ConverterHint.STRING_DISABLER) @CliMetaData(
-              valueSeparator = ",") String[] diskDirs,
+          help = CliStrings.UPGRADE_OFFLINE_DISK_STORE__DISKDIRS__HELP) String[] diskDirs,
       @CliOption(key = CliStrings.UPGRADE_OFFLINE_DISK_STORE__MAXOPLOGSIZE,
           unspecifiedDefaultValue = "-1",
           help = CliStrings.UPGRADE_OFFLINE_DISK_STORE__MAXOPLOGSIZE__HELP) long maxOplogSize,
       @CliOption(key = CliStrings.UPGRADE_OFFLINE_DISK_STORE__J,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-          help = CliStrings.UPGRADE_OFFLINE_DISK_STORE__J__HELP) @CliMetaData(
-              valueSeparator = ",") String[] jvmProps)
+          help = CliStrings.UPGRADE_OFFLINE_DISK_STORE__J__HELP) String[] jvmProps)
       throws InterruptedException {
 
 
@@ -1155,8 +1144,7 @@ public class DiskStoreCommands extends AbstractCommandsSupport {
       @CliOption(key = CliStrings.DESCRIBE_OFFLINE_DISK_STORE__DISKSTORENAME, mandatory = true,
           help = CliStrings.DESCRIBE_OFFLINE_DISK_STORE__DISKSTORENAME__HELP) String diskStoreName,
       @CliOption(key = CliStrings.DESCRIBE_OFFLINE_DISK_STORE__DISKDIRS, mandatory = true,
-          help = CliStrings.DESCRIBE_OFFLINE_DISK_STORE__DISKDIRS__HELP) @CliMetaData(
-              valueSeparator = ",") String[] diskDirs,
+          help = CliStrings.DESCRIBE_OFFLINE_DISK_STORE__DISKDIRS__HELP) String[] diskDirs,
       @CliOption(key = CliStrings.DESCRIBE_OFFLINE_DISK_STORE__PDX_TYPES,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
           help = CliStrings.DESCRIBE_OFFLINE_DISK_STORE__PDX_TYPES__HELP) Boolean listPdxTypes,
@@ -1200,8 +1188,7 @@ public class DiskStoreCommands extends AbstractCommandsSupport {
       @CliOption(key = CliStrings.EXPORT_OFFLINE_DISK_STORE__DISKSTORENAME, mandatory = true,
           help = CliStrings.EXPORT_OFFLINE_DISK_STORE__DISKSTORENAME__HELP) String diskStoreName,
       @CliOption(key = CliStrings.EXPORT_OFFLINE_DISK_STORE__DISKDIRS, mandatory = true,
-          help = CliStrings.EXPORT_OFFLINE_DISK_STORE__DISKDIRS__HELP) @CliMetaData(
-              valueSeparator = ",") String[] diskDirs,
+          help = CliStrings.EXPORT_OFFLINE_DISK_STORE__DISKDIRS__HELP) String[] diskDirs,
       @CliOption(key = CliStrings.EXPORT_OFFLINE_DISK_STORE__DIR, mandatory = true,
           help = CliStrings.EXPORT_OFFLINE_DISK_STORE__DIR__HELP) String dir) {
 
@@ -1245,12 +1232,10 @@ public class DiskStoreCommands extends AbstractCommandsSupport {
           help = CliStrings.VALIDATE_DISK_STORE__NAME__HELP) String diskStoreName,
       @CliOption(key = CliStrings.VALIDATE_DISK_STORE__DISKDIRS, mandatory = true,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-          help = CliStrings.VALIDATE_DISK_STORE__DISKDIRS__HELP) @CliMetaData(
-              valueSeparator = ",") String[] diskDirs,
+          help = CliStrings.VALIDATE_DISK_STORE__DISKDIRS__HELP) String[] diskDirs,
       @CliOption(key = CliStrings.VALIDATE_DISK_STORE__J,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-          help = CliStrings.VALIDATE_DISK_STORE__J__HELP) @CliMetaData(
-              valueSeparator = ",") String[] jvmProps) {
+          help = CliStrings.VALIDATE_DISK_STORE__J__HELP) String[] jvmProps) {
     try {
       String resultString = new String();
 
@@ -1325,8 +1310,7 @@ public class DiskStoreCommands extends AbstractCommandsSupport {
           help = CliStrings.ALTER_DISK_STORE__REGIONNAME__HELP) String regionName,
       @CliOption(key = CliStrings.ALTER_DISK_STORE__DISKDIRS,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-          help = CliStrings.ALTER_DISK_STORE__DISKDIRS__HELP,
-          mandatory = true) @CliMetaData(valueSeparator = ",") String[] diskDirs,
+          help = CliStrings.ALTER_DISK_STORE__DISKDIRS__HELP, mandatory = true) String[] diskDirs,
       @CliOption(key = CliStrings.ALTER_DISK_STORE__COMPRESSOR,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
           specifiedDefaultValue = "none",
@@ -1437,8 +1421,7 @@ public class DiskStoreCommands extends AbstractCommandsSupport {
           help = CliStrings.DESTROY_DISK_STORE__NAME__HELP) String name,
       @CliOption(key = CliStrings.DESTROY_DISK_STORE__GROUP,
           help = CliStrings.DESTROY_DISK_STORE__GROUP__HELP,
-          optionContext = ConverterHint.MEMBERGROUP) @CliMetaData(
-              valueSeparator = ",") String[] groups) {
+          optionContext = ConverterHint.MEMBERGROUP) String[] groups) {
     try {
       TabularResultData tabularData = ResultBuilder.createTabularResultData();
       boolean accumulatedData = false;

http://git-wip-us.apache.org/repos/asf/geode/blob/63ffe764/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/FunctionCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/FunctionCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/FunctionCommands.java
index 752ca2a..e21a334 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/FunctionCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/FunctionCommands.java
@@ -559,11 +559,9 @@ public class FunctionCommands implements CommandMarker {
       @CliOption(key = CliStrings.LIST_FUNCTION__MATCHES,
           help = CliStrings.LIST_FUNCTION__MATCHES__HELP) String matches,
       @CliOption(key = CliStrings.LIST_FUNCTION__GROUP, optionContext = ConverterHint.MEMBERGROUP,
-          help = CliStrings.LIST_FUNCTION__GROUP__HELP) @CliMetaData(
-              valueSeparator = ",") String groups,
+          help = CliStrings.LIST_FUNCTION__GROUP__HELP) String groups,
       @CliOption(key = CliStrings.LIST_FUNCTION__MEMBER, optionContext = ConverterHint.MEMBERIDNAME,
-          help = CliStrings.LIST_FUNCTION__MEMBER__HELP) @CliMetaData(
-              valueSeparator = ",") String members) {
+          help = CliStrings.LIST_FUNCTION__MEMBER__HELP) String members) {
     TabularResultData tabularData = ResultBuilder.createTabularResultData();
     boolean accumulatedData = false;
 

http://git-wip-us.apache.org/repos/asf/geode/blob/63ffe764/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GfshHelpCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GfshHelpCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GfshHelpCommands.java
index 1d1b28e..29e6bae 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GfshHelpCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/GfshHelpCommands.java
@@ -16,85 +16,29 @@ package org.apache.geode.management.internal.cli.commands;
 
 import org.apache.geode.management.cli.CliMetaData;
 import org.apache.geode.management.cli.ConverterHint;
-import org.apache.geode.management.cli.Result;
-import org.apache.geode.management.internal.cli.CommandManager;
-import org.apache.geode.management.internal.cli.GfshParser;
-import org.apache.geode.management.internal.cli.annotation.CliArgument;
-import org.apache.geode.management.internal.cli.help.CliTopic;
 import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.result.CompositeResultData;
-import org.apache.geode.management.internal.cli.result.CompositeResultData.SectionResultData;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
 import org.apache.geode.management.internal.cli.shell.Gfsh;
 import org.springframework.shell.core.CommandMarker;
 import org.springframework.shell.core.annotation.CliCommand;
-
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
+import org.springframework.shell.core.annotation.CliOption;
 
 /**
- * 
- * 
  * @since GemFire 7.0
  */
 public class GfshHelpCommands implements CommandMarker {
-
-  private Gfsh getGfsh() {
-    return Gfsh.getCurrentInstance();
-  }
-
   @CliCommand(value = CliStrings.HELP, help = CliStrings.HELP__HELP)
   @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GEODE_HELP})
-  public Result obtainHelp(
-      @CliArgument(name = CliStrings.HELP__COMMAND, argumentContext = CliStrings.PARAM_CONTEXT_HELP,
-          help = CliStrings.HELP__COMMAND__HELP) String commandString) {
-    return ResultBuilder.createInfoResult(getGfsh().obtainHelp(commandString, null));
+  public void obtainHelp(@CliOption(key = {"", CliStrings.SH__COMMAND},
+      help = "Command name to provide help for") String buffer) {
+    Gfsh.getCurrentInstance().getGfshParser().obtainHelp(buffer);
   }
 
-
-
   @CliCommand(value = CliStrings.HINT, help = CliStrings.HINT__HELP)
   @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GEODE_HELP})
-  public Result hint(
-      @CliArgument(name = CliStrings.HINT__TOPICNAME, argumentContext = ConverterHint.HINTTOPIC,
+  public void hint(
+      @CliOption(key = {"", CliStrings.HINT__TOPICNAME}, optionContext = ConverterHint.HINTTOPIC,
           help = CliStrings.HINT__TOPICNAME) String topicName) {
-    Result result = null;
-    CommandManager commandManager = CommandManager.getExisting();
-    if (commandManager == null) {
-      result =
-          ResultBuilder.createShellClientErrorResult(CliStrings.HINT__MSG__SHELL_NOT_INITIALIZED);
-    } else {
-      StringBuilder builder = new StringBuilder();
-      if (topicName == null) {
-        builder.append(CliStrings.HINT__MSG__TOPICS_AVAILABLE).append(GfshParser.LINE_SEPARATOR);
-        Set<String> topicNameSet = commandManager.getTopicNames();
-        for (String topic : topicNameSet) {
-          builder.append(topic).append(GfshParser.LINE_SEPARATOR);
-        }
-        result = ResultBuilder.createInfoResult(builder.toString());
-      } else {
-        CliTopic topic = commandManager.getTopic(topicName);
-        if (topic == null) {
-          result = ResultBuilder
-              .createInfoResult(CliStrings.format(CliStrings.HINT__MSG__UNKNOWN_TOPIC, topicName));
-        } else {
-          CompositeResultData compositeResultData = ResultBuilder.createCompositeResultData();
-          SectionResultData commandHelpSection =
-              compositeResultData.addSection("Commands And Help");
-          compositeResultData.setHeader(topic.getOneLinerDescription());
-          Map<String, String> commandsNameHelp = topic.getCommandsNameHelp();
-          Set<Entry<String, String>> entries = commandsNameHelp.entrySet();
-
-          for (Entry<String, String> entry : entries) {
-            commandHelpSection.addData(entry.getKey(), entry.getValue());
-          }
-
-          result = ResultBuilder.buildResult(compositeResultData);
-        }
-      }
-    }
-
-    return result;
+    Gfsh.getCurrentInstance().getGfshParser().obtainHint(topicName);
   }
+
 }

http://git-wip-us.apache.org/repos/asf/geode/blob/63ffe764/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommands.java
index 313d1bd..0e681d7 100755
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/LauncherLifecycleCommands.java
@@ -241,10 +241,9 @@ public class LauncherLifecycleCommands extends AbstractCommandsSupport {
       @CliOption(key = CliStrings.START_LOCATOR__MAXHEAP,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
           help = CliStrings.START_LOCATOR__MAXHEAP__HELP) final String maxHeap,
-      @CliOption(key = CliStrings.START_LOCATOR__J, optionContext = ConverterHint.STRING_LIST,
+      @CliOption(key = CliStrings.START_LOCATOR__J,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-          help = CliStrings.START_LOCATOR__J__HELP) @CliMetaData(
-              valueSeparator = ",") final String[] jvmArgsOpts,
+          help = CliStrings.START_LOCATOR__J__HELP) final String[] jvmArgsOpts,
       @CliOption(key = CliStrings.START_LOCATOR__CONNECT, unspecifiedDefaultValue = "true",
           specifiedDefaultValue = "true",
           help = CliStrings.START_LOCATOR__CONNECT__HELP) final boolean connect,
@@ -1356,10 +1355,9 @@ public class LauncherLifecycleCommands extends AbstractCommandsSupport {
       @CliOption(key = CliStrings.START_SERVER__INITIAL_HEAP,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
           help = CliStrings.START_SERVER__INITIAL_HEAP__HELP) final String initialHeap,
-      @CliOption(key = CliStrings.START_SERVER__J, optionContext = ConverterHint.STRING_LIST,
+      @CliOption(key = CliStrings.START_SERVER__J,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-          help = CliStrings.START_SERVER__J__HELP) @CliMetaData(
-              valueSeparator = ",") final String[] jvmArgsOpts,
+          help = CliStrings.START_SERVER__J__HELP) final String[] jvmArgsOpts,
       @CliOption(key = CliStrings.START_SERVER__LOCATORS,
           optionContext = ConverterHint.LOCATOR_DISCOVERY_CONFIG,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
@@ -2056,10 +2054,9 @@ public class LauncherLifecycleCommands extends AbstractCommandsSupport {
       @CliOption(key = CliStrings.START_JCONSOLE__VERSION, specifiedDefaultValue = "true",
           unspecifiedDefaultValue = "false",
           help = CliStrings.START_JCONSOLE__VERSION__HELP) final boolean version,
-      @CliOption(key = CliStrings.START_JCONSOLE__J, optionContext = ConverterHint.STRING_LIST,
+      @CliOption(key = CliStrings.START_JCONSOLE__J,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-          help = CliStrings.START_JCONSOLE__J__HELP) @CliMetaData(
-              valueSeparator = ",") final List<String> jvmArgs) {
+          help = CliStrings.START_JCONSOLE__J__HELP) final List<String> jvmArgs) {
     try {
       String[] jconsoleCommandLine =
           createJConsoleCommandLine(null, interval, notile, pluginpath, version, jvmArgs);
@@ -2226,11 +2223,9 @@ public class LauncherLifecycleCommands extends AbstractCommandsSupport {
   @CliCommand(value = CliStrings.START_JVISUALVM, help = CliStrings.START_JVISUALVM__HELP)
   @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GEODE_MANAGER,
       CliStrings.TOPIC_GEODE_JMX, CliStrings.TOPIC_GEODE_M_AND_M})
-  public Result startJVisualVM(
-      @CliOption(key = CliStrings.START_JCONSOLE__J, optionContext = ConverterHint.STRING_LIST,
-          unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-          help = CliStrings.START_JCONSOLE__J__HELP) @CliMetaData(
-              valueSeparator = ",") final List<String> jvmArgs) {
+  public Result startJVisualVM(@CliOption(key = CliStrings.START_JCONSOLE__J,
+      unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
+      help = CliStrings.START_JCONSOLE__J__HELP) final List<String> jvmArgs) {
     try {
       String[] jvisualvmCommandLine = createJVisualVMCommandLine(jvmArgs);
 

http://git-wip-us.apache.org/repos/asf/geode/blob/63ffe764/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommands.java
index 22981e7..b5fb9fe 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/MiscellaneousCommands.java
@@ -396,10 +396,11 @@ public class MiscellaneousCommands implements CommandMarker {
   @CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DEBUG_UTIL})
   @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.READ)
   // TODO : Verify the auto-completion for multiple values.
-  public Result netstat(@CliOption(key = CliStrings.NETSTAT__MEMBER, mandatory = false,
-      unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-      optionContext = ConverterHint.ALL_MEMBER_IDNAME,
-      help = CliStrings.NETSTAT__MEMBER__HELP) @CliMetaData(valueSeparator = ",") String[] members,
+  public Result netstat(
+      @CliOption(key = CliStrings.NETSTAT__MEMBER, mandatory = false,
+          unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
+          optionContext = ConverterHint.ALL_MEMBER_IDNAME,
+          help = CliStrings.NETSTAT__MEMBER__HELP) String[] members,
       @CliOption(key = CliStrings.NETSTAT__GROUP, mandatory = false,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
           optionContext = ConverterHint.MEMBERGROUP,
@@ -823,8 +824,7 @@ public class MiscellaneousCommands implements CommandMarker {
       @CliOption(key = {CliStrings.SHOW_METRICS__CACHESERVER__PORT},
           help = CliStrings.SHOW_METRICS__CACHESERVER__PORT__HELP) String cacheServerPortString,
       @CliOption(key = {CliStrings.SHOW_METRICS__CATEGORY},
-          help = CliStrings.SHOW_METRICS__CATEGORY__HELP) @CliMetaData(
-              valueSeparator = ",") String[] categories) {
+          help = CliStrings.SHOW_METRICS__CATEGORY__HELP) String[] categories) {
 
     Result result = null;
     try {
@@ -1894,11 +1894,11 @@ public class MiscellaneousCommands implements CommandMarker {
 
 
   @CliCommand(value = CliStrings.CHANGE_LOGLEVEL, help = CliStrings.CHANGE_LOGLEVEL__HELP)
-  @CliMetaData(relatedTopic = {CliStrings.TOPIC_CHANGELOGLEVEL},
+  @CliMetaData(relatedTopic = {CliStrings.TOPIC_LOGS},
       interceptor = "org.apache.geode.management.internal.cli.commands.MiscellaneousCommands$ChangeLogLevelInterceptor")
   @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.WRITE)
   public Result changeLogLevel(
-      @CliOption(key = CliStrings.CHANGE_LOGLEVEL__MEMBER, unspecifiedDefaultValue = "",
+      @CliOption(key = CliStrings.CHANGE_LOGLEVEL__MEMBER,
           help = CliStrings.CHANGE_LOGLEVEL__MEMBER__HELP) String[] memberIds,
       @CliOption(key = CliStrings.CHANGE_LOGLEVEL__GROUPS, unspecifiedDefaultValue = "",
           help = CliStrings.CHANGE_LOGLEVEL__GROUPS__HELP) String[] grps,

http://git-wip-us.apache.org/repos/asf/geode/blob/63ffe764/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/PDXCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/PDXCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/PDXCommands.java
index 4327dec..0ce8ec2 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/PDXCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/PDXCommands.java
@@ -50,27 +50,21 @@ public class PDXCommands extends AbstractCommandsSupport {
   @CliCommand(value = CliStrings.CONFIGURE_PDX, help = CliStrings.CONFIGURE_PDX__HELP)
   @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_REGION)
   @ResourceOperation(resource = Resource.DATA, operation = Operation.MANAGE)
-  public Result configurePDX(@CliOption(key = CliStrings.CONFIGURE_PDX__READ__SERIALIZED,
-      unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-      help = CliStrings.CONFIGURE_PDX__READ__SERIALIZED__HELP) Boolean readSerialized,
-
+  public Result configurePDX(
+      @CliOption(key = CliStrings.CONFIGURE_PDX__READ__SERIALIZED,
+          unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
+          help = CliStrings.CONFIGURE_PDX__READ__SERIALIZED__HELP) Boolean readSerialized,
       @CliOption(key = CliStrings.CONFIGURE_PDX__IGNORE__UNREAD_FIELDS,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
           help = CliStrings.CONFIGURE_PDX__IGNORE__UNREAD_FIELDS__HELP) Boolean ignoreUnreadFields,
-
       @CliOption(key = CliStrings.CONFIGURE_PDX__DISKSTORE,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE, specifiedDefaultValue = "",
           help = CliStrings.CONFIGURE_PDX__DISKSTORE__HELP) String diskStore,
-
-      @CliMetaData(valueSeparator = ",") @CliOption(
-          key = CliStrings.CONFIGURE_PDX__AUTO__SERIALIZER__CLASSES,
+      @CliOption(key = CliStrings.CONFIGURE_PDX__AUTO__SERIALIZER__CLASSES,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
           specifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
           help = CliStrings.CONFIGURE_PDX__AUTO__SERIALIZER__CLASSES__HELP) String[] patterns,
-
-
-      @CliMetaData(valueSeparator = ",") @CliOption(
-          key = CliStrings.CONFIGURE_PDX__PORTABLE__AUTO__SERIALIZER__CLASSES,
+      @CliOption(key = CliStrings.CONFIGURE_PDX__PORTABLE__AUTO__SERIALIZER__CLASSES,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
           specifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
           help = CliStrings.CONFIGURE_PDX__PORTABLE__AUTO__SERIALIZER__CLASSES__HELP) String[] portablePatterns) {
@@ -179,8 +173,7 @@ public class PDXCommands extends AbstractCommandsSupport {
           help = CliStrings.PDX_DISKSTORE__HELP) String diskStore,
 
       @CliOption(key = CliStrings.PDX_DISKDIR, mandatory = true,
-          help = CliStrings.PDX_DISKDIR__HELP) @CliMetaData(
-              valueSeparator = ",") String[] diskDirs) {
+          help = CliStrings.PDX_DISKDIR__HELP) String[] diskDirs) {
 
     try {
       final File[] dirs = new File[diskDirs.length];

http://git-wip-us.apache.org/repos/asf/geode/blob/63ffe764/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/QueueCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/QueueCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/QueueCommands.java
index 8c56833..6208adb 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/QueueCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/QueueCommands.java
@@ -97,16 +97,13 @@ public class QueueCommands extends AbstractCommandsSupport {
           unspecifiedDefaultValue = "KEY",
           help = CliStrings.CREATE_ASYNC_EVENT_QUEUE__ORDERPOLICY__HELP) String orderPolicy,
       @CliOption(key = CliStrings.CREATE_ASYNC_EVENT_QUEUE__GATEWAYEVENTFILTER,
-          help = CliStrings.CREATE_ASYNC_EVENT_QUEUE__GATEWAYEVENTFILTER__HELP) @CliMetaData(
-              valueSeparator = ",") String[] gatewayEventFilters,
+          help = CliStrings.CREATE_ASYNC_EVENT_QUEUE__GATEWAYEVENTFILTER__HELP) String[] gatewayEventFilters,
       @CliOption(key = CliStrings.CREATE_ASYNC_EVENT_QUEUE__SUBSTITUTION_FILTER,
           help = CliStrings.CREATE_ASYNC_EVENT_QUEUE__SUBSTITUTION_FILTER__HELP) String gatewaySubstitutionListener,
       @CliOption(key = CliStrings.CREATE_ASYNC_EVENT_QUEUE__LISTENER, mandatory = true,
           help = CliStrings.CREATE_ASYNC_EVENT_QUEUE__LISTENER__HELP) String listener,
       @CliOption(key = CliStrings.CREATE_ASYNC_EVENT_QUEUE__LISTENER_PARAM_AND_VALUE,
-          help = CliStrings.CREATE_ASYNC_EVENT_QUEUE__LISTENER_PARAM_AND_VALUE__HELP,
-          optionContext = ConverterHint.STRING_DISABLER) @CliMetaData(
-              valueSeparator = ",") String[] listenerParamsAndValues) {
+          help = CliStrings.CREATE_ASYNC_EVENT_QUEUE__LISTENER_PARAM_AND_VALUE__HELP) String[] listenerParamsAndValues) {
 
     Properties listenerProperties = new Properties();
 

http://git-wip-us.apache.org/repos/asf/geode/blob/63ffe764/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShellCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShellCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShellCommands.java
index b37feab..ff3b29f 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShellCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShellCommands.java
@@ -37,7 +37,6 @@ import org.apache.geode.management.internal.SSLUtil;
 import org.apache.geode.management.internal.cli.CliUtil;
 import org.apache.geode.management.internal.cli.GfshParser;
 import org.apache.geode.management.internal.cli.LogWrapper;
-import org.apache.geode.management.internal.cli.annotation.CliArgument;
 import org.apache.geode.management.internal.cli.converters.ConnectionEndpointConverter;
 import org.apache.geode.management.internal.cli.domain.ConnectToLocatorResult;
 import org.apache.geode.management.internal.cli.i18n.CliStrings;
@@ -93,6 +92,155 @@ import javax.net.ssl.TrustManagerFactory;
  */
 public class ShellCommands implements CommandMarker {
 
+  // millis that connect --locator will wait for a response from the locator.
+  private final static int CONNECT_LOCATOR_TIMEOUT_MS = 60000; // see bug 45971
+
+  public static int getConnectLocatorTimeoutInMS() {
+    return ShellCommands.CONNECT_LOCATOR_TIMEOUT_MS;
+  }
+
+  /* package-private */
+  static Map<String, String> loadPropertiesFromURL(URL gfSecurityPropertiesUrl) {
+    Map<String, String> propsMap = Collections.emptyMap();
+
+    if (gfSecurityPropertiesUrl != null) {
+      InputStream inputStream = null;
+      try {
+        Properties props = new Properties();
+        inputStream = gfSecurityPropertiesUrl.openStream();
+        props.load(inputStream);
+        if (!props.isEmpty()) {
+          Set<String> jmxSpecificProps = new HashSet<String>();
+          propsMap = new LinkedHashMap<String, String>();
+          Set<Entry<Object, Object>> entrySet = props.entrySet();
+          for (Entry<Object, Object> entry : entrySet) {
+
+            String key = (String) entry.getKey();
+            if (key.endsWith(DistributionConfig.JMX_SSL_PROPS_SUFFIX)) {
+              key =
+                  key.substring(0, key.length() - DistributionConfig.JMX_SSL_PROPS_SUFFIX.length());
+              jmxSpecificProps.add(key);
+
+              propsMap.put(key, (String) entry.getValue());
+            } else if (!jmxSpecificProps.contains(key)) {// Prefer properties ending with "-jmx"
+              // over default SSL props.
+              propsMap.put(key, (String) entry.getValue());
+            }
+          }
+          props.clear();
+          jmxSpecificProps.clear();
+        }
+      } catch (IOException io) {
+        throw new RuntimeException(
+            CliStrings.format(CliStrings.CONNECT__MSG__COULD_NOT_READ_CONFIG_FROM_0,
+                CliUtil.decodeWithDefaultCharSet(gfSecurityPropertiesUrl.getPath())),
+            io);
+      } finally {
+        IOUtils.close(inputStream);
+      }
+    }
+    return propsMap;
+  }
+
+  // Copied from DistributedSystem.java
+  public static URL getFileUrl(String fileName) {
+    File file = new File(fileName);
+
+    if (file.exists()) {
+      try {
+        return IOUtils.tryGetCanonicalFileElseGetAbsoluteFile(file).toURI().toURL();
+      } catch (MalformedURLException ignore) {
+      }
+    }
+
+    file = new File(System.getProperty("user.home"), fileName);
+
+    if (file.exists()) {
+      try {
+        return IOUtils.tryGetCanonicalFileElseGetAbsoluteFile(file).toURI().toURL();
+      } catch (MalformedURLException ignore) {
+      }
+    }
+
+    return ClassPathLoader.getLatest().getResource(ShellCommands.class, fileName);
+  }
+
+  public static ConnectToLocatorResult connectToLocator(String host, int port, int timeout,
+      Map<String, String> props) throws IOException {
+    // register DSFID types first; invoked explicitly so that all message type
+    // initializations do not happen in first deserialization on a possibly
+    // "precious" thread
+    DSFIDFactory.registerTypes();
+
+    JmxManagerLocatorResponse locatorResponse =
+        JmxManagerLocatorRequest.send(host, port, timeout, props);
+
+    if (StringUtils.isBlank(locatorResponse.getHost()) || locatorResponse.getPort() == 0) {
+      Throwable locatorResponseException = locatorResponse.getException();
+      String exceptionMessage = CliStrings.CONNECT__MSG__LOCATOR_COULD_NOT_FIND_MANAGER;
+
+      if (locatorResponseException != null) {
+        String locatorResponseExceptionMessage = locatorResponseException.getMessage();
+        locatorResponseExceptionMessage = (!StringUtils.isBlank(locatorResponseExceptionMessage)
+            ? locatorResponseExceptionMessage : locatorResponseException.toString());
+        exceptionMessage = "Exception caused JMX Manager startup to fail because: '"
+            .concat(locatorResponseExceptionMessage).concat("'");
+      }
+
+      throw new IllegalStateException(exceptionMessage, locatorResponseException);
+    }
+
+    ConnectionEndpoint memberEndpoint =
+        new ConnectionEndpoint(locatorResponse.getHost(), locatorResponse.getPort());
+
+    String resultMessage = CliStrings.format(CliStrings.CONNECT__MSG__CONNECTING_TO_MANAGER_AT_0,
+        memberEndpoint.toString(false));
+
+    return new ConnectToLocatorResult(memberEndpoint, resultMessage,
+        locatorResponse.isJmxManagerSslEnabled());
+  }
+
+  private static InfoResultData executeCommand(Gfsh gfsh, String userCommand, boolean useConsole)
+      throws IOException {
+    InfoResultData infoResultData = ResultBuilder.createInfoResultData();
+
+    String cmdToExecute = userCommand;
+    String cmdExecutor = "/bin/sh";
+    String cmdExecutorOpt = "-c";
+    if (SystemUtils.isWindows()) {
+      cmdExecutor = "cmd";
+      cmdExecutorOpt = "/c";
+    } else if (useConsole) {
+      cmdToExecute = cmdToExecute + " </dev/tty >/dev/tty";
+    }
+    String[] commandArray = {cmdExecutor, cmdExecutorOpt, cmdToExecute};
+
+    ProcessBuilder builder = new ProcessBuilder();
+    builder.command(commandArray);
+    builder.directory();
+    builder.redirectErrorStream();
+    Process proc = builder.start();
+
+    BufferedReader input = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+
+    String lineRead = "";
+    while ((lineRead = input.readLine()) != null) {
+      infoResultData.addLine(lineRead);
+    }
+
+    proc.getOutputStream().close();
+
+    try {
+      if (proc.waitFor() != 0) {
+        gfsh.logWarning("The command '" + userCommand + "' did not complete successfully", null);
+      }
+    } catch (final InterruptedException e) {
+      Thread.currentThread().interrupt();
+      throw new IllegalStateException(e.getMessage(), e);
+    }
+    return infoResultData;
+  }
+
   private Gfsh getGfsh() {
     return Gfsh.getCurrentInstance();
   }
@@ -113,13 +261,6 @@ public class ShellCommands implements CommandMarker {
     return exitShellRequest;
   }
 
-  // millis that connect --locator will wait for a response from the locator.
-  private final static int CONNECT_LOCATOR_TIMEOUT_MS = 60000; // see bug 45971
-
-  public static int getConnectLocatorTimeoutInMS() {
-    return ShellCommands.CONNECT_LOCATOR_TIMEOUT_MS;
-  }
-
   @CliCommand(value = {CliStrings.CONNECT}, help = CliStrings.CONNECT__HELP)
   @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH, CliStrings.TOPIC_GEODE_JMX,
       CliStrings.TOPIC_GEODE_MANAGER})
@@ -213,7 +354,6 @@ public class ShellCommands implements CommandMarker {
     return result;
   }
 
-
   private Result httpConnect(Map<String, String> sslConfigProps, boolean useSsl, String url,
       String userName, String passwordToUse) {
     Gfsh gfsh = getGfsh();
@@ -394,7 +534,6 @@ public class ShellCommands implements CommandMarker {
     return ResultBuilder.createConnectionErrorResult(errorMessage);
   }
 
-
   private String decrypt(String password) {
     if (password != null) {
       return PasswordUtil.decrypt(password);
@@ -584,112 +723,6 @@ public class ShellCommands implements CommandMarker {
     return sslConfigProps;
   }
 
-  private static String getGfshLogsCheckMessage(String logFilePath) {
-    return CliStrings.format(CliStrings.GFSH__PLEASE_CHECK_LOGS_AT_0, logFilePath);
-  }
-
-  /* package-private */
-  static Map<String, String> loadPropertiesFromURL(URL gfSecurityPropertiesUrl) {
-    Map<String, String> propsMap = Collections.emptyMap();
-
-    if (gfSecurityPropertiesUrl != null) {
-      InputStream inputStream = null;
-      try {
-        Properties props = new Properties();
-        inputStream = gfSecurityPropertiesUrl.openStream();
-        props.load(inputStream);
-        if (!props.isEmpty()) {
-          Set<String> jmxSpecificProps = new HashSet<String>();
-          propsMap = new LinkedHashMap<String, String>();
-          Set<Entry<Object, Object>> entrySet = props.entrySet();
-          for (Entry<Object, Object> entry : entrySet) {
-
-            String key = (String) entry.getKey();
-            if (key.endsWith(DistributionConfig.JMX_SSL_PROPS_SUFFIX)) {
-              key =
-                  key.substring(0, key.length() - DistributionConfig.JMX_SSL_PROPS_SUFFIX.length());
-              jmxSpecificProps.add(key);
-
-              propsMap.put(key, (String) entry.getValue());
-            } else if (!jmxSpecificProps.contains(key)) {// Prefer properties ending with "-jmx"
-                                                         // over default SSL props.
-              propsMap.put(key, (String) entry.getValue());
-            }
-          }
-          props.clear();
-          jmxSpecificProps.clear();
-        }
-      } catch (IOException io) {
-        throw new RuntimeException(
-            CliStrings.format(CliStrings.CONNECT__MSG__COULD_NOT_READ_CONFIG_FROM_0,
-                CliUtil.decodeWithDefaultCharSet(gfSecurityPropertiesUrl.getPath())),
-            io);
-      } finally {
-        IOUtils.close(inputStream);
-      }
-    }
-    return propsMap;
-  }
-
-  // Copied from DistributedSystem.java
-  public static URL getFileUrl(String fileName) {
-    File file = new File(fileName);
-
-    if (file.exists()) {
-      try {
-        return IOUtils.tryGetCanonicalFileElseGetAbsoluteFile(file).toURI().toURL();
-      } catch (MalformedURLException ignore) {
-      }
-    }
-
-    file = new File(System.getProperty("user.home"), fileName);
-
-    if (file.exists()) {
-      try {
-        return IOUtils.tryGetCanonicalFileElseGetAbsoluteFile(file).toURI().toURL();
-      } catch (MalformedURLException ignore) {
-      }
-    }
-
-    return ClassPathLoader.getLatest().getResource(ShellCommands.class, fileName);
-  }
-
-  public static ConnectToLocatorResult connectToLocator(String host, int port, int timeout,
-      Map<String, String> props) throws IOException {
-    // register DSFID types first; invoked explicitly so that all message type
-    // initializations do not happen in first deserialization on a possibly
-    // "precious" thread
-    DSFIDFactory.registerTypes();
-
-    JmxManagerLocatorResponse locatorResponse =
-        JmxManagerLocatorRequest.send(host, port, timeout, props);
-
-    if (StringUtils.isBlank(locatorResponse.getHost()) || locatorResponse.getPort() == 0) {
-      Throwable locatorResponseException = locatorResponse.getException();
-      String exceptionMessage = CliStrings.CONNECT__MSG__LOCATOR_COULD_NOT_FIND_MANAGER;
-
-      if (locatorResponseException != null) {
-        String locatorResponseExceptionMessage = locatorResponseException.getMessage();
-        locatorResponseExceptionMessage = (!StringUtils.isBlank(locatorResponseExceptionMessage)
-            ? locatorResponseExceptionMessage : locatorResponseException.toString());
-        exceptionMessage = "Exception caused JMX Manager startup to fail because: '"
-            .concat(locatorResponseExceptionMessage).concat("'");
-      }
-
-      throw new IllegalStateException(exceptionMessage, locatorResponseException);
-    }
-
-    ConnectionEndpoint memberEndpoint =
-        new ConnectionEndpoint(locatorResponse.getHost(), locatorResponse.getPort());
-
-    String resultMessage = CliStrings.format(CliStrings.CONNECT__MSG__CONNECTING_TO_MANAGER_AT_0,
-        memberEndpoint.toString(false));
-
-    return new ConnectToLocatorResult(memberEndpoint, resultMessage,
-        locatorResponse.isJmxManagerSslEnabled());
-  }
-
-
   @CliCommand(value = {CliStrings.DISCONNECT}, help = CliStrings.DISCONNECT__HELP)
   @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH, CliStrings.TOPIC_GEODE_JMX,
       CliStrings.TOPIC_GEODE_MANAGER})
@@ -725,7 +758,6 @@ public class ShellCommands implements CommandMarker {
     return result;
   }
 
-
   @CliCommand(value = {CliStrings.DESCRIBE_CONNECTION}, help = CliStrings.DESCRIBE_CONNECTION__HELP)
   @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH, CliStrings.TOPIC_GEODE_JMX})
   public Result describeConnection() {
@@ -750,7 +782,6 @@ public class ShellCommands implements CommandMarker {
     return result;
   }
 
-
   @CliCommand(value = {CliStrings.ECHO}, help = CliStrings.ECHO__HELP)
   @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH})
   public Result echo(@CliOption(key = {CliStrings.ECHO__STR, ""},
@@ -784,7 +815,6 @@ public class ShellCommands implements CommandMarker {
     return resultData;
   }
 
-
   @CliCommand(value = {CliStrings.SET_VARIABLE}, help = CliStrings.SET_VARIABLE__HELP)
   @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH})
   public Result setVariable(
@@ -806,22 +836,6 @@ public class ShellCommands implements CommandMarker {
     return result;
   }
 
-  // Enable when "use region" command is required. See #46110
-  // @CliCommand(value = { CliStrings.USE_REGION }, help = CliStrings.USE_REGION__HELP)
-  // @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH,
-  // CliStrings.TOPIC_GEODE_REGION})
-  // public Result useRegion(
-  // @CliArgument(name = CliStrings.USE_REGION__REGION,
-  // unspecifiedDefaultValue = "/",
-  // argumentContext = CliStrings.PARAM_CONTEXT_REGIONPATH,
-  // help = CliStrings.USE_REGION__REGION__HELP)
-  // String toRegion) {
-  // Gfsh gfsh = Gfsh.getCurrentInstance();
-  //
-  // gfsh.setPromptPath(toRegion);
-  // return ResultBuilder.createInfoResult("");
-  // }
-
   @CliCommand(value = {CliStrings.DEBUG}, help = CliStrings.DEBUG__HELP)
   @CliMetaData(shellOnly = true,
       relatedTopic = {CliStrings.TOPIC_GFSH, CliStrings.TOPIC_GEODE_DEBUG_UTIL})
@@ -875,8 +889,7 @@ public class ShellCommands implements CommandMarker {
 
       GfshHistory gfshHistory = gfsh.getGfshHistory();
       Iterator<?> it = gfshHistory.entries();
-      boolean flagForLineNumbers =
-          (saveHistoryTo != null && saveHistoryTo.length() > 0) ? false : true;
+      boolean flagForLineNumbers = !(saveHistoryTo != null && saveHistoryTo.length() > 0);
       long lineNumber = 0;
 
       while (it.hasNext()) {
@@ -956,7 +969,6 @@ public class ShellCommands implements CommandMarker {
 
   }
 
-
   @CliCommand(value = {CliStrings.RUN}, help = CliStrings.RUN__HELP)
   @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH})
   public Result executeScript(
@@ -979,7 +991,6 @@ public class ShellCommands implements CommandMarker {
     return result;
   }
 
-
   @CliCommand(value = CliStrings.ENCRYPT, help = CliStrings.ENCRYPT__HELP)
   @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GEODE_DEBUG_UTIL})
   public Result encryptPassword(@CliOption(key = CliStrings.ENCRYPT_STRING,
@@ -1011,7 +1022,7 @@ public class ShellCommands implements CommandMarker {
   @CliCommand(value = {CliStrings.SH}, help = CliStrings.SH__HELP)
   @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH})
   public Result sh(
-      @CliArgument(name = CliStrings.SH__COMMAND, mandatory = true,
+      @CliOption(key = {"", CliStrings.SH__COMMAND}, mandatory = true,
           help = CliStrings.SH__COMMAND__HELP) String command,
       @CliOption(key = CliStrings.SH__USE_CONSOLE, specifiedDefaultValue = "true",
           unspecifiedDefaultValue = "false",
@@ -1032,47 +1043,6 @@ public class ShellCommands implements CommandMarker {
     return result;
   }
 
-  private static InfoResultData executeCommand(Gfsh gfsh, String userCommand, boolean useConsole)
-      throws IOException {
-    InfoResultData infoResultData = ResultBuilder.createInfoResultData();
-
-    String cmdToExecute = userCommand;
-    String cmdExecutor = "/bin/sh";
-    String cmdExecutorOpt = "-c";
-    if (SystemUtils.isWindows()) {
-      cmdExecutor = "cmd";
-      cmdExecutorOpt = "/c";
-    } else if (useConsole) {
-      cmdToExecute = cmdToExecute + " </dev/tty >/dev/tty";
-    }
-    String[] commandArray = {cmdExecutor, cmdExecutorOpt, cmdToExecute};
-
-    ProcessBuilder builder = new ProcessBuilder();
-    builder.command(commandArray);
-    builder.directory();
-    builder.redirectErrorStream();
-    Process proc = builder.start();
-
-    BufferedReader input = new BufferedReader(new InputStreamReader(proc.getInputStream()));
-
-    String lineRead = "";
-    while ((lineRead = input.readLine()) != null) {
-      infoResultData.addLine(lineRead);
-    }
-
-    proc.getOutputStream().close();
-
-    try {
-      if (proc.waitFor() != 0) {
-        gfsh.logWarning("The command '" + userCommand + "' did not complete successfully", null);
-      }
-    } catch (final InterruptedException e) {
-      throw new IllegalStateException(e);
-    }
-    return infoResultData;
-  }
-
-
   @CliAvailabilityIndicator({CliStrings.CONNECT, CliStrings.DISCONNECT,
       CliStrings.DESCRIBE_CONNECTION})
   public boolean isAvailable() {

http://git-wip-us.apache.org/repos/asf/geode/blob/63ffe764/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/WanCommands.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/WanCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/WanCommands.java
index 239db48..cd8f6eb 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/WanCommands.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/WanCommands.java
@@ -71,14 +71,12 @@ public class WanCommands extends AbstractCommandsSupport {
   @ResourceOperation(resource = Resource.DATA, operation = Operation.MANAGE)
   public Result createGatewaySender(@CliOption(key = CliStrings.CREATE_GATEWAYSENDER__GROUP,
       optionContext = ConverterHint.MEMBERGROUP,
-      help = CliStrings.CREATE_GATEWAYSENDER__GROUP__HELP) @CliMetaData(
-          valueSeparator = ",") String[] onGroups,
+      help = CliStrings.CREATE_GATEWAYSENDER__GROUP__HELP) String[] onGroups,
 
       @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__MEMBER,
           optionContext = ConverterHint.MEMBERIDNAME,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-          help = CliStrings.CREATE_GATEWAYSENDER__MEMBER__HELP) @CliMetaData(
-              valueSeparator = ",") String onMember,
+          help = CliStrings.CREATE_GATEWAYSENDER__MEMBER__HELP) String onMember,
 
       @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ID, mandatory = true,
           help = CliStrings.CREATE_GATEWAYSENDER__ID__HELP) String id,
@@ -129,12 +127,10 @@ public class WanCommands extends AbstractCommandsSupport {
           help = CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY__HELP) String orderPolicy,
 
       @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__GATEWAYEVENTFILTER,
-          help = CliStrings.CREATE_GATEWAYSENDER__GATEWAYEVENTFILTER__HELP) @CliMetaData(
-              valueSeparator = ",") String[] gatewayEventFilters,
+          help = CliStrings.CREATE_GATEWAYSENDER__GATEWAYEVENTFILTER__HELP) String[] gatewayEventFilters,
 
       @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__GATEWAYTRANSPORTFILTER,
-          help = CliStrings.CREATE_GATEWAYSENDER__GATEWAYTRANSPORTFILTER__HELP) @CliMetaData(
-              valueSeparator = ",") String[] gatewayTransportFilter) {
+          help = CliStrings.CREATE_GATEWAYSENDER__GATEWAYTRANSPORTFILTER__HELP) String[] gatewayTransportFilter) {
 
     Result result = null;
 
@@ -192,13 +188,11 @@ public class WanCommands extends AbstractCommandsSupport {
 
       @CliOption(key = CliStrings.START_GATEWAYSENDER__GROUP,
           optionContext = ConverterHint.MEMBERGROUP,
-          help = CliStrings.START_GATEWAYSENDER__GROUP__HELP) @CliMetaData(
-              valueSeparator = ",") String onGroup,
+          help = CliStrings.START_GATEWAYSENDER__GROUP__HELP) String onGroup,
 
       @CliOption(key = CliStrings.START_GATEWAYSENDER__MEMBER,
           optionContext = ConverterHint.MEMBERIDNAME,
-          help = CliStrings.START_GATEWAYSENDER__MEMBER__HELP) @CliMetaData(
-              valueSeparator = ",") String onMember) {
+          help = CliStrings.START_GATEWAYSENDER__MEMBER__HELP) String onMember) {
 
     Result result = null;
     final String id = senderId.trim();
@@ -316,13 +310,11 @@ public class WanCommands extends AbstractCommandsSupport {
 
       @CliOption(key = CliStrings.PAUSE_GATEWAYSENDER__GROUP,
           optionContext = ConverterHint.MEMBERGROUP,
-          help = CliStrings.PAUSE_GATEWAYSENDER__GROUP__HELP) @CliMetaData(
-              valueSeparator = ",") String onGroup,
+          help = CliStrings.PAUSE_GATEWAYSENDER__GROUP__HELP) String onGroup,
 
       @CliOption(key = CliStrings.PAUSE_GATEWAYSENDER__MEMBER,
           optionContext = ConverterHint.MEMBERIDNAME,
-          help = CliStrings.PAUSE_GATEWAYSENDER__MEMBER__HELP) @CliMetaData(
-              valueSeparator = ",") String onMember) {
+          help = CliStrings.PAUSE_GATEWAYSENDER__MEMBER__HELP) String onMember) {
 
     Result result = null;
     if (senderId != null)
@@ -396,13 +388,10 @@ public class WanCommands extends AbstractCommandsSupport {
 
       @CliOption(key = CliStrings.RESUME_GATEWAYSENDER__GROUP,
           optionContext = ConverterHint.MEMBERGROUP,
-          help = CliStrings.RESUME_GATEWAYSENDER__GROUP__HELP) @CliMetaData(
-              valueSeparator = ",") String onGroup,
-
+          help = CliStrings.RESUME_GATEWAYSENDER__GROUP__HELP) String onGroup,
       @CliOption(key = CliStrings.RESUME_GATEWAYSENDER__MEMBER,
           optionContext = ConverterHint.MEMBERIDNAME,
-          help = CliStrings.RESUME_GATEWAYSENDER__MEMBER__HELP) @CliMetaData(
-              valueSeparator = ",") String onMember) {
+          help = CliStrings.RESUME_GATEWAYSENDER__MEMBER__HELP) String onMember) {
 
     Result result = null;
     if (senderId != null)
@@ -527,13 +516,11 @@ public class WanCommands extends AbstractCommandsSupport {
 
       @CliOption(key = CliStrings.STOP_GATEWAYSENDER__GROUP,
           optionContext = ConverterHint.MEMBERGROUP,
-          help = CliStrings.STOP_GATEWAYSENDER__GROUP__HELP) @CliMetaData(
-              valueSeparator = ",") String onGroup,
+          help = CliStrings.STOP_GATEWAYSENDER__GROUP__HELP) String onGroup,
 
       @CliOption(key = CliStrings.STOP_GATEWAYSENDER__MEMBER,
           optionContext = ConverterHint.MEMBERIDNAME,
-          help = CliStrings.STOP_GATEWAYSENDER__MEMBER__HELP) @CliMetaData(
-              valueSeparator = ",") String onMember) {
+          help = CliStrings.STOP_GATEWAYSENDER__MEMBER__HELP) String onMember) {
 
     Result result = null;
     if (senderId != null)
@@ -592,14 +579,12 @@ public class WanCommands extends AbstractCommandsSupport {
   @ResourceOperation(resource = Resource.DATA, operation = Operation.MANAGE)
   public Result createGatewayReceiver(@CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__GROUP,
       optionContext = ConverterHint.MEMBERGROUP,
-      help = CliStrings.CREATE_GATEWAYRECEIVER__GROUP__HELP) @CliMetaData(
-          valueSeparator = ",") String[] onGroups,
+      help = CliStrings.CREATE_GATEWAYRECEIVER__GROUP__HELP) String[] onGroups,
 
       @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__MEMBER,
           optionContext = ConverterHint.MEMBERIDNAME,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-          help = CliStrings.CREATE_GATEWAYRECEIVER__MEMBER__HELP) @CliMetaData(
-              valueSeparator = ",") String onMember,
+          help = CliStrings.CREATE_GATEWAYRECEIVER__MEMBER__HELP) String onMember,
 
       @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART,
           help = CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART__HELP) Boolean manualStart,
@@ -620,8 +605,7 @@ public class WanCommands extends AbstractCommandsSupport {
           help = CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE__HELP) Integer socketBufferSize,
 
       @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__GATEWAYTRANSPORTFILTER,
-          help = CliStrings.CREATE_GATEWAYRECEIVER__GATEWAYTRANSPORTFILTER__HELP) @CliMetaData(
-              valueSeparator = ",") String[] gatewayTransportFilters) {
+          help = CliStrings.CREATE_GATEWAYRECEIVER__GATEWAYTRANSPORTFILTER__HELP) String[] gatewayTransportFilters) {
 
     Result result = null;
 
@@ -735,13 +719,11 @@ public class WanCommands extends AbstractCommandsSupport {
   @ResourceOperation(resource = Resource.DATA, operation = Operation.MANAGE)
   public Result startGatewayReceiver(@CliOption(key = CliStrings.START_GATEWAYRECEIVER__GROUP,
       optionContext = ConverterHint.MEMBERGROUP,
-      help = CliStrings.START_GATEWAYRECEIVER__GROUP__HELP) @CliMetaData(
-          valueSeparator = ",") String onGroup,
+      help = CliStrings.START_GATEWAYRECEIVER__GROUP__HELP) String onGroup,
 
       @CliOption(key = CliStrings.START_GATEWAYRECEIVER__MEMBER,
           optionContext = ConverterHint.MEMBERIDNAME,
-          help = CliStrings.START_GATEWAYRECEIVER__MEMBER__HELP) @CliMetaData(
-              valueSeparator = ",") String onMember) {
+          help = CliStrings.START_GATEWAYRECEIVER__MEMBER__HELP) String onMember) {
     Result result = null;
 
 
@@ -800,13 +782,11 @@ public class WanCommands extends AbstractCommandsSupport {
 
       @CliOption(key = CliStrings.STOP_GATEWAYRECEIVER__GROUP,
           optionContext = ConverterHint.MEMBERGROUP,
-          help = CliStrings.STOP_GATEWAYRECEIVER__GROUP__HELP) @CliMetaData(
-              valueSeparator = ",") String onGroup,
+          help = CliStrings.STOP_GATEWAYRECEIVER__GROUP__HELP) String onGroup,
 
       @CliOption(key = CliStrings.STOP_GATEWAYRECEIVER__MEMBER,
           optionContext = ConverterHint.MEMBERIDNAME,
-          help = CliStrings.STOP_GATEWAYRECEIVER__MEMBER__HELP) @CliMetaData(
-              valueSeparator = ",") String onMember) {
+          help = CliStrings.STOP_GATEWAYRECEIVER__MEMBER__HELP) String onMember) {
 
     Result result = null;
 
@@ -865,11 +845,9 @@ public class WanCommands extends AbstractCommandsSupport {
   @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.READ)
   public Result listGateway(
       @CliOption(key = CliStrings.LIST_GATEWAY__MEMBER, optionContext = ConverterHint.MEMBERIDNAME,
-          help = CliStrings.LIST_GATEWAY__MEMBER__HELP) @CliMetaData(
-              valueSeparator = ",") String onMember,
+          help = CliStrings.LIST_GATEWAY__MEMBER__HELP) String onMember,
       @CliOption(key = CliStrings.LIST_GATEWAY__GROUP, optionContext = ConverterHint.MEMBERGROUP,
-          help = CliStrings.LIST_GATEWAY__GROUP__HELP) @CliMetaData(
-              valueSeparator = ",") String onGroup) {
+          help = CliStrings.LIST_GATEWAY__GROUP__HELP) String onGroup) {
 
     Result result = null;
     Cache cache = CacheFactory.getAnyInstance();
@@ -957,13 +935,11 @@ public class WanCommands extends AbstractCommandsSupport {
 
       @CliOption(key = CliStrings.STATUS_GATEWAYSENDER__GROUP,
           optionContext = ConverterHint.MEMBERGROUP,
-          help = CliStrings.STATUS_GATEWAYSENDER__GROUP__HELP) @CliMetaData(
-              valueSeparator = ",") String onGroup,
+          help = CliStrings.STATUS_GATEWAYSENDER__GROUP__HELP) String onGroup,
 
       @CliOption(key = CliStrings.STATUS_GATEWAYSENDER__MEMBER,
           optionContext = ConverterHint.MEMBERIDNAME,
-          help = CliStrings.STATUS_GATEWAYSENDER__MEMBER__HELP) @CliMetaData(
-              valueSeparator = ",") String onMember) {
+          help = CliStrings.STATUS_GATEWAYSENDER__MEMBER__HELP) String onMember) {
 
     Result result = null;
     if (senderId != null)
@@ -1016,13 +992,11 @@ public class WanCommands extends AbstractCommandsSupport {
   @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.READ)
   public Result statusGatewayReceiver(@CliOption(key = CliStrings.STATUS_GATEWAYRECEIVER__GROUP,
       optionContext = ConverterHint.MEMBERGROUP,
-      help = CliStrings.STATUS_GATEWAYRECEIVER__GROUP__HELP) @CliMetaData(
-          valueSeparator = ",") String onGroup,
+      help = CliStrings.STATUS_GATEWAYRECEIVER__GROUP__HELP) String onGroup,
 
       @CliOption(key = CliStrings.STATUS_GATEWAYRECEIVER__MEMBER,
           optionContext = ConverterHint.MEMBERIDNAME,
-          help = CliStrings.STATUS_GATEWAYRECEIVER__MEMBER__HELP) @CliMetaData(
-              valueSeparator = ",") String onMember) {
+          help = CliStrings.STATUS_GATEWAYRECEIVER__MEMBER__HELP) String onMember) {
 
     Result result = null;
 
@@ -1073,13 +1047,11 @@ public class WanCommands extends AbstractCommandsSupport {
   public Result destroyGatewaySender(
       @CliOption(key = CliStrings.DESTROY_GATEWAYSENDER__GROUP,
           optionContext = ConverterHint.MEMBERGROUP,
-          help = CliStrings.DESTROY_GATEWAYSENDER__GROUP__HELP) @CliMetaData(
-              valueSeparator = ",") String[] onGroups,
+          help = CliStrings.DESTROY_GATEWAYSENDER__GROUP__HELP) String[] onGroups,
       @CliOption(key = CliStrings.DESTROY_GATEWAYSENDER__MEMBER,
           optionContext = ConverterHint.MEMBERIDNAME,
           unspecifiedDefaultValue = CliMetaData.ANNOTATION_NULL_VALUE,
-          help = CliStrings.DESTROY_GATEWAYSENDER__MEMBER__HELP) @CliMetaData(
-              valueSeparator = ",") String onMember,
+          help = CliStrings.DESTROY_GATEWAYSENDER__MEMBER__HELP) String onMember,
       @CliOption(key = CliStrings.DESTROY_GATEWAYSENDER__ID, mandatory = true,
           optionContext = ConverterHint.GATEWAY_SENDER_ID,
           help = CliStrings.DESTROY_GATEWAYSENDER__ID__HELP) String id) {

http://git-wip-us.apache.org/repos/asf/geode/blob/63ffe764/geode-core/src/main/java/org/apache/geode/management/internal/cli/converters/BooleanConverter.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/converters/BooleanConverter.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/converters/BooleanConverter.java
deleted file mode 100644
index 5e9cdb9..0000000
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/converters/BooleanConverter.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-package org.apache.geode.management.internal.cli.converters;
-
-import java.util.List;
-
-import org.springframework.shell.core.Completion;
-import org.springframework.shell.core.Converter;
-import org.springframework.shell.core.MethodTarget;
-
-/**
- * {@link Converter} for {@link Boolean}. Use this BooleanConverter instead of SHL's
- * BooleanConverter. Removed completion & conversion for values like 0, 1, yes, no.
- *
- * @since GemFire 7.0
- */
-public class BooleanConverter implements Converter<Boolean> {
-
-  public boolean supports(final Class<?> requiredType, final String optionContext) {
-    return Boolean.class.isAssignableFrom(requiredType)
-        || boolean.class.isAssignableFrom(requiredType);
-  }
-
-  public Boolean convertFromText(final String value, final Class<?> requiredType,
-      final String optionContext) {
-    if ("true".equalsIgnoreCase(value)) {
-      return true;
-    } else if ("false".equalsIgnoreCase(value)) {
-      return false;
-    } else {
-      throw new IllegalArgumentException("Cannot convert " + value + " to type Boolean.");
-    }
-  }
-
-  public boolean getAllPossibleValues(final List<Completion> completions,
-      final Class<?> requiredType, final String existingData, final String optionContext,
-      final MethodTarget target) {
-    completions.add(new Completion("true"));
-    completions.add(new Completion("false"));
-    return false;
-  }
-}

http://git-wip-us.apache.org/repos/asf/geode/blob/63ffe764/geode-core/src/main/java/org/apache/geode/management/internal/cli/converters/DirConverter.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/converters/DirConverter.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/converters/DirConverter.java
deleted file mode 100644
index c97057b..0000000
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/converters/DirConverter.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-package org.apache.geode.management.internal.cli.converters;
-
-import java.io.File;
-import java.util.List;
-
-import org.springframework.shell.core.Completion;
-import org.springframework.shell.core.MethodTarget;
-import org.springframework.shell.support.util.FileUtils;
-import org.springframework.util.Assert;
-
-import org.apache.geode.management.cli.ConverterHint;
-import org.apache.geode.management.internal.cli.MultipleValueAdapter;
-import org.apache.geode.management.internal.cli.shell.Gfsh;
-
-/**
- *
- * @since GemFire 7.0
- * 
- * 
- */
-public class DirConverter extends MultipleValueAdapter<String[]> {
-
-  private static final String HOME_DIRECTORY_SYMBOL = "~";
-  // Constants
-  private static final String home = System.getProperty("user.home");
-
-  @Override
-  public String[] convertFromText(String[] values, Class<?> targetType, String context) {
-    return values;
-  }
-
-  @Override
-  public boolean getAllPossibleValues(List<Completion> completions, Class<?> targetType,
-      String[] existingData, String context, MethodTarget target) {
-    String adjustedUserInput = convertUserInputIntoAFullyQualifiedPath(
-        (existingData != null) ? existingData[existingData.length - 1] : "");
-
-    String directoryData =
-        adjustedUserInput.substring(0, adjustedUserInput.lastIndexOf(File.separator) + 1);
-    adjustedUserInput =
-        adjustedUserInput.substring(adjustedUserInput.lastIndexOf(File.separator) + 1);
-
-    populate(completions, adjustedUserInput,
-        ((existingData != null) ? existingData[existingData.length - 1] : ""), directoryData);
-
-    return true;
-  }
-
-  protected void populate(final List<Completion> completions, final String adjustedUserInput,
-      final String originalUserInput, final String directoryData) {
-    File directory = new File(directoryData);
-
-    if (!directory.isDirectory()) {
-      return;
-    }
-
-    for (File file : directory.listFiles()) {
-      if (adjustedUserInput == null || adjustedUserInput.length() == 0
-          || file.getName().toLowerCase().startsWith(adjustedUserInput.toLowerCase())) {
-
-        String completion = "";
-        if (directoryData.length() > 0)
-          completion += directoryData;
-        completion += file.getName();
-
-        completion = convertCompletionBackIntoUserInputStyle(originalUserInput, completion);
-
-        if (file.isDirectory()) {
-          completions.add(new Completion(completion + File.separator));
-        }
-      }
-    }
-  }
-
-  private String convertCompletionBackIntoUserInputStyle(final String originalUserInput,
-      final String completion) {
-    if (FileUtils.denotesAbsolutePath(originalUserInput)) {
-      // Input was originally as a fully-qualified path, so we just keep the
-      // completion in that form
-      return completion;
-    }
-    if (originalUserInput.startsWith(HOME_DIRECTORY_SYMBOL)) {
-      // Input originally started with this symbol, so replace the user's home
-      // directory with it again
-      Assert.notNull(home, "Home directory could not be determined from system properties");
-      return HOME_DIRECTORY_SYMBOL + completion.substring(home.length());
-    }
-    // The path was working directory specific, so strip the working directory
-    // given the user never typed it
-    return completion.substring(getWorkingDirectoryAsString().length());
-  }
-
-  /**
-   * If the user input starts with a tilde character (~), replace the tilde character with the
-   * user's home directory. If the user input does not start with a tilde, simply return the
-   * original user input without any changes if the input specifies an absolute path, or return an
-   * absolute path based on the working directory if the input specifies a relative path.
-   * 
-   * @param userInput the user input, which may commence with a tilde (required)
-   * @return a string that is guaranteed to no longer contain a tilde as the first character (never
-   *         null)
-   */
-  private String convertUserInputIntoAFullyQualifiedPath(final String userInput) {
-    if (FileUtils.denotesAbsolutePath(userInput)) {
-      // Input is already in a fully-qualified path form
-      return userInput;
-    }
-    if (userInput.startsWith(HOME_DIRECTORY_SYMBOL)) {
-      // Replace this symbol with the user's actual home directory
-      Assert.notNull(home, "Home directory could not be determined from system properties");
-      if (userInput.length() > 1) {
-        return home + userInput.substring(1);
-      }
-    }
-    // The path is working directory specific, so prepend the working directory
-    String fullPath = getWorkingDirectoryAsString() + userInput;
-    return fullPath;
-  }
-
-  private String getWorkingDirectoryAsString() {
-    try {
-      return getWorkingDirectory().getCanonicalPath() + File.separator;
-    } catch (Exception e) {
-      throw new IllegalStateException(e);
-    }
-  }
-
-  /**
-   * @return the "current working directory" this {@link DirConverter} should use if the user fails
-   *         to provide an explicit directory in their input (required)
-   */
-  private File getWorkingDirectory() {
-    return Gfsh.getCurrentInstance().getHome();
-  }
-
-  @Override
-  public boolean supports(Class<?> type, String optionContext) {
-    if (String[].class.isAssignableFrom(type) && optionContext.equals(ConverterHint.DIRS)) {
-      return true;
-    }
-    return false;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/geode/blob/63ffe764/geode-core/src/main/java/org/apache/geode/management/internal/cli/converters/EnumConverter.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/converters/EnumConverter.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/converters/EnumConverter.java
deleted file mode 100644
index 354cef9..0000000
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/converters/EnumConverter.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-package org.apache.geode.management.internal.cli.converters;
-
-import java.util.List;
-
-import org.springframework.shell.core.Completion;
-import org.springframework.shell.core.Converter;
-import org.springframework.shell.core.MethodTarget;
-
-/**
- * {@link Converter} for {@link Enum}.
- *
- * @since GemFire 7.0
- */
-/*
- * Use this EnumConverter instead of SHL's EnumConverter. Added null check for existingData in
- * getAllPossibleValues
- * 
- * Original authors: Ben Alex & Alan Stewart
- */
-@SuppressWarnings("all") // Enum parameter warning
-public class EnumConverter implements Converter<Enum> {
-
-  public Enum convertFromText(final String value, final Class<?> requiredType,
-      final String optionContext) {
-    Class<Enum> enumClass = (Class<Enum>) requiredType;
-    return Enum.valueOf(enumClass, value);
-  }
-
-  public boolean getAllPossibleValues(final List<Completion> completions,
-      final Class<?> requiredType, final String existingData, final String optionContext,
-      final MethodTarget target) {
-    Class<Enum> enumClass = (Class<Enum>) requiredType;
-    for (Enum enumValue : enumClass.getEnumConstants()) {
-      String candidate = enumValue.name();
-      // GemFire/gfsh addition - check 'existingData == null'. GfshParser can
-      // pass existingData as null
-      if ("".equals(existingData) || existingData == null || candidate.startsWith(existingData)
-          || existingData.startsWith(candidate)
-          || candidate.toUpperCase().startsWith(existingData.toUpperCase())
-          || existingData.toUpperCase().startsWith(candidate.toUpperCase())) {
-        completions.add(new Completion(candidate));
-      }
-    }
-    return true;
-  }
-
-  public boolean supports(final Class<?> requiredType, final String optionContext) {
-    return Enum.class.isAssignableFrom(requiredType);
-  }
-}