Author: rob.stryker(a)jboss.com
Date: 2011-12-05 04:30:53 -0500 (Mon, 05 Dec 2011)
New Revision: 36939
Modified:
branches/jbosstools-3.3.0.M5/as/plugins/org.jboss.ide.eclipse.as.management.as71/META-INF/jboss-management-service.xml
branches/jbosstools-3.3.0.M5/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/launch/JBTWebLaunchableClient.java
Log:
JBIDE-10340 / JBIDE-10325 / JBIDE-10030 to branch
Modified:
branches/jbosstools-3.3.0.M5/as/plugins/org.jboss.ide.eclipse.as.management.as71/META-INF/jboss-management-service.xml
===================================================================
---
branches/jbosstools-3.3.0.M5/as/plugins/org.jboss.ide.eclipse.as.management.as71/META-INF/jboss-management-service.xml 2011-12-05
08:18:40 UTC (rev 36938)
+++
branches/jbosstools-3.3.0.M5/as/plugins/org.jboss.ide.eclipse.as.management.as71/META-INF/jboss-management-service.xml 2011-12-05
09:30:53 UTC (rev 36939)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<scr:component
xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0"
immediate="true"
name="org.jboss.ide.eclipse.as.management.as7.service">
+<scr:component
xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0"
immediate="true"
name="org.jboss.ide.eclipse.as.management.as71.service">
<implementation
class="org.jboss.ide.eclipse.as.internal.management.as71.JBoss71ManagerService"/>
<service>
<provide
interface="org.jboss.ide.eclipse.as.core.server.v7.management.IJBoss7ManagerService"/>
Modified:
branches/jbosstools-3.3.0.M5/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/launch/JBTWebLaunchableClient.java
===================================================================
---
branches/jbosstools-3.3.0.M5/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/launch/JBTWebLaunchableClient.java 2011-12-05
08:18:40 UTC (rev 36938)
+++
branches/jbosstools-3.3.0.M5/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/launch/JBTWebLaunchableClient.java 2011-12-05
09:30:53 UTC (rev 36939)
@@ -31,6 +31,8 @@
import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
import org.eclipse.wst.server.core.IModule;
import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.IServerListener;
+import org.eclipse.wst.server.core.ServerEvent;
import org.eclipse.wst.server.core.model.ClientDelegate;
import org.jboss.ide.eclipse.as.core.ExtensionManager;
import org.jboss.ide.eclipse.as.core.ExtensionManager.IServerJMXRunnable;
@@ -53,7 +55,6 @@
public class JBTWebLaunchableClient extends ClientDelegate {
public JBTWebLaunchableClient() {
- // TODO Auto-generated constructor stub
}
public boolean supports(IServer server, Object launchable, String launchMode) {
@@ -62,11 +63,13 @@
protected boolean isJMXServer(IServer server) {
JBossServer jbs = ServerConverter.getJBossServer(server);
- return jbs != null && server.getServerState() == IServer.STATE_STARTED
- && jbs.hasJMXProvider() &&
ExtensionManager.getDefault().getJMXRunner() != null;
+ return jbs != null && jbs.hasJMXProvider() &&
ExtensionManager.getDefault().getJMXRunner() != null;
}
public IStatus launch(final IServer server, final Object launchable, final String
launchMode, final ILaunch launch) {
+ if( server.getServerState() == IServer.STATE_STOPPED || server.getServerState() ==
IServer.STATE_STOPPING)
+ return Status.CANCEL_STATUS;
+
new Thread() {
public void run() {
launch2(server, launchable, launchMode, launch);
@@ -100,6 +103,7 @@
}
protected void wait(final IServer server, final IModule module) {
+ waitServerStarted(server);
if( isJMXServer(server)) {
waitJMX(server, module);
} else if( ServerUtil.isJBoss7(server)) {
@@ -107,6 +111,30 @@
}
}
+ private void waitServerStarted(final IServer server) {
+ final Object lock = new Object();
+ IServerListener listener = new IServerListener() {
+ public void serverChanged(ServerEvent event) {
+ synchronized(lock) {
+ if( server.getServerState() != IServer.STATE_STARTING ) {
+ lock.notifyAll();
+ }
+ }
+ }
+ };
+ synchronized(lock) {
+ server.addServerListener(listener);
+ if( server.getServerState() == IServer.STATE_STARTING) {
+ try {
+ lock.wait();
+ } catch(InterruptedException ie) {
+ // ignore
+ }
+ }
+ }
+ server.removeServerListener(listener);
+ }
+
//TODO: the waiting/timeout logic in here should be done for waitJMX too.
//TODO: should return true for succss or false if timeout so upper layer can report it.
protected void waitJBoss7(final IServer server, final IModule module) {