Author: rob.stryker(a)jboss.com
Date: 2008-11-19 14:04:58 -0500 (Wed, 19 Nov 2008)
New Revision: 11887
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/jmx/JBossServerConnection.java
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/IConnectionWrapper.java
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/providers/DefaultConnectionWrapper.java
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/tree/NodeUtils.java
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/tree/Root.java
trunk/jmx/plugins/org.jboss.tools.jmx.ui/src/org/jboss/tools/jmx/ui/internal/views/navigator/MBeanExplorerContentProvider.java
trunk/jmx/tests/org.jboss.tools.jmx.core.test/src/org/jboss/tools/jmx/core/tests/DefaultProviderTest.java
trunk/jmx/tests/org.jboss.tools.jmx.core.test/src/org/jboss/tools/jmx/core/tests/MockConnectionWrapper.java
Log:
JBIDE-3227 - added progress monitors, switched to a job
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/jmx/JBossServerConnection.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/jmx/JBossServerConnection.java 2008-11-19
19:04:25 UTC (rev 11886)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.core/jbosscore/org/jboss/ide/eclipse/as/core/extensions/jmx/JBossServerConnection.java 2008-11-19
19:04:58 UTC (rev 11887)
@@ -5,6 +5,7 @@
import javax.management.MBeanServerConnection;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.wst.server.core.IServer;
@@ -47,14 +48,14 @@
return root;
}
- public void loadRoot() {
+ public void loadRoot(IProgressMonitor monitor) {
if( isConnected()) {
// saferunner just adds itself as a concern and then removes, after each call.
// This will ensure the classloader does not need to make multiple loads
JMXClassLoaderRepository.getDefault().addConcerned(server, this);
try {
if( root == null ) {
- root = NodeUtils.createObjectNameTree(this);
+ root = NodeUtils.createObjectNameTree(this, monitor);
}
} catch( CoreException ce ) {
IStatus status = new Status(IStatus.ERROR, JBossServerCorePlugin.PLUGIN_ID,
ce.getMessage(), ce);
Modified:
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/IConnectionWrapper.java
===================================================================
---
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/IConnectionWrapper.java 2008-11-19
19:04:25 UTC (rev 11886)
+++
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/IConnectionWrapper.java 2008-11-19
19:04:58 UTC (rev 11887)
@@ -13,6 +13,7 @@
import java.io.IOException;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.jboss.tools.jmx.core.tree.Root;
@@ -30,7 +31,7 @@
* Loads the root object in the current thread if it is not loaded.
* If it is loaded, does nothing.
*/
- public void loadRoot();
+ public void loadRoot(IProgressMonitor monitor);
/**
* Gets the current root object, or null if its not yet loaded.
Modified:
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/providers/DefaultConnectionWrapper.java
===================================================================
---
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/providers/DefaultConnectionWrapper.java 2008-11-19
19:04:25 UTC (rev 11886)
+++
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/providers/DefaultConnectionWrapper.java 2008-11-19
19:04:58 UTC (rev 11887)
@@ -21,6 +21,7 @@
import javax.management.remote.JMXServiceURL;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.jboss.tools.jmx.core.ExtensionManager;
@@ -101,10 +102,10 @@
return root;
}
- public void loadRoot() {
+ public void loadRoot(IProgressMonitor monitor) {
if( isConnected && root == null ) {
try {
- root = NodeUtils.createObjectNameTree(this);
+ root = NodeUtils.createObjectNameTree(this, monitor);
} catch( CoreException ce ) {
// TODO LOG
}
Modified:
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/tree/NodeUtils.java
===================================================================
---
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/tree/NodeUtils.java 2008-11-19
19:04:25 UTC (rev 11886)
+++
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/tree/NodeUtils.java 2008-11-19
19:04:58 UTC (rev 11887)
@@ -15,6 +15,8 @@
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubProgressMonitor;
import org.jboss.tools.jmx.core.IConnectionWrapper;
import org.jboss.tools.jmx.core.IJMXRunnable;
@@ -42,18 +44,25 @@
}
@SuppressWarnings("unchecked")
- public static Root createObjectNameTree(final IConnectionWrapper connectionWrapper)
+ public static Root createObjectNameTree(final IConnectionWrapper connectionWrapper,
final IProgressMonitor monitor)
throws CoreException {
final Root[] _root = new Root[1];
connectionWrapper.run(new IJMXRunnable() {
public void run(MBeanServerConnection connection) throws Exception {
- Set beanInfo = connection.queryNames(new ObjectName("*:*"), null);
//$NON-NLS-1$
+ monitor.beginTask("Load MBeans", 1000);
+ Set beanInfo = connection.queryNames(new ObjectName("*:*"), null);
//$NON-NLS-1$
+ monitor.worked(100);
+ SubProgressMonitor subMon = new SubProgressMonitor(monitor, 900);
+ subMon.beginTask("Inspect MBeans", beanInfo.size() * 100);
_root[0] = NodeBuilder.createRoot(connectionWrapper);
Iterator iter = beanInfo.iterator();
while (iter.hasNext()) {
ObjectName on = (ObjectName) iter.next();
NodeBuilder.addToTree(_root[0], on);
+ subMon.worked(100);
}
+ subMon.done();
+ monitor.done();
}
});
return _root[0];
Modified:
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/tree/Root.java
===================================================================
---
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/tree/Root.java 2008-11-19
19:04:25 UTC (rev 11886)
+++
trunk/jmx/plugins/org.jboss.tools.jmx.core/src/org/jboss/tools/jmx/core/tree/Root.java 2008-11-19
19:04:58 UTC (rev 11887)
@@ -27,9 +27,6 @@
return 0;
}
-// MBeanServerConnection getMBeanServerConnection() {
-// return mbsc;
-// }
public IConnectionWrapper getConnection() {
return connection;
}
Modified:
trunk/jmx/plugins/org.jboss.tools.jmx.ui/src/org/jboss/tools/jmx/ui/internal/views/navigator/MBeanExplorerContentProvider.java
===================================================================
---
trunk/jmx/plugins/org.jboss.tools.jmx.ui/src/org/jboss/tools/jmx/ui/internal/views/navigator/MBeanExplorerContentProvider.java 2008-11-19
19:04:25 UTC (rev 11886)
+++
trunk/jmx/plugins/org.jboss.tools.jmx.ui/src/org/jboss/tools/jmx/ui/internal/views/navigator/MBeanExplorerContentProvider.java 2008-11-19
19:04:58 UTC (rev 11887)
@@ -12,7 +12,10 @@
import java.util.HashMap;
-
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.StructuredViewer;
@@ -101,10 +104,10 @@
return getChildren(w.getRoot());
// Must load the model
- Thread t = new Thread() {
- public void run() {
+ Job job = new Job("Loading JMX Nodes") {
+ protected IStatus run(IProgressMonitor monitor) {
try {
- w.loadRoot();
+ w.loadRoot(monitor);
} catch( RuntimeException re ) {
}
loading.remove(w);
@@ -116,7 +119,9 @@
viewer.refresh();
}
});
+ return Status.OK_STATUS;
}
+
};
if( loading.containsKey(((IConnectionWrapper)parent))) {
@@ -124,7 +129,7 @@
}
DelayProxy p = new DelayProxy(w);
loading.put(w, p);
- t.start();
+ job.schedule();
return new Object[] { p };
}
@@ -143,6 +148,8 @@
if( parent instanceof IConnectionWrapper ) {
return ((IConnectionWrapper)parent).isConnected();
}
+ if( parent instanceof DelayProxy)
+ return false;
return true;
}
Modified:
trunk/jmx/tests/org.jboss.tools.jmx.core.test/src/org/jboss/tools/jmx/core/tests/DefaultProviderTest.java
===================================================================
---
trunk/jmx/tests/org.jboss.tools.jmx.core.test/src/org/jboss/tools/jmx/core/tests/DefaultProviderTest.java 2008-11-19
19:04:25 UTC (rev 11886)
+++
trunk/jmx/tests/org.jboss.tools.jmx.core.test/src/org/jboss/tools/jmx/core/tests/DefaultProviderTest.java 2008-11-19
19:04:58 UTC (rev 11887)
@@ -99,7 +99,7 @@
Root root = wrapper.getRoot();
assertTrue("Root was not null", root == null);
- wrapper.loadRoot();
+ wrapper.loadRoot(new NullProgressMonitor());
root = wrapper.getRoot();
assertTrue("Root was null", root != null);
Modified:
trunk/jmx/tests/org.jboss.tools.jmx.core.test/src/org/jboss/tools/jmx/core/tests/MockConnectionWrapper.java
===================================================================
---
trunk/jmx/tests/org.jboss.tools.jmx.core.test/src/org/jboss/tools/jmx/core/tests/MockConnectionWrapper.java 2008-11-19
19:04:25 UTC (rev 11886)
+++
trunk/jmx/tests/org.jboss.tools.jmx.core.test/src/org/jboss/tools/jmx/core/tests/MockConnectionWrapper.java 2008-11-19
19:04:58 UTC (rev 11887)
@@ -3,6 +3,7 @@
import java.io.IOException;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.jboss.tools.jmx.core.IConnectionProvider;
import org.jboss.tools.jmx.core.IConnectionWrapper;
import org.jboss.tools.jmx.core.IJMXRunnable;
@@ -36,7 +37,7 @@
public void run(IJMXRunnable runnable) throws CoreException {
}
- public void loadRoot() {
+ public void loadRoot(IProgressMonitor monitor) {
}
}