Author: adietish
Date: 2011-07-12 09:08:23 -0400 (Tue, 12 Jul 2011)
New Revision: 32849
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/v7/DelegatingJBoss7ServerBehavior.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/v7/LocalJBoss7BehaviorDelegate.java
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/AbstractRSEBehaviourDelegate.java
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/RSEBehaviourDelegate.java
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/RSEJBoss7BehaviourDelegate.java
Log:
[JBIDE-9215] added remote stopping
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/v7/DelegatingJBoss7ServerBehavior.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/v7/DelegatingJBoss7ServerBehavior.java 2011-07-12
12:58:41 UTC (rev 32848)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/v7/DelegatingJBoss7ServerBehavior.java 2011-07-12
13:08:23 UTC (rev 32849)
@@ -135,53 +135,13 @@
createDoDeployMarker(new IPath[]{depPath}, monitor);
}
-
- protected IJBoss7ManagerService getService() throws Exception {
- if (service == null) {
- service = JBoss7ManagerUtil.getService(getServer());
- }
- return service;
- }
-
- private boolean isServerRunning(String host, int port) throws Exception {
- try {
- return getService().getServerState(host, port) == JBoss7ServerState.RUNNING;
- } catch (JBoss7ManangerConnectException e) {
- return false;
- }
- }
-
@Override
public void stop(boolean force) {
if( LaunchCommandPreferences.isIgnoreLaunchCommand(getServer())) {
super.setServerStopped();
return;
}
- try {
- if (force) {
- if( serverProcess != null )
- serverProcess.terminate();
- } else {
- setServerStopping();
- String host = getServer().getHost();
- JBoss7Server server = ServerConverter.checkedGetJBossServer(getServer(),
JBoss7Server.class);
- int mgmtPort = server.getManagementPort();
- // TODO: for now only local, implement for remote afterwards
- if (isServerRunning(host, mgmtPort)) {
- // The service and Poller will make sure the server is down
- getService().stop(host, mgmtPort);
- return;
- } else {
- if( serverProcess != null && !serverProcess.isTerminated()) {
- serverProcess.terminate();
- }
- }
- }
- } catch (Exception e) {
- IStatus status = new Status(IStatus.ERROR, JBossServerCorePlugin.PLUGIN_ID,
MessageFormat.format(Messages.JBoss7ServerBehavior_could_not_stop, getServer().getName()),
e);
- JBossServerCorePlugin.getDefault().getLog().log(status);
- }
- setServerStopped();
+ getDelegate().stop(force);
}
@Override
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/v7/LocalJBoss7BehaviorDelegate.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/v7/LocalJBoss7BehaviorDelegate.java 2011-07-12
12:58:41 UTC (rev 32848)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/v7/LocalJBoss7BehaviorDelegate.java 2011-07-12
13:08:23 UTC (rev 32849)
@@ -10,12 +10,18 @@
******************************************************************************/
package org.jboss.ide.eclipse.as.core.server.internal.v7;
+import java.text.MessageFormat;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.server.core.IServer;
+import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
+import org.jboss.ide.eclipse.as.core.Messages;
import org.jboss.ide.eclipse.as.core.extensions.polling.WebPortPoller;
+import org.jboss.ide.eclipse.as.core.server.IJBoss7ManagerService;
import org.jboss.ide.eclipse.as.core.server.IServerStatePoller;
import org.jboss.ide.eclipse.as.core.server.internal.LocalJBossBehaviorDelegate;
import org.jboss.ide.eclipse.as.core.util.PollThreadUtils;
+import org.jboss.ide.eclipse.as.core.util.ServerConverter;
public class LocalJBoss7BehaviorDelegate extends LocalJBossBehaviorDelegate {
@@ -24,6 +30,33 @@
}
@Override
+ public void stop(boolean force) {
+ if (force) {
+ forceStop();
+ } else {
+ IStatus result = gracefullStop();
+ if (!result.isOK()) {
+ forceStop();
+ }
+ }
+ }
+
+ @Override
+ protected IStatus gracefullStop() {
+ IServer server = getServer();
+ try {
+ IJBoss7ManagerService service = JBoss7ManagerUtil.getService(server);
+ JBoss7Server jbossServer = ServerConverter.checkedGetJBossServer(server,
JBoss7Server.class);
+ service.stop(jbossServer.getHost(), jbossServer.getManagementPort());
+ return Status.OK_STATUS;
+ } catch (Exception e) {
+ return new Status(
+ IStatus.ERROR, JBossServerCorePlugin.PLUGIN_ID,
+ MessageFormat.format(Messages.JBoss7ServerBehavior_could_not_stop,
server.getName()), e);
+ }
+ }
+
+ @Override
protected void pollServer(final boolean expectedState) {
// IF shutting down a process started OUTSIDE of eclipse, force use the web poller,
// since there's no process watch for shutdowns
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/AbstractRSEBehaviourDelegate.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/AbstractRSEBehaviourDelegate.java 2011-07-12
12:58:41 UTC (rev 32848)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/AbstractRSEBehaviourDelegate.java 2011-07-12
13:08:23 UTC (rev 32849)
@@ -15,16 +15,9 @@
import java.text.MessageFormat;
import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.rse.services.shells.IHostShell;
import org.eclipse.wst.server.core.IServer;
-import org.jboss.ide.eclipse.as.core.extensions.events.ServerLogger;
import org.jboss.ide.eclipse.as.core.server.IServerStatePoller;
import org.jboss.ide.eclipse.as.core.server.internal.AbstractJBossBehaviourDelegate;
-import org.jboss.ide.eclipse.as.core.util.LaunchCommandPreferences;
-import org.jboss.ide.eclipse.as.rse.core.RSEHostShellModel.ServerShellModel;
public abstract class AbstractRSEBehaviourDelegate extends AbstractJBossBehaviourDelegate
{
@@ -52,29 +45,6 @@
setServerStopped();
}
- @Override
- protected IStatus gracefullStop() {
- try {
- executeShutdownCommand(getShutdownCommand(getServer()));
- return Status.OK_STATUS;
- } catch(CoreException ce) {
- ServerLogger.getDefault().log(getServer(), ce.getStatus());
- return new Status(
- IStatus.ERROR, RSECorePlugin.PLUGIN_ID,
- MessageFormat.format("Could not stop server {0}", getServer().getName()),
- ce);
- }
- }
-
- private void executeShutdownCommand(String shutdownCommand) throws CoreException {
- ServerShellModel model = RSEHostShellModel.getInstance().getModel(getServer());
- model.executeRemoteCommand("/", shutdownCommand, new String[]{}, new
NullProgressMonitor(), 10000, true);
- IHostShell shell = model.getStartupShell();
- if( RSEUtils.isActive(shell)) {
- shell.writeToShell("exit");
- }
- }
-
protected abstract String getShutdownCommand(IServer server) throws CoreException;
/**
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/RSEBehaviourDelegate.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/RSEBehaviourDelegate.java 2011-07-12
12:58:41 UTC (rev 32848)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/RSEBehaviourDelegate.java 2011-07-12
13:08:23 UTC (rev 32849)
@@ -12,12 +12,19 @@
******************************************************************************/
package org.jboss.ide.eclipse.as.rse.core;
+import java.text.MessageFormat;
+
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.rse.services.shells.IHostShell;
import org.eclipse.wst.server.core.IServer;
+import org.jboss.ide.eclipse.as.core.extensions.events.ServerLogger;
import org.jboss.ide.eclipse.as.core.server.IServerStatePoller;
import org.jboss.ide.eclipse.as.core.util.ServerUtil;
+import org.jboss.ide.eclipse.as.rse.core.RSEHostShellModel.ServerShellModel;
public class RSEBehaviourDelegate extends AbstractRSEBehaviourDelegate {
@@ -29,6 +36,29 @@
}
@Override
+ protected IStatus gracefullStop() {
+ try {
+ executeShutdownCommand(getShutdownCommand(getServer()));
+ return Status.OK_STATUS;
+ } catch(CoreException ce) {
+ ServerLogger.getDefault().log(getServer(), ce.getStatus());
+ return new Status(
+ IStatus.ERROR, RSECorePlugin.PLUGIN_ID,
+ MessageFormat.format("Could not stop server {0}", getServer().getName()),
+ ce);
+ }
+ }
+
+ private void executeShutdownCommand(String shutdownCommand) throws CoreException {
+ ServerShellModel model = RSEHostShellModel.getInstance().getModel(getServer());
+ model.executeRemoteCommand("/", shutdownCommand, new String[]{}, new
NullProgressMonitor(), 10000, true);
+ IHostShell shell = model.getStartupShell();
+ if( RSEUtils.isActive(shell)) {
+ shell.writeToShell("exit");
+ }
+ }
+
+ @Override
public void serverIsStarting() {
pollServer(IServerStatePoller.SERVER_UP);
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/RSEJBoss7BehaviourDelegate.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/RSEJBoss7BehaviourDelegate.java 2011-07-12
12:58:41 UTC (rev 32848)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/RSEJBoss7BehaviourDelegate.java 2011-07-12
13:08:23 UTC (rev 32849)
@@ -12,11 +12,21 @@
******************************************************************************/
package org.jboss.ide.eclipse.as.rse.core;
+import java.text.MessageFormat;
+
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.wst.server.core.IServer;
+import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
+import org.jboss.ide.eclipse.as.core.Messages;
+import org.jboss.ide.eclipse.as.core.server.IJBoss7ManagerService;
import org.jboss.ide.eclipse.as.core.server.IServerStatePoller;
+import org.jboss.ide.eclipse.as.core.server.internal.v7.JBoss7ManagerUtil;
+import org.jboss.ide.eclipse.as.core.server.internal.v7.JBoss7Server;
+import org.jboss.ide.eclipse.as.core.util.ServerConverter;
import org.jboss.ide.eclipse.as.core.util.ServerUtil;
public class RSEJBoss7BehaviourDelegate extends AbstractRSEBehaviourDelegate {
@@ -37,4 +47,20 @@
public void serverIsStopping() {
pollServer(IServerStatePoller.SERVER_DOWN);
}
+
+ @Override
+ protected IStatus gracefullStop() {
+ IServer server = getServer();
+ try {
+ IJBoss7ManagerService service = JBoss7ManagerUtil.getService(server);
+ JBoss7Server jbossServer = ServerConverter.checkedGetJBossServer(server,
JBoss7Server.class);
+ service.stop(jbossServer.getHost(), jbossServer.getManagementPort());
+ return Status.OK_STATUS;
+ } catch (Exception e) {
+ return new Status(
+ IStatus.ERROR, JBossServerCorePlugin.PLUGIN_ID,
+ MessageFormat.format(Messages.JBoss7ServerBehavior_could_not_stop,
server.getName()), e);
+ }
+ }
+
}