Author: rob.stryker(a)jboss.com
Date: 2010-11-15 05:39:41 -0500 (Mon, 15 Nov 2010)
New Revision: 26546
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/xpl/
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/xpl/ConnectAllSubsystemsUtil.java
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServer.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServerBehavior.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/LocalJBossBehaviorDelegate.java
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/ServerListener.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/RSELaunchDelegate.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/wizards/JBossServerWizardFragment.java
Log:
JBIDE-7580 - acknowledging existing running server
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServer.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServer.java 2010-11-15
10:38:07 UTC (rev 26545)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServer.java 2010-11-15
10:39:41 UTC (rev 26546)
@@ -27,6 +27,7 @@
import org.jboss.ide.eclipse.as.core.server.IDeployableServer;
import org.jboss.ide.eclipse.as.core.server.IJBossServerConstants;
import org.jboss.ide.eclipse.as.core.server.IJBossServerRuntime;
+import org.jboss.ide.eclipse.as.core.util.IJBossToolingConstants;
import org.jboss.ide.eclipse.as.core.util.ServerUtil;
/**
@@ -44,8 +45,15 @@
super.setDefaults(monitor);
setAttribute("auto-publish-time", 1); //$NON-NLS-1$
setAttribute("id", getAttribute("id", (String)"") + new
Date().getTime()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ setUsername("admin"); //$NON-NLS-1$
+ setPassword("admin"); //$NON-NLS-1$
+ setDeployLocationType(isAS50() ? IDeployableServer.DEPLOY_SERVER :
IDeployableServer.DEPLOY_METADATA);
}
+ private boolean isAS50() {
+ return
getServer().getServerType().getRuntimeType().getId().equals(IJBossToolingConstants.SERVER_AS_50);
+ }
+
public String getHost() {
return getServer().getHost();
}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServerBehavior.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServerBehavior.java 2010-11-15
10:38:07 UTC (rev 26545)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServerBehavior.java 2010-11-15
10:39:41 UTC (rev 26546)
@@ -29,6 +29,7 @@
public class JBossServerBehavior extends DeployableServerBehavior {
public static interface JBossBehaviourDelegate {
+ public String getBehaviourTypeId();
public void setActualBehaviour(JBossServerBehavior actualBehaviour);
public void stop(boolean force);
public void publishStart(final IProgressMonitor monitor) throws CoreException;
@@ -56,7 +57,7 @@
public JBossBehaviourDelegate getDelegate() {
IJBossServerPublishMethodType type =
DeploymentPreferenceLoader.getCurrentDeploymentMethodType(getServer());
String id = type == null ? LocalPublishMethod.LOCAL_PUBLISH_METHOD : type.getId();
- if( id.equals(lastModeId))
+ if( id.equals(lastModeId) && delegate != null &&
delegate.getBehaviourTypeId().equals(id))
return delegate;
Class c = delegateClassMap.get(id);
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/LocalJBossBehaviorDelegate.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/LocalJBossBehaviorDelegate.java 2010-11-15
10:38:07 UTC (rev 26545)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/LocalJBossBehaviorDelegate.java 2010-11-15
10:39:41 UTC (rev 26546)
@@ -33,6 +33,7 @@
import org.jboss.ide.eclipse.as.core.extensions.jmx.JBossServerConnectionProvider;
import org.jboss.ide.eclipse.as.core.extensions.jmx.JMXClassLoaderRepository;
import
org.jboss.ide.eclipse.as.core.extensions.polling.ProcessTerminatedPoller.IProcessProvider;
+import org.jboss.ide.eclipse.as.core.publishers.LocalPublishMethod;
import org.jboss.ide.eclipse.as.core.server.IJBossServerRuntime;
import org.jboss.ide.eclipse.as.core.server.IServerStatePoller;
import
org.jboss.ide.eclipse.as.core.server.internal.JBossServerBehavior.JBossBehaviourDelegate;
@@ -55,7 +56,9 @@
public LocalJBossBehaviorDelegate() {
super();
}
-
+ public String getBehaviourTypeId() {
+ return LocalPublishMethod.LOCAL_PUBLISH_METHOD;
+ }
public void stop(boolean force) {
int state = getServer().getServerState();
if( force || process == null || process.isTerminated() || state ==
IServer.STATE_STOPPED || nextStopRequiresForce) {
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/ServerListener.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/ServerListener.java 2010-11-15
10:38:07 UTC (rev 26545)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/ServerListener.java 2010-11-15
10:39:41 UTC (rev 26546)
@@ -16,13 +16,10 @@
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
-import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.wst.server.core.IModule;
-import org.eclipse.wst.server.core.IRuntime;
import org.eclipse.wst.server.core.IServer;
import org.eclipse.wst.server.core.ServerEvent;
import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
@@ -31,9 +28,6 @@
import org.jboss.ide.eclipse.as.core.extensions.events.ServerLogger;
import org.jboss.ide.eclipse.as.core.extensions.jmx.JBossServerConnectionProvider;
import org.jboss.ide.eclipse.as.core.publishers.PublishUtil;
-import org.jboss.ide.eclipse.as.core.server.IDeployableServer;
-import org.jboss.ide.eclipse.as.core.server.IJBossServerConstants;
-import org.jboss.ide.eclipse.as.core.server.IJBossServerRuntime;
import org.jboss.ide.eclipse.as.core.server.UnitedServerListener;
import org.jboss.ide.eclipse.as.core.util.FileUtil;
import org.jboss.ide.eclipse.as.core.util.IJBossRuntimeConstants;
@@ -64,19 +58,22 @@
IServer server = event.getServer();
JBossServer jbs = (JBossServer)server.loadAdapter(JBossServer.class, new
NullProgressMonitor());
if( jbs != null ) {
- doDeploymentAddition(event);
+ String[] folders = getDeployLocationFolders(server);
+ if( folders.length > 0 )
+ doDeploymentAddition(event, folders);
}
}
- protected void doDeploymentAddition(final ServerEvent event) {
+ protected void doDeploymentAddition(final ServerEvent event, final String[] folders) {
int eventKind = event.getKind();
if ((eventKind & ServerEvent.SERVER_CHANGE) != 0) {
// server change event
if ((eventKind & ServerEvent.STATE_CHANGE) != 0) {
if( event.getServer().getServerState() == IServer.STATE_STARTED ) {
+
IJMXRunnable r = new IJMXRunnable() {
public void run(MBeanServerConnection connection) throws Exception {
- ensureDeployLocationAdded(event.getServer(), connection);
+ ensureDeployLocationAdded(event.getServer(), connection, folders);
}
};
try {
@@ -92,21 +89,22 @@
}
}
- protected void ensureDeployLocationAdded(IServer server, MBeanServerConnection
connection) throws Exception {
+ protected String[] getDeployLocationFolders(IServer server) {
JBossServer ds = ServerConverter.getJBossServer(server);
ArrayList<String> folders = new ArrayList<String>();
// add the server folder deploy loc. first
String insideServer = JBossServer.getDeployFolder(ds, JBossServer.DEPLOY_SERVER);
String metadata = JBossServer.getDeployFolder(ds, JBossServer.DEPLOY_METADATA);
String custom = JBossServer.getDeployFolder(ds, JBossServer.DEPLOY_CUSTOM);
+ String type = ds.getDeployLocationType();
String serverHome = null;
if (server != null && server.getRuntime()!= null &&
server.getRuntime().getLocation() != null) {
serverHome = server.getRuntime().getLocation().toString();
}
folders.add(insideServer);
- if( !folders.contains(metadata))
+ if( type.equals(JBossServer.DEPLOY_METADATA) && !folders.contains(metadata))
folders.add(metadata);
- if( !folders.contains(custom) && !custom.equals(serverHome))
+ if( type.equals(JBossServer.DEPLOY_CUSTOM) && !folders.contains(custom)
&& !custom.equals(serverHome))
folders.add(custom);
IModule[] modules2 =
org.eclipse.wst.server.core.ServerUtil.getModules(server.getServerType().getRuntimeType().getModuleTypes());
@@ -124,6 +122,16 @@
}
folders.remove(insideServer); // doesn't need to be added to deployment scanner
String[] folders2 = (String[]) folders.toArray(new String[folders.size()]);
+ return folders2;
+ }
+
+ protected void ensureDeployLocationAdded(IServer server, MBeanServerConnection
connection) throws Exception {
+ String[] folders2 = getDeployLocationFolders(server);
+ ensureDeployLocationAdded(server, connection, folders2);
+ }
+
+ protected void ensureDeployLocationAdded(IServer server,
+ MBeanServerConnection connection, String[] folders2) throws Exception {
for( int i = 0; i < folders2.length; i++ ) {
String asURL = new File(folders2[i]).toURL().toString();
ObjectName name = new
ObjectName(IJBossRuntimeConstants.DEPLOYMENT_SCANNER_MBEAN_NAME);
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 2010-11-15
10:38:07 UTC (rev 26545)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/RSEBehaviourDelegate.java 2010-11-15
10:39:41 UTC (rev 26546)
@@ -15,7 +15,10 @@
import org.jboss.ide.eclipse.as.core.server.internal.AbstractJBossBehaviourDelegate;
public class RSEBehaviourDelegate extends AbstractJBossBehaviourDelegate {
-
+ public String getBehaviourTypeId() {
+ return RSEPublishMethod.RSE_ID;
+ }
+
@Override
public void stop(boolean force) {
if( force ) {
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/RSELaunchDelegate.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/RSELaunchDelegate.java 2010-11-15
10:38:07 UTC (rev 26545)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/RSELaunchDelegate.java 2010-11-15
10:39:41 UTC (rev 26546)
@@ -46,6 +46,7 @@
import org.jboss.ide.eclipse.as.core.util.IJBossRuntimeConstants;
import org.jboss.ide.eclipse.as.core.util.IJBossRuntimeResourceConstants;
import org.jboss.ide.eclipse.as.core.util.ServerConverter;
+import org.jboss.ide.eclipse.as.rse.core.xpl.ConnectAllSubsystemsUtil;
public class RSELaunchDelegate implements StartLaunchDelegate,
IStartLaunchSetupParticipant {
@@ -166,6 +167,7 @@
final String[] output = new String[1];
output[0] = null;
try {
+ System.out.println(command);
final IHostShell hs = service.runCommand("/", command, new String[]{}, new
NullProgressMonitor());
hs.addOutputListener(new IHostShellOutputListener(){
public void shellOutputChanged(IHostShellChangeEvent event) {
@@ -200,7 +202,7 @@
behaviour.setServerStopped();
} catch( SystemMessageException sme) {
// TODO
- sme.printStackTrace();
+ behaviour.setServerStarted(); // unable to stop the server
} catch( RuntimeException re ) {
if( re instanceof NullPointerException &&
service.getClass().getName().equals("DStoreShellService")) {
// remote server has no dstore shell service
@@ -316,6 +318,10 @@
throw new CoreException(new Status(IStatus.ERROR,
org.jboss.ide.eclipse.as.rse.core.RSECorePlugin.PLUGIN_ID,
"Host not found. Host may have been deleted or RSE model may not be completely
loaded"));
}
+
+ // ensure connections
+ new ConnectAllSubsystemsUtil(host).run(new NullProgressMonitor());
+
ISubSystem[] systems = RSECorePlugin.getTheSystemRegistry().getSubSystems(host);
for( int i = 0; i < systems.length; i++ ) {
if( systems[i] instanceof IShellServiceSubSystem)
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/xpl/ConnectAllSubsystemsUtil.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/xpl/ConnectAllSubsystemsUtil.java
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.rse.core/src/org/jboss/ide/eclipse/as/rse/core/xpl/ConnectAllSubsystemsUtil.java 2010-11-15
10:39:41 UTC (rev 26546)
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Initial Contributors:
+ * The following IBM employees contributed to the Remote System Explorer
+ * component that contains this file: David McKnight, Kushal Munir,
+ * Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
+ * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
+ *
+ * Contributors:
+ * Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry
+ * Martin Oberhuber (Wind River) - [187218] Fix error reporting for connect()
+ * Martin Oberhuber (Wind River) - [216266] Consider stateless subsystems
(supportsSubSystemConnect==false)
+ * David McKnight (IBM) - [237970] Subsystem.connect( ) fails for substituting
host name when isOffline( ) is true
+ *******************************************************************************/
+
+package org.jboss.ide.eclipse.as.rse.core.xpl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.rse.core.model.IHost;
+import org.eclipse.rse.core.subsystems.IConnectorService;
+import org.eclipse.rse.core.subsystems.ISubSystem;
+import org.eclipse.rse.services.clientserver.messages.SystemMessageException;
+
+/**
+ * This is the action for connecting all subsystems for a given connection.
+ * For some reason it was hidden in a ui package...
+ */
+public class ConnectAllSubsystemsUtil {
+ private IHost _connection;
+ public ConnectAllSubsystemsUtil(IHost host) {
+ this._connection = host;
+ }
+
+ public IStatus run(IProgressMonitor monitor)
+ {
+ List<IConnectorService> failedSystems = new
ArrayList<IConnectorService>();
+ try
+ {
+ //forced instantiation of all subsystems
+ ISubSystem[] subsystems = _connection.getSubSystems();
+ for (int i = 0; i < subsystems.length; i++)
+ {
+ ISubSystem subsystem = subsystems[i];
+ IConnectorService system = subsystem.getConnectorService();
+ if (!subsystem.isConnected()
+ && subsystem.getSubSystemConfiguration().supportsSubSystemConnect()
+ && !failedSystems.contains(system)) {
+ try {
+ subsystem.connect(monitor, false);
+ } catch (SystemMessageException e) {
+ //TODO should we collect all messages and just show one dialog with a MultiStatus?
+ failedSystems.add(system);
+ //SystemMessageDialog.displayMessage(e);
+ } catch (Exception e) {
+ failedSystems.add(system);
+ if ((e instanceof InterruptedException) || (e instanceof
OperationCanceledException)) {
+ // if the user was prompted for password and cancelled
+ // or if the connect was interrupted for some other reason
+ // we don't attempt to connect the other subsystems
+ break;
+ }
+// SystemBasePlugin.logError(
+// e.getLocalizedMessage()!=null ? e.getLocalizedMessage() :
e.getClass().getName(),
+// e);
+ }
+ }
+ }
+ }
+ catch (Exception exc)
+ {
+ } // msg already shown
+ if (failedSystems.size() > 0)
+ {
+ return Status.CANCEL_STATUS;
+ }
+ else
+ {
+ return Status.OK_STATUS;
+ }
+ }
+}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/wizards/JBossServerWizardFragment.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/wizards/JBossServerWizardFragment.java 2010-11-15
10:38:07 UTC (rev 26545)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/wizards/JBossServerWizardFragment.java 2010-11-15
10:39:41 UTC (rev 26546)
@@ -223,12 +223,12 @@
public void performFinish(IProgressMonitor monitor) throws CoreException {
IServerWorkingCopy serverWC = (IServerWorkingCopy)
getTaskModel().getObject(TaskModel.TASK_SERVER);
- JBossServer jbs = (JBossServer)serverWC.loadAdapter(JBossServer.class, new
NullProgressMonitor());
- jbs.setUsername("admin"); //$NON-NLS-1$
- jbs.setPassword("admin"); //$NON-NLS-1$
- jbs.setDeployLocationType(isAS50() ? IDeployableServer.DEPLOY_SERVER :
IDeployableServer.DEPLOY_METADATA);
serverWC.setRuntime((IRuntime)getTaskModel().getObject(TaskModel.TASK_RUNTIME));
serverWC.setServerConfiguration(null); // no inside jboss folder
+ // just make sure the shouldnt-happen doesn't happen
+ String tmp = serverWC.getAttribute(IDeployableServer.DEPLOY_DIRECTORY_TYPE,
(String)null);
+ if( IDeployableServer.DEPLOY_METADATA.equals(tmp))
+ serverWC.setAttribute(IDeployableServer.DEPLOY_DIRECTORY_TYPE,
IDeployableServer.DEPLOY_SERVER);
}
private IJBossServerRuntime getRuntime() {
@@ -243,10 +243,6 @@
return ajbsrt;
}
- protected boolean isAS50() {
- return
getRuntime().getRuntime().getRuntimeType().equals(IJBossToolingConstants.SERVER_AS_50);
- }
-
public boolean isComplete() {
return getErrorString() == null ? true : false;
}