http://git-wip-us.apache.org/repos/asf/geode/blob/1fc0f0ca/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/1fc0f0ca/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/1fc0f0ca/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/1fc0f0ca/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/1fc0f0ca/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/1fc0f0ca/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/1fc0f0ca/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/1fc0f0ca/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/1fc0f0ca/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/1fc0f0ca/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/1fc0f0ca/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/1fc0f0ca/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/1fc0f0ca/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/1fc0f0ca/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/1fc0f0ca/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/1fc0f0ca/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/1fc0f0ca/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); - } -}
