You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by bh...@apache.org on 2007/01/03 16:38:04 UTC
svn commit: r492184 - in
/incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui:
./ actions/ jmx/ views/
Author: bhupendrab
Date: Wed Jan 3 07:38:03 2007
New Revision: 492184
URL: http://svn.apache.org/viewvc?view=rev&rev=492184
Log:
QPID-213
Modified:
incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java
incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/Refresh.java
incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java
incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java
incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanTypeTabControl.java
incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java
incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java
incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/ViewUtility.java
Modified: incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java?view=diff&rev=492184&r1=492183&r2=492184
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java (original)
+++ incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java Wed Jan 3 07:38:03 2007
@@ -21,6 +21,7 @@
package org.apache.qpid.management.ui;
+import java.util.ArrayList;
import java.util.List;
import org.apache.qpid.management.ui.jmx.ClientListener;
@@ -31,6 +32,12 @@
public abstract class ServerRegistry
{
private ManagedServer _managedServer = null;
+ // list of all Connection mbeans
+ protected List<ManagedBean> _connections = new ArrayList<ManagedBean>();
+ // list of all exchange mbeans
+ protected List<ManagedBean> _exchanges = new ArrayList<ManagedBean>();
+ // list of all queue mbenas
+ protected List<ManagedBean> _queues = new ArrayList<ManagedBean>();
public ServerRegistry()
{
@@ -52,14 +59,57 @@
_managedServer = server;
}
- public abstract void addManagedObject(ManagedBean key);
+ protected void addConnectionMBean(ManagedBean mbean)
+ {
+ _connections.add(mbean);
+ }
- public abstract void removeManagedObject(ManagedBean mbean);
+ protected void addExchangeMBean(ManagedBean mbean)
+ {
+ _exchanges.add(mbean);
+ }
+
+ protected void addQueueMBean(ManagedBean mbean)
+ {
+ _queues.add(mbean);
+ }
+
+ protected void removeConnectionMBean(ManagedBean mbean)
+ {
+ _connections.remove(mbean);
+ }
+
+ protected void removeExchangeMBean(ManagedBean mbean)
+ {
+ _exchanges.remove(mbean);
+ }
- public List<ManagedBean> getObjectsToBeAdded()
+ protected void removeQueueMBean(ManagedBean mbean)
{
- return null;
+ _queues.remove(mbean);
}
+
+ public List<ManagedBean> getConnections()
+ {
+ return _connections;
+ }
+
+ public List<ManagedBean> getExchanges()
+ {
+ return _exchanges;
+ }
+
+ public List<ManagedBean> getQueues()
+ {
+ return _queues;
+ }
+
+ public abstract void addManagedObject(ManagedBean key);
+
+ public abstract List<ManagedBean> getMBeans();
+
+ public abstract void removeManagedObject(ManagedBean mbean);
+
public List<ManagedBean> getObjectsToBeRemoved()
{
return null;
Modified: incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/Refresh.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/Refresh.java?view=diff&rev=492184&r1=492183&r2=492184
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/Refresh.java (original)
+++ incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/actions/Refresh.java Wed Jan 3 07:38:03 2007
@@ -20,6 +20,7 @@
*/
package org.apache.qpid.management.ui.actions;
+import org.apache.qpid.management.ui.jmx.MBeanUtility;
import org.apache.qpid.management.ui.views.MBeanView;
import org.apache.qpid.management.ui.views.NavigationView;
import org.eclipse.jface.action.IAction;
@@ -27,6 +28,10 @@
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+/**
+ * This action refreshes both the views -Navigation and MBeanView
+ * @author Bhupendra Bhardwaj
+ */
public class Refresh implements IWorkbenchWindowActionDelegate
{
private IWorkbenchWindow _window;
@@ -71,7 +76,14 @@
view.refresh();
MBeanView mbeanview = (MBeanView)_window.getActivePage().findView(MBeanView.ID);
- mbeanview.refreshMBeanView();
+ try
+ {
+ mbeanview.refreshMBeanView();
+ }
+ catch (Exception ex)
+ {
+ MBeanUtility.handleException(ex);
+ }
}
}
}
Modified: incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java?view=diff&rev=492184&r1=492183&r2=492184
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java (original)
+++ incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java Wed Jan 3 07:38:03 2007
@@ -26,6 +26,7 @@
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
+import javax.management.ListenerNotFoundException;
import javax.management.MBeanInfo;
import javax.management.MBeanServerConnection;
import javax.management.Notification;
@@ -50,17 +51,10 @@
private JMXConnector _jmxc = null;
private MBeanServerConnection _mbsc = null;
- // When a new mbean is added on the mbean server, then the notification listener
- // will add the mbean in this list.
- private List<ManagedBean> _mbeansToBeAdded = new ArrayList<ManagedBean>();
- // When an mbean gets remoevd from mbena server, then the notification listener
+ // When an mbean gets removed from mbean server, then the notification listener
// will add that mbean in this list.
private List<ManagedBean> _mbeansToBeRemoved = new ArrayList<ManagedBean>();
- private List<String> _queues = new ArrayList<String>();
- private List<String> _exchanges = new ArrayList<String>();
- private List<String> _connections = new ArrayList<String>();
-
// Map containing all managed beans and ampped with unique mbean name
private HashMap<String, ManagedBean> _mbeansMap = new HashMap<String, ManagedBean>();
// Map containing MBeanInfo for all mbeans and mapped with unique mbean name
@@ -110,16 +104,23 @@
*/
public void closeServerConnection() throws Exception
{
- if (_jmxc != null)
- _jmxc.removeConnectionNotificationListener(_clientListener);
-
- if (_mbsc != null)
- _mbsc.removeNotificationListener(_serverObjectName, _clientListener);
-
- // remove mbean notification listeners
- for (String mbeanName : _subscribedNotificationMap.keySet())
+ try
+ {
+ if (_jmxc != null)
+ _jmxc.removeConnectionNotificationListener(_clientListener);
+
+ if (_mbsc != null)
+ _mbsc.removeNotificationListener(_serverObjectName, _clientListener);
+
+ // remove mbean notification listeners
+ for (String mbeanName : _subscribedNotificationMap.keySet())
+ {
+ _mbsc.removeNotificationListener(new ObjectName(mbeanName), _notificationListener);
+ }
+ }
+ catch (ListenerNotFoundException ex)
{
- _mbsc.removeNotificationListener(new ObjectName(mbeanName), _notificationListener);
+ System.out.println(ex.toString());
}
}
@@ -128,26 +129,32 @@
return _mbeansMap.get(uniqueName);
}
- public void addManagedObject(ManagedBean key)
+ public void addManagedObject(ManagedBean mbean)
{
- if (Constants.QUEUE.equals(key.getType()))
- _queues.add(key.getName());
- else if (Constants.EXCHANGE.equals(key.getType()))
- _exchanges.add(key.getName());
- else if (Constants.CONNECTION.equals(key.getType()))
- _connections.add(key.getName());
+ if (Constants.QUEUE.equals(mbean.getType()) && !mbean.getName().startsWith("tmp_"))
+ {
+ addQueueMBean(mbean);
+ }
+ else if (Constants.EXCHANGE.equals(mbean.getType()))
+ {
+ addExchangeMBean(mbean);
+ }
+ else if (Constants.CONNECTION.equals(mbean.getType()))
+ {
+ addConnectionMBean(mbean);
+ }
- _mbeansMap.put(key.getUniqueName(), key);
+ _mbeansMap.put(mbean.getUniqueName(), mbean);
}
public void removeManagedObject(ManagedBean mbean)
{
if (Constants.QUEUE.equals(mbean.getType()))
- _queues.remove(mbean.getName());
+ removeQueueMBean(mbean);
else if (Constants.EXCHANGE.equals(mbean.getType()))
- _exchanges.remove(mbean.getName());
+ removeExchangeMBean(mbean);
else if (Constants.CONNECTION.equals(mbean.getType()))
- _connections.remove(mbean.getName());
+ removeConnectionMBean(mbean);
_mbeansMap.remove(mbean.getUniqueName());
}
@@ -161,6 +168,11 @@
return _mbeanInfoMap.get(mbean.getUniqueName());
}
+ public List<ManagedBean> getMBeans()
+ {
+ return new ArrayList<ManagedBean>(_mbeansMap.values());
+ }
+
public void setNotificationInfo(ManagedBean mbean, List<NotificationInfoModel>value)
{
_notificationInfoMap.put(mbean.getUniqueName(), value);
@@ -280,27 +292,15 @@
public void registerManagedObject(ObjectName objName)
{
JMXManagedObject managedObject = new JMXManagedObject(objName);
+
managedObject.setServer(getManagedServer());
- _mbeansToBeAdded.add(managedObject);
+ addManagedObject(managedObject);
}
public void unregisterManagedObject(ObjectName objName)
{
- JMXManagedObject managedObject = new JMXManagedObject(objName);
- managedObject.setServer(getManagedServer());
- _mbeansToBeRemoved.add(managedObject);
- }
-
- public List<ManagedBean> getObjectsToBeAdded()
- {
- if (_mbeansToBeAdded.isEmpty())
- return null;
- else
- {
- List<ManagedBean> list = _mbeansToBeAdded;
- _mbeansToBeAdded = new ArrayList<ManagedBean>();
- return list;
- }
+ ManagedBean mbean = _mbeansMap.get(objName.toString());
+ _mbeansToBeRemoved.add(mbean);
}
public List<ManagedBean> getObjectsToBeRemoved()
@@ -337,17 +337,35 @@
public String[] getQueueNames()
{
- return _queues.toArray(new String[0]);
+ String[] queues = new String[_queues.size()];
+ int i = 0;
+ for (ManagedBean mbean : _queues)
+ {
+ queues[i++] = mbean.getName();
+ }
+ return queues;
}
public String[] getExchangeNames()
{
- return _exchanges.toArray(new String[0]);
+ String[] exchanges = new String[_exchanges.size()];
+ int i = 0;
+ for (ManagedBean mbean : _exchanges)
+ {
+ exchanges[i++] = mbean.getName();
+ }
+ return exchanges;
}
public String[] getConnectionNames()
{
- return _connections.toArray(new String[0]);
+ String[] connections = new String[_connections.size()];
+ int i = 0;
+ for (ManagedBean mbean : _connections)
+ {
+ connections[i++] = mbean.getName();
+ }
+ return connections;
}
public ClientNotificationListener getNotificationListener()
Modified: incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java?view=diff&rev=492184&r1=492183&r2=492184
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java (original)
+++ incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java Wed Jan 3 07:38:03 2007
@@ -143,30 +143,30 @@
{
if (mbean == null)
{
- ViewUtility.popupErrorMessage("Error", ex.getMessage());
+ ViewUtility.popupErrorMessage("Error", "Managed Object is null \n" + ex.toString());
}
else if (ex instanceof IOException)
{
- ViewUtility.popupErrorMessage(mbean.getName(), ex.getMessage());
+ ViewUtility.popupErrorMessage(mbean.getName(), "IO Error occured \n" + ex.toString());
}
else if (ex instanceof ReflectionException)
{
- ViewUtility.popupErrorMessage(mbean.getName(), ex.getMessage());
+ ViewUtility.popupErrorMessage(mbean.getName(), "Server has thrown error \n" + ex.toString());
}
else if (ex instanceof InstanceNotFoundException)
{
- ViewUtility.popupErrorMessage(mbean.getName(), ex.getMessage());
+ ViewUtility.popupErrorMessage(mbean.getName(), "Managed Object Not Found \n" + ex.toString());
}
else if (ex instanceof MBeanException)
{
- String cause = ((MBeanException)ex).getTargetException().getMessage();
+ String cause = ((MBeanException)ex).getTargetException().toString();
if (cause == null)
- cause = ex.getMessage();
+ cause = ex.toString();
ViewUtility.popupInfoMessage(mbean.getName(), cause);
}
else if (ex instanceof JMException)
{
- ViewUtility.popupErrorMessage(mbean.getName(), ex.getMessage());
+ ViewUtility.popupErrorMessage(mbean.getName(), "Management Exception occured \n" + ex.toString());
}
else if (ex instanceof ManagementConsoleException)
{
@@ -174,7 +174,7 @@
}
else
{
- ViewUtility.popupError(mbean.getName(), "Error occured", ex);
+ ViewUtility.popupErrorMessage(mbean.getName(), ex.toString());
}
//ex.printStackTrace();
}
Modified: incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanTypeTabControl.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanTypeTabControl.java?view=diff&rev=492184&r1=492183&r2=492184
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanTypeTabControl.java (original)
+++ incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanTypeTabControl.java Wed Jan 3 07:38:03 2007
@@ -1,9 +1,16 @@
package org.apache.qpid.management.ui.views;
+import java.util.Arrays;
+import java.util.HashMap;
+
import org.apache.qpid.management.ui.ApplicationRegistry;
import org.apache.qpid.management.ui.Constants;
+import org.apache.qpid.management.ui.ManagedBean;
import org.apache.qpid.management.ui.ServerRegistry;
+import org.apache.qpid.management.ui.jmx.MBeanUtility;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
@@ -12,28 +19,38 @@
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.forms.widgets.Form;
import org.eclipse.ui.forms.widgets.FormToolkit;
public class MBeanTypeTabControl
{
- private FormToolkit _toolkit;
- private Form _form;
- private TabFolder _tabFolder;
- private Composite _composite;
- private Label _labelName;
- private Label _labelDesc;
- private List _list;
- private Button _button;
+ private FormToolkit _toolkit = null;
+ private Form _form = null;
+ private TabFolder _tabFolder = null;
+ private Composite _composite = null;
+ private Composite _listComposite = null;
+ private Label _labelName = null;
+ private Label _labelDesc = null;
+ private Label _labelList = null;
+ private org.eclipse.swt.widgets.List _list = null;
+ private Button _refreshButton = null;
+ private Button _addButton = null;
private String _type = null;
+ // maps an mbena name with the mbean object. Required to get mbean object when an mbean
+ // is to be added to the navigation view.
+ private HashMap<String, ManagedBean> _objectsMap = new HashMap<String, ManagedBean>();
+
public MBeanTypeTabControl(TabFolder tabFolder)
{
_tabFolder = tabFolder;
_toolkit = new FormToolkit(_tabFolder.getDisplay());
_form = _toolkit.createForm(_tabFolder);
createWidgets();
+ addListeners();
}
public Control getControl()
@@ -41,27 +58,88 @@
return _form;
}
+ private void addListeners()
+ {
+ _addButton.addSelectionListener(new SelectionAdapter(){
+ public void widgetSelected(SelectionEvent e)
+ {
+ if (_list.getSelectionCount() == 0)
+ return;
+
+ String[] selectedItems = _list.getSelection();
+ for (int i = 0; i < selectedItems.length; i++)
+ {
+ String name = selectedItems[i];
+ ManagedBean mbean = _objectsMap.get(name);
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ NavigationView view = (NavigationView)window.getActivePage().findView(NavigationView.ID);
+ try
+ {
+ view.addManagedBean(mbean);
+ }
+ catch (Exception ex)
+ {
+ MBeanUtility.handleException(mbean, ex);
+ }
+ }
+ }
+ });
+
+ _refreshButton.addSelectionListener(new SelectionAdapter(){
+ public void widgetSelected(SelectionEvent e)
+ {
+ try
+ {
+ refresh(_type);
+ }
+ catch (Exception ex)
+ {
+ MBeanUtility.handleException(ex);
+ }
+ }
+ });
+ }
+
private void createWidgets()
{
_form.getBody().setLayout(new GridLayout());
_composite = _toolkit.createComposite(_form.getBody(), SWT.NONE);
_composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- _composite.setLayout(new GridLayout(2, true));
+ GridLayout layout = new GridLayout(2, true);
+ layout.verticalSpacing = 10;
+ layout.horizontalSpacing = 0;
+ _composite.setLayout(layout);
_labelName = _toolkit.createLabel(_composite, "Type:", SWT.NONE);
GridData gridData = new GridData(SWT.CENTER, SWT.TOP, true, false, 2, 1);
_labelName.setLayoutData(gridData);
_labelName.setFont(ApplicationRegistry.getFont(Constants.FONT_BOLD));
- /*
+
_labelDesc = _toolkit.createLabel(_composite, " ", SWT.NONE);
_labelDesc.setLayoutData(new GridData(SWT.CENTER, SWT.TOP, true, false, 2, 1));
_labelDesc.setFont(ApplicationRegistry.getFont(Constants.FONT_ITALIC));
- _button = _toolkit.createButton(_composite, "<- Add to Navigation", SWT.PUSH);
+ _refreshButton = _toolkit.createButton(_composite, Constants.BUTTON_REFRESH, SWT.PUSH);
+ gridData = new GridData(SWT.CENTER, SWT.CENTER, false, false, 2, 1);
+ gridData.widthHint = 80;
+ _refreshButton.setLayoutData(gridData);
+
+ _addButton = _toolkit.createButton(_composite, "<- Add to Navigation", SWT.PUSH);
gridData = new GridData(SWT.CENTER, SWT.CENTER, false, false);
- _button.setLayoutData(gridData);
- */
- _list = new List(_composite, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
+ _addButton.setLayoutData(gridData);
+
+ // Composite to contain the item list
+ _listComposite = _toolkit.createComposite(_composite);
+ gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ _listComposite.setLayoutData(gridData);
+ _listComposite.setLayout(new GridLayout());
+
+ // Label for item name
+ _labelList = _toolkit.createLabel(_listComposite, " ", SWT.NONE);
+ _labelList.setLayoutData(new GridData(SWT.CENTER, SWT.TOP, true, false));
+ _labelList.setFont(ApplicationRegistry.getFont(Constants.FONT_NORMAL));
+
+ _list = new List(_listComposite, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
_list.setLayoutData(gridData);
}
@@ -71,36 +149,64 @@
_type = typeName;
setHeader();
populateList();
+
+ _listComposite.layout();
+ _composite.layout();
_form.layout();
}
private void setHeader()
{
- _labelName.setText("Type: " + _type);
- //_labelDesc.setText("Select the " + _type + " to add in the Navigation View");
+ _labelName.setText("Type : " + _type);
+ _labelDesc.setText("Select the " + _type + "(s) to add in the Navigation View");
+ _labelList.setText("-- List of " + _type + "s --");
}
+ /**
+ * populates the map with mbean name and the mbean object.
+ * @throws Exception
+ */
private void populateList() throws Exception
{
+ // map should be cleared before populating it with new values
+ _objectsMap.clear();
ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(MBeanView.getServer());
String[] items = null;
+ java.util.List<ManagedBean> list = null;
+
+ // populate the map and list with appropriate mbeans
if (_type.equals(Constants.QUEUE))
{
- items = serverRegistry.getQueueNames();
+ list = serverRegistry.getQueues();
}
else if (_type.equals(Constants.EXCHANGE))
{
- items = serverRegistry.getExchangeNames();
+ list = serverRegistry.getExchanges();;
}
else if (_type.equals(Constants.CONNECTION))
{
- items = serverRegistry.getConnectionNames();
+ list = serverRegistry.getConnections();
}
else
{
throw new Exception("Unknown mbean type " + _type);
}
+ items = getItems(list);
_list.setItems(items);
+ }
+
+ // sets the map with appropriate mbean and name
+ private String[] getItems(java.util.List<ManagedBean> list)
+ {
+ String[] items = new String[list.size()];
+ int i = 0;
+ for (ManagedBean mbean : list)
+ {
+ items[i++] = mbean.getName();
+ _objectsMap.put(mbean.getName(), mbean);
+ }
+ Arrays.sort(items);
+ return items;
}
}
Modified: incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java?view=diff&rev=492184&r1=492183&r2=492184
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java (original)
+++ incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java Wed Jan 3 07:38:03 2007
@@ -86,24 +86,30 @@
IStructuredSelection ss = (IStructuredSelection) sel;
_selectedNode = (TreeObject)ss.getFirstElement();
- if (_selectedNode == null)
- return;
+
// mbean should be set to null. A selection done on the navigation view can be either an mbean or
// an mbeantype. For mbeantype selection(eg Connection, Queue, Exchange) _mbean will remain null.
_mbean = null;
setInvisible();
_form.setText(Constants.APPLICATION_NAME);
+
+ // If a selected node(mbean) gets unregistered from mbena server, mbenaview should should
+ // make the tabfolber for that mbean invisible
+ if (_selectedNode == null)
+ return;
+
setServer();
try
{
if (Constants.TYPE.equals(_selectedNode.getType()))
{
- if (typeTabFolder == null)
- createTypeTabFolder();
-
refreshTypeTabFolder(_selectedNode.getName());
}
+ else if (Constants.DOMAIN.equals(_selectedNode.getType()))
+ {
+ refreshTypeTabFolder(typeTabFolder.getItem(0));
+ }
else
{
showSelectedMBean();
@@ -207,23 +213,38 @@
// Add selection listener for selection events in the Navigation view
getSite().getPage().addSelectionListener(NavigationView.ID, selectionListener);
+
+ // Add mbeantype TabFolder. This will list all the mbeans under a mbeantype (eg Queue, Exchange).
+ // Using this list mbeans will be added in the navigation view
+ createTypeTabFolder();
}
- public void refreshMBeanView()
+ public void refreshMBeanView() throws Exception
{
+ int tabIndex = 0;
+ TabItem tab = null;
if (_mbean == null)
- return;
-
- TabFolder tabFolder = tabFolderMap.get(_mbean.getType());
- if (tabFolder == null)
- return;
-
- int index = tabFolder.getSelectionIndex();
- TabItem tab = tabFolder.getItem(index);
- if (tab == null)
- return;
-
- refreshTab(tab);
+ {
+ tabIndex = typeTabFolder.getSelectionIndex();
+ if (tabIndex == -1)
+ return;
+
+ tab = typeTabFolder.getItem(tabIndex);
+ refreshTypeTabFolder(tab);
+ }
+ else
+ {
+ TabFolder tabFolder = tabFolderMap.get(_mbean.getType());
+ if (tabFolder == null)
+ return;
+
+ tabIndex = tabFolder.getSelectionIndex();
+ tab = tabFolder.getItem(tabIndex);
+ if (tab == null)
+ return;
+
+ refreshTab(tab);
+ }
_form.layout();
}
@@ -443,11 +464,7 @@
{
if (tab == null)
{
- int index = typeTabFolder.getSelectionIndex();
- if (index == -1)
- return;
-
- tab = typeTabFolder.getItem(index);
+ return;
}
typeTabFolder.setSelection(tab);
MBeanTypeTabControl controller = (MBeanTypeTabControl)typeTabFolder.getData("CONTROLLER");
Modified: incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java?view=diff&rev=492184&r1=492183&r2=492184
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java (original)
+++ incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NavigationView.java Wed Jan 3 07:38:03 2007
@@ -36,6 +36,7 @@
import org.apache.qpid.management.ui.ManagedServer;
import org.apache.qpid.management.ui.ServerRegistry;
import org.apache.qpid.management.ui.exceptions.InfoRequiredException;
+import org.apache.qpid.management.ui.exceptions.ManagementConsoleException;
import org.apache.qpid.management.ui.jmx.JMXServerRegistry;
import org.apache.qpid.management.ui.jmx.MBeanUtility;
import org.eclipse.jface.viewers.DoubleClickEvent;
@@ -71,8 +72,6 @@
private TreeViewer _treeViewer = null;
private TreeObject _rootNode = null;
private TreeObject _serversRootNode = null;
- // List of all server nodes (connecged or removed)
- //private List<TreeObject> _serverNodeList = new ArrayList<TreeObject>();
// Map of connected servers
private HashMap<ManagedServer, TreeObject> _managedServerMap = new HashMap<ManagedServer, TreeObject>();
@@ -143,7 +142,7 @@
try
{
// Currently Qpid Management Console only supports JMX MBeanServer
- JMXServerRegistry serverRegistry = new JMXServerRegistry(server);
+ ServerRegistry serverRegistry = new JMXServerRegistry(server);
ApplicationRegistry.addServer(server, serverRegistry);
}
catch(Exception ex)
@@ -281,11 +280,32 @@
private void populateDomain(TreeObject domain) throws IOException, Exception
{
ManagedServer server = (ManagedServer)domain.getParent().getManagedObject();
+
+ // Add these three types - Connection, Exchange, Queue
+ // By adding these, these will always be available, even if there are no mbeans under thse types
+ // This is required because, the mbeans will be added from mbeanview, by selecting from the list
+ TreeObject typeChild = new TreeObject(Constants.CONNECTION, Constants.TYPE);
+ typeChild.setParent(domain);
+ typeChild = new TreeObject(Constants.EXCHANGE, Constants.TYPE);
+ typeChild.setParent(domain);
+ typeChild = new TreeObject(Constants.QUEUE, Constants.TYPE);
+ typeChild.setParent(domain);
+
+
+ // Now populate the mbenas under those types
List<ManagedBean> mbeans = MBeanUtility.getManagedObjectsForDomain(server, domain.getName());
for (ManagedBean mbean : mbeans)
{
mbean.setServer(server);
- addManagedBean(domain, mbean);
+ ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(server);
+ serverRegistry.addManagedObject(mbean);
+
+ // Add all mbeans other than Connections, Exchanges and Queues. Because these will be added
+ // manually by selecting from MBeanView
+ if (!(mbean.getType().equals(Constants.CONNECTION) || mbean.getType().equals(Constants.EXCHANGE) || mbean.getType().equals(Constants.QUEUE)))
+ {
+ addManagedBean(domain, mbean);
+ }
}
}
@@ -293,59 +313,69 @@
* Checks if a particular mbeantype is already there in the navigation view for a domain.
* This is used while populating domain with mbeans.
* @param domain
- * @param type
+ * @param typeName
* @return Node if given mbeantype already exists, otherwise null
*/
- private TreeObject getIfTypeAlreadyExists(TreeObject domain, String type)
+ private TreeObject getMBeanTypeNode(TreeObject domain, String typeName)
{
- List<TreeObject> types = domain.getChildren();
+ List<TreeObject> childNodes = domain.getChildren();
- for (TreeObject child : types)
+ for (TreeObject child : childNodes)
{
- if (Constants.TYPE.equals(child.getType()) && type.equals(child.getName()))
+ if (Constants.TYPE.equals(child.getType()) && typeName.equals(child.getName()))
return child;
}
return null;
}
+ private boolean doesMBeanNodeAlreadyExist(TreeObject typeNode, String mbeanName)
+ {
+ List<TreeObject> childNodes = typeNode.getChildren();
+ for (TreeObject child : childNodes)
+ {
+ if (Constants.MBEAN.equals(child.getType()) && mbeanName.equals(child.getName()))
+ return true;
+ }
+ return false;
+ }
+
/**
* Adds the given MBean to the given domain node. Creates Notification node for the MBean.
* @param domain
- * @param obj mbean
+ * @param mbean mbean
*/
- private void addManagedBean(TreeObject domain, ManagedBean obj)
+ private void addManagedBean(TreeObject domain, ManagedBean mbean) throws Exception
{
- ManagedServer server = (ManagedServer)domain.getParent().getManagedObject();
- JMXServerRegistry serverRegistry = (JMXServerRegistry)ApplicationRegistry.getServerRegistry(server);
- serverRegistry.addManagedObject(obj);
-
- String type = obj.getType();
- String name = obj.getName();
+ String type = mbean.getType();
+ String name = mbean.getName();
+
+ TreeObject typeNode = getMBeanTypeNode(domain, type);
+ if (typeNode != null && doesMBeanNodeAlreadyExist(typeNode, name))
+ return;
- TreeObject typeChild = getIfTypeAlreadyExists(domain, type);
TreeObject mbeanNode = null;
- if (typeChild != null) // if type is already added as a TreeItem
+ if (typeNode != null) // type node already exists
{
if (name == null)
{
- System.out.println("Two mbeans can't exist without a name and with same type");
- return;
+ throw new ManagementConsoleException("Two mbeans can't exist without a name and with same type");
}
- mbeanNode = new TreeObject(obj);
- mbeanNode.setParent(typeChild);
+ mbeanNode = new TreeObject(mbean);
+ mbeanNode.setParent(typeNode);
}
else
{
- if (name != null) // An managedObject with type and name
+ // type node does not exist. Now check if node to be created as mbeantype or MBean
+ if (name != null) // A managedObject with type and name
{
- typeChild = new TreeObject(type, Constants.TYPE);
- typeChild.setParent(domain);
- mbeanNode = new TreeObject(obj);
- mbeanNode.setParent(typeChild);
+ typeNode = new TreeObject(type, Constants.TYPE);
+ typeNode.setParent(domain);
+ mbeanNode = new TreeObject(mbean);
+ mbeanNode.setParent(typeNode);
}
- else // An managedObject with only type
+ else // A managedObject with only type
{
- mbeanNode = new TreeObject(obj);
+ mbeanNode = new TreeObject(mbean);
mbeanNode.setParent(domain);
}
}
@@ -469,7 +499,6 @@
list.remove(objectToRemove);
}
- //_serverNodeList.remove(objectToRemove);
_treeViewer.refresh();
// Remove from the ini file
@@ -664,24 +693,6 @@
}
return ApplicationRegistry.getFont(Constants.FONT_NORMAL);
}
-
- /*
- public Color getForeground(Object element)
- {
- TreeObject node = (TreeObject)element;
- if (node.getType().equals(Constants.SERVER))
- {
- if (!node.getChildren().isEmpty())
- return Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GREEN);
- else
- return Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GRAY);
- }
- return Display.getCurrent().getSystemColor(SWT.COLOR_BLACK);
- }
- public Color getBackground(Object element)
- {
- return _treeViewer.getControl().getBackground();
- }*/
} // End of LabelProviderImpl
@@ -717,60 +728,36 @@
catch(Exception ex)
{
- }
- refreshAddedObjects();
+ }
refreshRemovedObjects();
refreshClosedServerConnections();
}// end of while loop
}// end of run method.
}// end of Worker class
-
- private void refreshAddedObjects()
+ public void addManagedBean(ManagedBean mbean) throws Exception
{
- for (ManagedServer server : _managedServerMap.keySet())
+ TreeObject treeServerObject = _managedServerMap.get(mbean.getServer());
+ List<TreeObject> domains = treeServerObject.getChildren();
+ TreeObject domain = null;
+ for (TreeObject child : domains)
{
- JMXServerRegistry serverRegistry = (JMXServerRegistry)ApplicationRegistry.getServerRegistry(server);
- if (serverRegistry == null) // server connection is closed
- continue;
-
- final List<ManagedBean> list = serverRegistry.getObjectsToBeAdded();
- if (list != null)
+ if (child.getName().equals(mbean.getDomain()))
{
- Display display = getSite().getShell().getDisplay();
- display.syncExec(new Runnable()
- {
- public void run()
- {
- for (ManagedBean obj : list)
- {
- System.out.println("adding " + obj.getName() + " " + obj.getType());
- TreeObject treeServerObject = _managedServerMap.get(obj.getServer());
- List<TreeObject> domains = treeServerObject.getChildren();
- TreeObject domain = null;
- for (TreeObject child : domains)
- {
- if (child.getName().equals(obj.getDomain()))
- {
- domain = child;
- break;
- }
- }
-
- addManagedBean(domain, obj);
- }
- _treeViewer.refresh();
- }
- });
+ domain = child;
+ break;
}
}
+
+ addManagedBean(domain, mbean);
+ _treeViewer.refresh();
}
private void refreshRemovedObjects()
{
for (ManagedServer server : _managedServerMap.keySet())
{
- final JMXServerRegistry serverRegistry = (JMXServerRegistry)ApplicationRegistry.getServerRegistry(server);
+ final ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(server);
if (serverRegistry == null) // server connection is closed
continue;
Modified: incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/ViewUtility.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/ViewUtility.java?view=diff&rev=492184&r1=492183&r2=492184
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/ViewUtility.java (original)
+++ incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/ViewUtility.java Wed Jan 3 07:38:03 2007
@@ -388,10 +388,10 @@
return response;
}
- public static void popupError(String title, String message, Exception ex)
+ public static void popupError(String title, String message, Throwable ex)
{
IStatus status = new Status(IStatus.ERROR, ApplicationWorkbenchAdvisor.PERSPECTIVE_ID,
- IStatus.ERROR, ex.getMessage(), ex);
+ IStatus.ERROR, ex.toString(), ex);
ErrorDialog.openError(Display.getCurrent().getActiveShell(), title, message, status);
}