Author: max.andersen(a)jboss.com
Date: 2011-12-03 08:09:36 -0500 (Sat, 03 Dec 2011)
New Revision: 36915
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.management.as7/src/org/jboss/ide/eclipse/as/internal/management/as7/AS7Manager.java
trunk/as/plugins/org.jboss.ide.eclipse.as.management.as71/
trunk/as/plugins/org.jboss.ide.eclipse.as.management.as71/src/org/jboss/ide/eclipse/as/internal/management/as71/AS71Manager.java
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/launch/JBTWebLaunchableClient.java
Log:
JBIDE-10325 fixed AS7 and AS71 code for checking deployments and make "run as"
actually wait for the server to be available.
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.management.as7/src/org/jboss/ide/eclipse/as/internal/management/as7/AS7Manager.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.management.as7/src/org/jboss/ide/eclipse/as/internal/management/as7/AS7Manager.java 2011-12-03
03:01:43 UTC (rev 36914)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.management.as7/src/org/jboss/ide/eclipse/as/internal/management/as7/AS7Manager.java 2011-12-03
13:09:36 UTC (rev 36915)
@@ -24,6 +24,9 @@
import static
org.jboss.ide.eclipse.as.internal.management.as7.ModelDescriptionConstants.RESULT;
import static
org.jboss.ide.eclipse.as.internal.management.as7.ModelDescriptionConstants.SERVER_STATE;
import static
org.jboss.ide.eclipse.as.internal.management.as7.ModelDescriptionConstants.SHUTDOWN;
+import static
org.jboss.ide.eclipse.as.internal.management.as71.ModelDescriptionConstants.CHILD_TYPE;
+import static
org.jboss.ide.eclipse.as.internal.management.as71.ModelDescriptionConstants.DEPLOYMENT;
+import static
org.jboss.ide.eclipse.as.internal.management.as71.ModelDescriptionConstants.READ_CHILDREN_NAMES_OPERATION;
import java.io.File;
import java.io.IOException;
@@ -142,7 +145,7 @@
* @throws JBoss7ManangerException
*/
public JBoss7DeploymentState getDeploymentStateSafe(String name) throws
JBoss7ManangerException {
- if( hasDeployment(name)) {
+ if( !hasDeployment(name)) {
return JBoss7DeploymentState.NOT_FOUND;
}
return getDeploymentState(name);
@@ -287,8 +290,7 @@
private Set<String> getDeploymentNames() throws JBoss7ManangerException {
final ModelNode op = getEmptyOperation(READ_CHILDREN_NAMES_OPERATION, new
ModelNode());
op.get(CHILD_TYPE).set(DEPLOYMENT);
- ModelNode response = execute(op);
- ModelNode result = response.get(RESULT);
+ ModelNode result = execute(op);
Set<String> deploymentNames = new HashSet<String>();
if (result.isDefined()) {
final List<ModelNode> deploymentNodes = result.asList();
@@ -300,4 +302,5 @@
}
+
}
\ No newline at end of file
Property changes on: trunk/as/plugins/org.jboss.ide.eclipse.as.management.as71
___________________________________________________________________
Added: svn:ignore
+ bin
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.management.as71/src/org/jboss/ide/eclipse/as/internal/management/as71/AS71Manager.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.management.as71/src/org/jboss/ide/eclipse/as/internal/management/as71/AS71Manager.java 2011-12-03
03:01:43 UTC (rev 36914)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.management.as71/src/org/jboss/ide/eclipse/as/internal/management/as71/AS71Manager.java 2011-12-03
13:09:36 UTC (rev 36915)
@@ -186,7 +186,7 @@
* @throws JBoss7ManangerException
*/
public JBoss7DeploymentState getDeploymentStateSafe(String name) throws
JBoss7ManangerException {
- if( hasDeployment(name)) {
+ if( !hasDeployment(name)) {
return JBoss7DeploymentState.NOT_FOUND;
}
return getDeploymentState(name);
@@ -331,8 +331,7 @@
private Set<String> getDeploymentNames() throws JBoss7ManangerException {
final ModelNode op = getEmptyOperation(READ_CHILDREN_NAMES_OPERATION, new
ModelNode());
op.get(CHILD_TYPE).set(DEPLOYMENT);
- ModelNode response = execute(op);
- ModelNode result = response.get(RESULT);
+ ModelNode result = execute(op);
Set<String> deploymentNames = new HashSet<String>();
if (result.isDefined()) {
final List<ModelNode> deploymentNodes = result.asList();
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/launch/JBTWebLaunchableClient.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/launch/JBTWebLaunchableClient.java 2011-12-03
03:01:43 UTC (rev 36914)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/launch/JBTWebLaunchableClient.java 2011-12-03
13:09:36 UTC (rev 36915)
@@ -78,6 +78,8 @@
public IStatus launch2(IServer server, Object launchable, String launchMode, ILaunch
launch) {
final JBTCustomHttpLaunchable http = (JBTCustomHttpLaunchable) launchable;
wait(server, http.getModule());
+
+ if(server.getServerState() == server.STATE_STARTED) {
Display.getDefault().asyncExec(new Runnable(){
public void run() {
try {
@@ -90,6 +92,10 @@
}
}
});
+ } else {
+ JBossServerUIPlugin.getDefault().getLog().log(
+ new Status(IStatus.WARNING, JBossServerUIPlugin.PLUGIN_ID, "Server stopped
before before browser could be opened.", null));
+ }
return null;
}
@@ -101,6 +107,8 @@
}
}
+ //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) {
try {
JBoss7Server jbossServer = ServerConverter.checkedGetJBossServer(server,
JBoss7Server.class);
@@ -108,22 +116,33 @@
IPath deployPath = PublishUtil.getDeployPath(new IModule[]{module}, jbossServer);
long time = new Date().getTime();
long endTime = time + getMaxDelay();
- while( new Date().getTime() < endTime ) {
- JBoss7DeploymentState state = service.getDeploymentState(
- new AS7ManagementDetails(server),
- deployPath.lastSegment());
- boolean done = (state == JBoss7DeploymentState.STARTED);
- if( done ) {
+ boolean waitedOnce = false;
+ while (new Date().getTime() < endTime) { // no need to keep doing this if timed out
or server stopping/stopped but not sure how to avoid race condition.
+ AS7ManagementDetails details = new AS7ManagementDetails(server);
+ boolean done = false;
+ if (service.isRunning(details)) { // to avoid asking while server is starting up.
+ JBoss7DeploymentState state = service.getDeploymentState(
+ details, deployPath.lastSegment());
+ done = (state == JBoss7DeploymentState.STARTED);
+ }
+ if (done) {
return;
}
try {
+ if(!waitedOnce) {
+ JBossServerUIPlugin.log(new Status(IStatus.INFO, JBossServerUIPlugin.PLUGIN_ID,
"Module " + module.getName() + " on " + server.getName() + " not
ready to be shown in web browser. Waiting...", null));
+ }
+ waitedOnce = true;
Thread.sleep(2000);
- } catch(InterruptedException ie) {}
+ } catch (InterruptedException ie) {
+ }
}
} catch (Exception e) {
IStatus s = new Status(
- IStatus.WARNING, JBossServerCorePlugin.PLUGIN_ID,
- NLS.bind("Could not acquire the management service for this JBoss
installation",
+ IStatus.WARNING,
+ JBossServerCorePlugin.PLUGIN_ID,
+ NLS.bind(
+ "Error occurred while waiting for " + module.getName() + " to start
on " + server.getName(),
server.getName()), e);
JBossServerUIPlugin.log(s.getMessage(), e);
}