This is an automated email from the ASF dual-hosted git repository.
jinmeiliao pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new a0e1aee GEODE-5971: Have all offline commands extends
OfflineGfshCommand inst… (#2967)
a0e1aee is described below
commit a0e1aee58ac8c10fc1c73fc804af20efecc70802
Author: jinmeiliao <[email protected]>
AuthorDate: Fri Dec 7 12:15:14 2018 -0800
GEODE-5971: Have all offline commands extends OfflineGfshCommand inst…
(#2967)
* GEODE-5971: Have all offline commands extends OfflineGfshCommand instead
of InternalGfshCommand
* eventually InternalGfshCommand should be deleted and replaced with
GfshCommand
Co-authored-by: Peter Tran <[email protected]>
---
.../apache/geode/management/cli/GfshCommand.java | 8 +---
.../geode/management/internal/cli/LogWrapper.java | 10 ++++
.../internal/cli/commands/AlterRegionCommand.java | 3 +-
.../internal/cli/commands/ConnectCommand.java | 10 ++--
.../cli/commands/DescribeConnectionCommand.java | 2 +-
.../internal/cli/commands/DisconnectCommand.java | 4 +-
.../internal/cli/commands/EchoCommand.java | 2 +-
.../internal/cli/commands/ExitCommand.java | 2 +-
.../internal/cli/commands/InternalGfshCommand.java | 25 ----------
.../internal/cli/commands/OfflineGfshCommand.java | 53 ++++++++++++++++++++++
.../internal/cli/commands/SetVariableCommand.java | 2 +-
.../internal/cli/commands/StartLocatorCommand.java | 2 +-
.../internal/cli/commands/StartMemberUtils.java | 4 +-
.../internal/cli/commands/StartServerCommand.java | 2 +-
.../commands/lifecycle/StartJConsoleCommand.java | 30 ++++--------
.../commands/lifecycle/StartJVisualVMCommand.java | 4 +-
.../cli/commands/lifecycle/StartPulseCommand.java | 4 +-
.../cli/commands/lifecycle/StartVsdCommand.java | 4 +-
.../commands/lifecycle/StatusLocatorCommand.java | 6 +--
.../commands/lifecycle/StatusServerCommand.java | 6 +--
.../cli/commands/lifecycle/StopLocatorCommand.java | 4 +-
.../cli/commands/lifecycle/StopServerCommand.java | 4 +-
.../lifecycle/StartJConsoleCommandTest.java | 8 +++-
23 files changed, 113 insertions(+), 86 deletions(-)
diff --git
a/geode-core/src/main/java/org/apache/geode/management/cli/GfshCommand.java
b/geode-core/src/main/java/org/apache/geode/management/cli/GfshCommand.java
index bc5103b..52b9b3f 100644
--- a/geode-core/src/main/java/org/apache/geode/management/cli/GfshCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/cli/GfshCommand.java
@@ -45,10 +45,6 @@ public abstract class GfshCommand implements CommandMarker {
public static final String EXPERIMENTAL = "(Experimental) ";
private InternalCache cache;
- public boolean isConnectedAndReady() {
- Gfsh gfsh = Gfsh.getCurrentInstance();
- return gfsh != null && gfsh.isConnectedAndReady();
- }
public boolean isOnlineCommandAvailable() {
Gfsh gfsh = Gfsh.getCurrentInstance();
@@ -86,9 +82,9 @@ public abstract class GfshCommand implements CommandMarker {
return (T) ManagementService.getExistingManagementService(cache);
}
- public ConfigurationPersistenceService getConfigurationPersistenceService() {
+ public <T extends ConfigurationPersistenceService> T
getConfigurationPersistenceService() {
InternalLocator locator = InternalLocator.getLocator();
- return locator == null ? null :
locator.getConfigurationPersistenceService();
+ return locator == null ? null : (T)
locator.getConfigurationPersistenceService();
}
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/LogWrapper.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/LogWrapper.java
index 1dc721c..14965cc 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/LogWrapper.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/LogWrapper.java
@@ -57,6 +57,9 @@ public class LogWrapper {
logger.setUseParentHandlers(false);
}
+ /**
+ * Used in the manager when logging is required to be sent back to gfsh
+ */
public static LogWrapper getInstance(Cache cache) {
if (INSTANCE == null) {
synchronized (INSTANCE_LOCK) {
@@ -69,6 +72,13 @@ public class LogWrapper {
return INSTANCE;
}
+ /**
+ * used in the gfsh process
+ */
+ public static LogWrapper getInstance() {
+ return getInstance(null);
+ }
+
public void configure(GfshConfig config) {
if (config.isLoggingEnabled()) {
try {
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/AlterRegionCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/AlterRegionCommand.java
index 6d8175d..9c24efe 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/AlterRegionCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/AlterRegionCommand.java
@@ -26,6 +26,7 @@ import org.apache.geode.cache.CacheWriter;
import org.apache.geode.cache.CustomExpiry;
import org.apache.geode.cache.ExpirationAction;
import org.apache.geode.distributed.DistributedMember;
+import
org.apache.geode.distributed.internal.InternalConfigurationPersistenceService;
import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.ConverterHint;
@@ -138,7 +139,7 @@ public class AlterRegionCommand extends InternalGfshCommand
{
XmlEntity xmlEntity = findXmlEntity(regionAlterResults);
if (xmlEntity != null) {
persistClusterConfiguration(result,
- () -> getConfigurationPersistenceService()
+ () -> ((InternalConfigurationPersistenceService)
getConfigurationPersistenceService())
.addXmlEntity(xmlEntity, groups));
}
return result;
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ConnectCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ConnectCommand.java
index 6e603e9..d30b719 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ConnectCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ConnectCommand.java
@@ -70,7 +70,7 @@ import
org.apache.geode.management.internal.security.ResourceConstants;
import org.apache.geode.management.internal.web.shell.HttpOperationInvoker;
import org.apache.geode.security.AuthenticationFailedException;
-public class ConnectCommand extends InternalGfshCommand {
+public class ConnectCommand extends OfflineGfshCommand {
// millis that connect --locator will wait for a response from the locator.
static final int CONNECT_LOCATOR_TIMEOUT_MS = 60000; // see bug 45971
@@ -293,8 +293,8 @@ public class ConnectCommand extends InternalGfshCommand {
gfsh.setOperationInvoker(operationInvoker);
- LogWrapper.getInstance(getCache())
- .info(CliStrings.format(CliStrings.CONNECT__MSG__SUCCESS,
operationInvoker.toString()));
+ LogWrapper.getInstance().info(
+ CliStrings.format(CliStrings.CONNECT__MSG__SUCCESS,
operationInvoker.toString()));
return ResultBuilder.createInfoResult(
CliStrings.format(CliStrings.CONNECT__MSG__SUCCESS,
operationInvoker.toString()));
@@ -369,7 +369,7 @@ public class ConnectCommand extends InternalGfshCommand {
gfsh.setOperationInvoker(operationInvoker);
infoResultData.addLine(CliStrings.format(CliStrings.CONNECT__MSG__SUCCESS,
jmxHostPortToConnect.toString(false)));
-
LogWrapper.getInstance(getCache()).info(CliStrings.format(CliStrings.CONNECT__MSG__SUCCESS,
+
LogWrapper.getInstance().info(CliStrings.format(CliStrings.CONNECT__MSG__SUCCESS,
jmxHostPortToConnect.toString(false)));
return ResultBuilder.buildResult(infoResultData);
} catch (SecurityException | AuthenticationFailedException e) {
@@ -508,7 +508,7 @@ public class ConnectCommand extends InternalGfshCommand {
}
private Result handleException(Exception e, String errorMessage) {
- LogWrapper.getInstance(getCache()).severe(errorMessage, e);
+ LogWrapper.getInstance().severe(errorMessage, e);
return ResultBuilder.createConnectionErrorResult(errorMessage);
}
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeConnectionCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeConnectionCommand.java
index 32bfc94..a73b3d7 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeConnectionCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeConnectionCommand.java
@@ -26,7 +26,7 @@ import
org.apache.geode.management.internal.cli.result.TabularResultData;
import org.apache.geode.management.internal.cli.shell.Gfsh;
import org.apache.geode.management.internal.cli.shell.OperationInvoker;
-public class DescribeConnectionCommand extends InternalGfshCommand {
+public class DescribeConnectionCommand extends OfflineGfshCommand {
@CliCommand(value = {CliStrings.DESCRIBE_CONNECTION}, help =
CliStrings.DESCRIBE_CONNECTION__HELP)
@CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH,
CliStrings.TOPIC_GEODE_JMX})
public Result describeConnection() {
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DisconnectCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DisconnectCommand.java
index ea02992..eb33973 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DisconnectCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DisconnectCommand.java
@@ -26,7 +26,7 @@ import
org.apache.geode.management.internal.cli.result.ResultBuilder;
import org.apache.geode.management.internal.cli.shell.Gfsh;
import org.apache.geode.management.internal.cli.shell.OperationInvoker;
-public class DisconnectCommand extends InternalGfshCommand {
+public class DisconnectCommand extends OfflineGfshCommand {
@CliCommand(value = {CliStrings.DISCONNECT}, help =
CliStrings.DISCONNECT__HELP)
@CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH,
CliStrings.TOPIC_GEODE_JMX,
CliStrings.TOPIC_GEODE_MANAGER})
@@ -45,7 +45,7 @@ public class DisconnectCommand extends InternalGfshCommand {
operationInvoker.stop();
infoResultData.addLine(CliStrings.format(CliStrings.DISCONNECT__MSG__DISCONNECTED,
operationInvoker.toString()));
- LogWrapper.getInstance(getCache()).info(CliStrings
+ LogWrapper.getInstance().info(CliStrings
.format(CliStrings.DISCONNECT__MSG__DISCONNECTED,
operationInvoker.toString()));
if (!gfshInstance.isHeadlessMode()) {
gfshInstance.setPromptPath(gfshInstance.getEnvAppContextPath());
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/EchoCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/EchoCommand.java
index a53abf1..79c9fa9 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/EchoCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/EchoCommand.java
@@ -28,7 +28,7 @@ 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;
-public class EchoCommand extends InternalGfshCommand {
+public class EchoCommand extends OfflineGfshCommand {
@CliCommand(value = {CliStrings.ECHO}, help = CliStrings.ECHO__HELP)
@CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH})
public Result echo(@CliOption(key = {CliStrings.ECHO__STR, ""},
specifiedDefaultValue = "",
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExitCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExitCommand.java
index 785554d..d050559 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExitCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExitCommand.java
@@ -22,7 +22,7 @@ import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.shell.Gfsh;
-public class ExitCommand extends InternalGfshCommand {
+public class ExitCommand extends OfflineGfshCommand {
@CliCommand(value = {CliStrings.EXIT, "quit"}, help = CliStrings.EXIT__HELP)
@CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH})
public ExitShellRequest exit() {
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/InternalGfshCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/InternalGfshCommand.java
index 080b148..9f065ae 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/InternalGfshCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/InternalGfshCommand.java
@@ -17,12 +17,9 @@ package org.apache.geode.management.internal.cli.commands;
import java.util.List;
import java.util.Objects;
-import
org.apache.geode.distributed.internal.InternalConfigurationPersistenceService;
-import org.apache.geode.management.ManagementService;
import org.apache.geode.management.cli.GfshCommand;
import org.apache.geode.management.cli.Result;
import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
-import org.apache.geode.management.internal.cli.shell.Gfsh;
import org.apache.geode.management.internal.configuration.domain.XmlEntity;
/**
@@ -51,26 +48,4 @@ public abstract class InternalGfshCommand extends
GfshCommand {
return functionResults.stream().filter(CliFunctionResult::isSuccessful)
.map(CliFunctionResult::getXmlEntity).filter(Objects::nonNull).findFirst().orElse(null);
}
-
- public boolean isDebugging() {
- return getGfsh() != null && getGfsh().getDebug();
- }
-
- public boolean isLogging() {
- return getGfsh() != null;
- }
-
- public Gfsh getGfsh() {
- return Gfsh.getCurrentInstance();
- }
-
- public ManagementService getManagementService() {
- return ManagementService.getExistingManagementService(getCache());
- }
-
- @Override
- public InternalConfigurationPersistenceService
getConfigurationPersistenceService() {
- return (InternalConfigurationPersistenceService)
super.getConfigurationPersistenceService();
- }
-
}
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/OfflineGfshCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/OfflineGfshCommand.java
new file mode 100644
index 0000000..001cc1e
--- /dev/null
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/OfflineGfshCommand.java
@@ -0,0 +1,53 @@
+/*
+ * 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.commands;
+
+
+import javax.management.remote.JMXServiceURL;
+
+import org.springframework.shell.core.CommandMarker;
+
+import org.apache.geode.management.internal.cli.shell.Gfsh;
+import org.apache.geode.management.internal.cli.shell.JmxOperationInvoker;
+import org.apache.geode.management.internal.cli.shell.OperationInvoker;
+
+public abstract class OfflineGfshCommand implements CommandMarker {
+
+ public boolean isDebugging() {
+ return getGfsh() != null && getGfsh().getDebug();
+ }
+
+ public boolean isLogging() {
+ return getGfsh() != null;
+ }
+
+ public Gfsh getGfsh() {
+ return Gfsh.getCurrentInstance();
+ }
+
+ public JMXServiceURL getJmxServiceUrl() {
+ OperationInvoker operationInvoker = getGfsh().getOperationInvoker();
+ if (operationInvoker instanceof JmxOperationInvoker) {
+ return ((JmxOperationInvoker) operationInvoker).getJmxServiceUrl();
+ }
+
+ return null;
+ }
+
+ public boolean isConnectedAndReady() {
+ Gfsh gfsh = Gfsh.getCurrentInstance();
+ return gfsh != null && gfsh.isConnectedAndReady();
+ }
+}
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/SetVariableCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/SetVariableCommand.java
index f26a7c2..cb022a8 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/SetVariableCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/SetVariableCommand.java
@@ -24,7 +24,7 @@ import
org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.result.ErrorResultData;
import org.apache.geode.management.internal.cli.result.ResultBuilder;
-public class SetVariableCommand extends InternalGfshCommand {
+public class SetVariableCommand extends OfflineGfshCommand {
@CliCommand(value = {CliStrings.SET_VARIABLE}, help =
CliStrings.SET_VARIABLE__HELP)
@CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GFSH})
public Result setVariable(
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartLocatorCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartLocatorCommand.java
index 0874a04..e3bb519 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartLocatorCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartLocatorCommand.java
@@ -56,7 +56,7 @@ import
org.apache.geode.management.internal.cli.util.HostUtils;
import
org.apache.geode.management.internal.configuration.utils.ClusterConfigurationStatusRetriever;
import org.apache.geode.security.AuthenticationFailedException;
-public class StartLocatorCommand extends InternalGfshCommand {
+public class StartLocatorCommand extends OfflineGfshCommand {
@CliCommand(value = CliStrings.START_LOCATOR, help =
CliStrings.START_LOCATOR__HELP)
@CliMetaData(shellOnly = true,
relatedTopic = {CliStrings.TOPIC_GEODE_LOCATOR,
CliStrings.TOPIC_GEODE_LIFECYCLE})
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartMemberUtils.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartMemberUtils.java
index f68b6ac..ee5ff1c 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartMemberUtils.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartMemberUtils.java
@@ -141,7 +141,7 @@ public class StartMemberUtils {
}
}
- static void addCurrentLocators(InternalGfshCommand gfshCommand, final
List<String> commandLine,
+ static void addCurrentLocators(OfflineGfshCommand gfshCommand, final
List<String> commandLine,
final Properties gemfireProperties) throws MalformedObjectNameException {
if (StringUtils.isBlank(gemfireProperties.getProperty(LOCATORS))) {
String currentLocators = getCurrentLocators(gfshCommand);
@@ -152,7 +152,7 @@ public class StartMemberUtils {
}
}
- private static String getCurrentLocators(InternalGfshCommand gfshCommand)
+ private static String getCurrentLocators(OfflineGfshCommand gfshCommand)
throws MalformedObjectNameException {
String delimitedLocators = "";
try {
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartServerCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartServerCommand.java
index 8d37214..5f7ce8d 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartServerCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StartServerCommand.java
@@ -48,7 +48,7 @@ import
org.apache.geode.management.internal.cli.result.model.ResultModel;
import org.apache.geode.management.internal.cli.shell.Gfsh;
import org.apache.geode.management.internal.security.ResourceConstants;
-public class StartServerCommand extends InternalGfshCommand {
+public class StartServerCommand extends OfflineGfshCommand {
private static final String SERVER_TERM_NAME = "Server";
@CliCommand(value = CliStrings.START_SERVER, help =
CliStrings.START_SERVER__HELP)
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartJConsoleCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartJConsoleCommand.java
index 0aa4b7c..bc1d4b9 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartJConsoleCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartJConsoleCommand.java
@@ -23,22 +23,22 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import javax.management.remote.JMXServiceURL;
+
import org.apache.commons.lang3.StringUtils;
import org.springframework.shell.core.annotation.CliCommand;
import org.springframework.shell.core.annotation.CliOption;
-import org.apache.geode.internal.lang.ObjectUtils;
import org.apache.geode.internal.util.IOUtils;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.internal.cli.GfshParser;
-import org.apache.geode.management.internal.cli.commands.InternalGfshCommand;
+import org.apache.geode.management.internal.cli.commands.OfflineGfshCommand;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.result.model.InfoResultModel;
import org.apache.geode.management.internal.cli.result.model.ResultModel;
-import org.apache.geode.management.internal.cli.shell.JmxOperationInvoker;
import org.apache.geode.management.internal.cli.util.JdkTool;
-public class StartJConsoleCommand extends InternalGfshCommand {
+public class StartJConsoleCommand extends OfflineGfshCommand {
@CliCommand(value = CliStrings.START_JCONSOLE, help =
CliStrings.START_JCONSOLE__HELP)
@CliMetaData(shellOnly = true, relatedTopic =
{CliStrings.TOPIC_GEODE_MANAGER,
@@ -63,7 +63,7 @@ public class StartJConsoleCommand extends InternalGfshCommand
{
ResultModel resultModel = new ResultModel();
InfoResultModel infoResult = resultModel.addInfo();
if (isDebugging()) {
- infoResult.addLine(
+ getGfsh().printAsInfo(
String.format("JConsole command-line ($1%s)",
Arrays.toString(jconsoleCommandLine)));
}
@@ -76,7 +76,7 @@ public class StartJConsoleCommand extends InternalGfshCommand
{
message = getErrorStringBuilder(jconsoleProcess);
} else {
message = new StringBuilder();
- message.append(CliStrings.START_JCONSOLE__RUN);
+ getGfsh().printAsInfo(CliStrings.START_JCONSOLE__RUN);
String jconsoleProcessOutput = getProcessOutput(jconsoleProcess);
@@ -141,24 +141,12 @@ public class StartJConsoleCommand extends
InternalGfshCommand {
}
}
- String jmxServiceUrl = getJmxServiceUrlAsString();
-
- if (StringUtils.isNotBlank(jmxServiceUrl)) {
- commandLine.add(jmxServiceUrl);
+ JMXServiceURL jmxServiceUrl = getJmxServiceUrl();
+ if (isConnectedAndReady() && jmxServiceUrl != null) {
+ commandLine.add(jmxServiceUrl.toString());
}
}
return commandLine.toArray(new String[commandLine.size()]);
}
-
- String getJmxServiceUrlAsString() {
- if (isConnectedAndReady()
- && (getGfsh().getOperationInvoker() instanceof JmxOperationInvoker)) {
- JmxOperationInvoker jmxOperationInvoker =
- (JmxOperationInvoker) getGfsh().getOperationInvoker();
-
- return ObjectUtils.toString(jmxOperationInvoker.getJmxServiceUrl());
- }
- return null;
- }
}
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartJVisualVMCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartJVisualVMCommand.java
index 8bc523f..ed4759a 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartJVisualVMCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartJVisualVMCommand.java
@@ -29,13 +29,13 @@ import org.apache.geode.internal.lang.StringUtils;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.Result;
import org.apache.geode.management.internal.cli.GfshParser;
-import org.apache.geode.management.internal.cli.commands.InternalGfshCommand;
+import org.apache.geode.management.internal.cli.commands.OfflineGfshCommand;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.result.InfoResultData;
import org.apache.geode.management.internal.cli.result.ResultBuilder;
import org.apache.geode.management.internal.cli.util.JdkTool;
-public class StartJVisualVMCommand extends InternalGfshCommand {
+public class StartJVisualVMCommand extends OfflineGfshCommand {
@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})
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartPulseCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartPulseCommand.java
index 6b499da..ad21e98 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartPulseCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartPulseCommand.java
@@ -30,12 +30,12 @@ import org.apache.geode.internal.lang.StringUtils;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.Result;
import org.apache.geode.management.internal.ManagementConstants;
-import org.apache.geode.management.internal.cli.commands.InternalGfshCommand;
+import org.apache.geode.management.internal.cli.commands.OfflineGfshCommand;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.result.ResultBuilder;
import org.apache.geode.management.internal.cli.shell.OperationInvoker;
-public class StartPulseCommand extends InternalGfshCommand {
+public class StartPulseCommand extends OfflineGfshCommand {
@CliCommand(value = CliStrings.START_PULSE, help =
CliStrings.START_PULSE__HELP)
@CliMetaData(shellOnly = true, relatedTopic =
{CliStrings.TOPIC_GEODE_MANAGER,
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartVsdCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartVsdCommand.java
index e531821..b95a917 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartVsdCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartVsdCommand.java
@@ -36,12 +36,12 @@ import org.apache.geode.internal.lang.SystemUtils;
import org.apache.geode.internal.util.IOUtils;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.Result;
-import org.apache.geode.management.internal.cli.commands.InternalGfshCommand;
+import org.apache.geode.management.internal.cli.commands.OfflineGfshCommand;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.result.InfoResultData;
import org.apache.geode.management.internal.cli.result.ResultBuilder;
-public class StartVsdCommand extends InternalGfshCommand {
+public class StartVsdCommand extends OfflineGfshCommand {
@CliCommand(value = CliStrings.START_VSD, help = CliStrings.START_VSD__HELP)
@CliMetaData(shellOnly = true,
relatedTopic = {CliStrings.TOPIC_GEODE_M_AND_M,
CliStrings.TOPIC_GEODE_STATISTICS})
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusLocatorCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusLocatorCommand.java
index 5fc6c07..05693ce 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusLocatorCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusLocatorCommand.java
@@ -19,22 +19,22 @@ import static
org.apache.geode.management.internal.cli.shell.MXBeanProvider.getM
import java.io.IOException;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.shell.core.annotation.CliCommand;
import org.springframework.shell.core.annotation.CliOption;
import org.apache.geode.distributed.AbstractLauncher;
import org.apache.geode.distributed.LocatorLauncher;
-import org.apache.geode.internal.lang.StringUtils;
import org.apache.geode.management.MemberMXBean;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.ConverterHint;
-import org.apache.geode.management.internal.cli.commands.InternalGfshCommand;
+import org.apache.geode.management.internal.cli.commands.OfflineGfshCommand;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.result.model.InfoResultModel;
import org.apache.geode.management.internal.cli.result.model.ResultModel;
import
org.apache.geode.management.internal.configuration.utils.ClusterConfigurationStatusRetriever;
-public class StatusLocatorCommand extends InternalGfshCommand {
+public class StatusLocatorCommand extends OfflineGfshCommand {
@CliCommand(value = CliStrings.STATUS_LOCATOR, help =
CliStrings.STATUS_LOCATOR__HELP)
@CliMetaData(shellOnly = true,
relatedTopic = {CliStrings.TOPIC_GEODE_LOCATOR,
CliStrings.TOPIC_GEODE_LIFECYCLE})
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusServerCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusServerCommand.java
index 725cb21..cd401f5 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusServerCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StatusServerCommand.java
@@ -18,20 +18,20 @@ import static
org.apache.geode.management.internal.cli.shell.MXBeanProvider.getM
import java.io.IOException;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.shell.core.annotation.CliCommand;
import org.springframework.shell.core.annotation.CliOption;
import org.apache.geode.distributed.AbstractLauncher;
import org.apache.geode.distributed.ServerLauncher;
-import org.apache.geode.internal.lang.StringUtils;
import org.apache.geode.management.MemberMXBean;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.ConverterHint;
-import org.apache.geode.management.cli.GfshCommand;
+import org.apache.geode.management.internal.cli.commands.OfflineGfshCommand;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.result.model.ResultModel;
-public class StatusServerCommand extends GfshCommand {
+public class StatusServerCommand extends OfflineGfshCommand {
@CliCommand(value = CliStrings.STATUS_SERVER, help =
CliStrings.STATUS_SERVER__HELP)
@CliMetaData(shellOnly = true,
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StopLocatorCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StopLocatorCommand.java
index 6690ab2..2cd1dc9 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StopLocatorCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StopLocatorCommand.java
@@ -29,12 +29,12 @@ import org.apache.geode.internal.util.StopWatch;
import org.apache.geode.management.MemberMXBean;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.ConverterHint;
-import org.apache.geode.management.internal.cli.commands.InternalGfshCommand;
+import org.apache.geode.management.internal.cli.commands.OfflineGfshCommand;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.result.model.ResultModel;
import org.apache.geode.management.internal.cli.shell.Gfsh;
-public class StopLocatorCommand extends InternalGfshCommand {
+public class StopLocatorCommand extends OfflineGfshCommand {
private static final long
WAITING_FOR_STOP_TO_MAKE_PID_GO_AWAY_TIMEOUT_MILLIS = 30 * 1000;
@CliCommand(value = CliStrings.STOP_LOCATOR, help =
CliStrings.STOP_LOCATOR__HELP)
diff --git
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StopServerCommand.java
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StopServerCommand.java
index bea88d1..a8807e2 100644
---
a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StopServerCommand.java
+++
b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/lifecycle/StopServerCommand.java
@@ -28,12 +28,12 @@ import org.apache.geode.internal.util.StopWatch;
import org.apache.geode.management.MemberMXBean;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.ConverterHint;
-import org.apache.geode.management.internal.cli.commands.InternalGfshCommand;
+import org.apache.geode.management.internal.cli.commands.OfflineGfshCommand;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.result.model.ResultModel;
import org.apache.geode.management.internal.cli.shell.Gfsh;
-public class StopServerCommand extends InternalGfshCommand {
+public class StopServerCommand extends OfflineGfshCommand {
private static final long
WAITING_FOR_STOP_TO_MAKE_PID_GO_AWAY_TIMEOUT_MILLIS = 30 * 1000;
@CliCommand(value = CliStrings.STOP_SERVER, help =
CliStrings.STOP_SERVER__HELP)
diff --git
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartJConsoleCommandTest.java
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartJConsoleCommandTest.java
index c018b13..619f992 100644
---
a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartJConsoleCommandTest.java
+++
b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/lifecycle/StartJConsoleCommandTest.java
@@ -23,6 +23,8 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
+import javax.management.remote.JMXServiceURL;
+
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -45,6 +47,7 @@ public class StartJConsoleCommandTest {
command = spy(StartJConsoleCommand.class);
gfsh = mock(Gfsh.class);
doReturn(gfsh).when(command).getGfsh();
+ doReturn(null).when(command).getJmxServiceUrl();
Process process = mock(Process.class);
doReturn(process).when(command).getProcess(any(String[].class));
@@ -86,7 +89,8 @@ public class StartJConsoleCommandTest {
@Test
public void successWithServiceUrl() throws Exception {
- doReturn("someUrl.com").when(command).getJmxServiceUrlAsString();
+ doReturn(new
JMXServiceURL("service:jmx:rmi://localhost")).when(command).getJmxServiceUrl();
+ doReturn(true).when(command).isConnectedAndReady();
gfshParser.executeAndAssertThat(command, "start jconsole")
.containsOutput("some output");
@@ -95,6 +99,6 @@ public class StartJConsoleCommandTest {
assertThat(commandString).hasSize(3);
assertThat(commandString[0]).contains("jconsole");
assertThat(commandString[1]).isEqualTo("-interval=4");
- assertThat(commandString[2]).isEqualTo("someUrl.com");
+ assertThat(commandString[2]).isEqualTo("service:jmx:rmi://localhost");
}
}