[jbosstools-commits] JBoss Tools SVN: r6801 - in trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core: server/internal and 1 other directory.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Fri Mar 7 21:24:15 EST 2008


Author: rob.stryker at jboss.com
Date: 2008-03-07 21:24:15 -0500 (Fri, 07 Mar 2008)
New Revision: 6801

Modified:
   trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/jmx/JMXModel.java
   trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServerBehavior.java
Log:
JBIDE-828 - suspend / resume deployment scanner. 

Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/jmx/JMXModel.java
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/jmx/JMXModel.java	2008-03-08 00:12:32 UTC (rev 6800)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/jmx/JMXModel.java	2008-03-08 02:24:15 UTC (rev 6801)
@@ -422,7 +422,7 @@
 	}
 
 	public interface JMXRunnable {
-		public void run(MBeanServerConnection connection);
+		public void run(MBeanServerConnection connection) throws Exception;
 	}
 
 	public static class JMXSafeRunner {

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	2008-03-08 00:12:32 UTC (rev 6800)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/server/internal/JBossServerBehavior.java	2008-03-08 02:24:15 UTC (rev 6801)
@@ -21,6 +21,16 @@
  */
 package org.jboss.ide.eclipse.as.core.server.internal;
 
+import java.io.IOException;
+
+import javax.management.InstanceNotFoundException;
+import javax.management.IntrospectionException;
+import javax.management.MBeanInfo;
+import javax.management.MBeanServerConnection;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.management.ReflectionException;
+
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
@@ -31,10 +41,15 @@
 import org.eclipse.debug.core.IDebugEventSetListener;
 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
 import org.eclipse.debug.core.model.IProcess;
+import org.eclipse.wst.server.core.IModule;
 import org.eclipse.wst.server.core.IServer;
 import org.jboss.ide.eclipse.as.core.JBossServerCorePlugin;
 import org.jboss.ide.eclipse.as.core.extensions.events.EventLogModel;
 import org.jboss.ide.eclipse.as.core.extensions.events.EventLogModel.EventLogTreeItem;
+import org.jboss.ide.eclipse.as.core.extensions.jmx.JMXModel.JMXRunnable;
+import org.jboss.ide.eclipse.as.core.extensions.jmx.JMXModel.JMXSafeRunner;
+import org.jboss.ide.eclipse.as.core.publishers.PublisherEventLogger;
+import org.jboss.ide.eclipse.as.core.publishers.PublisherEventLogger.PublishEvent;
 import org.jboss.ide.eclipse.as.core.server.IServerStatePoller;
 import org.jboss.ide.eclipse.as.core.server.internal.launch.JBossServerStartupLaunchConfiguration;
 import org.jboss.ide.eclipse.as.core.server.internal.launch.StopLaunchConfiguration;
@@ -174,4 +189,46 @@
 		pollThread.start();
 	}
 	
+
+	protected void publishStart(IProgressMonitor monitor) throws CoreException {
+		super.publishStart(monitor);
+		if( shouldSuspendScanner() )
+			suspendDeployment();
+	}
+
+	protected void publishFinish(IProgressMonitor monitor) throws CoreException {
+		if( shouldSuspendScanner() )
+			resumeDeployment();
+		super.publishFinish(monitor);
+	}
+	
+	protected boolean shouldSuspendScanner() {
+		if( getServer().getServerType().getId().equals("org.jboss.ide.eclipse.as.50"))
+			return false;
+		if( getServer().getServerState() != IServer.STATE_STARTED)
+			return false;
+		return true;
+	}
+	
+	protected void suspendDeployment() {
+		JMXRunnable r = new JMXRunnable() {
+			public void run(MBeanServerConnection connection) throws Exception {
+				ObjectName name = new ObjectName("jboss.deployment:flavor=URL,type=DeploymentScanner");
+				connection.invoke(name, "stop", new Object[] {  }, new String[] {});
+			}
+		};
+		JMXSafeRunner.run(getServer(), r);
+	}
+	
+	protected void resumeDeployment() {
+		JMXRunnable r = new JMXRunnable() {
+			public void run(MBeanServerConnection connection) throws Exception {
+				ObjectName name = new ObjectName("jboss.deployment:flavor=URL,type=DeploymentScanner");
+				connection.invoke(name, "start", new Object[] {  }, new String[] {});
+			}
+		};
+		JMXSafeRunner.run(getServer(), r);
+	}
+		
+
 }




More information about the jbosstools-commits mailing list