summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2009-10-05 10:16:41 +0000
committerRobert Godfrey <rgodfrey@apache.org>2009-10-05 10:16:41 +0000
commit510ba3ebd76717f1fc3e08537b167f7fea96ee28 (patch)
treee515080e36d596c69ac27256b20883b8de5a950a
parentb814e73fa07ec35dea45d58f9a2deaa44630edd9 (diff)
downloadqpid-python-510ba3ebd76717f1fc3e08537b167f7fea96ee28.tar.gz
Merged from trunk up to r796694
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/java-broker-0-10@821737 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java20
-rw-r--r--qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java9
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java2
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java5
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NotificationsTabControl.java50
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java4
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/VHNotificationsTabControl.java40
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/vhost/VHostTabControl.java26
8 files changed, 124 insertions, 32 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java
index e29c2b52b7..d7583d9c59 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java
@@ -37,6 +37,9 @@
*/
package org.apache.qpid.server;
+import java.io.IOException;
+import java.util.ArrayList;
+
import javax.management.JMException;
import javax.management.MBeanException;
import javax.management.MalformedObjectNameException;
@@ -50,6 +53,7 @@ import org.apache.qpid.management.common.mbeans.annotations.MBeanDescription;
import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.exchange.ExchangeFactory;
import org.apache.qpid.server.exchange.ExchangeRegistry;
+import org.apache.qpid.server.exchange.ExchangeType;
import org.apache.qpid.server.management.AMQManagedObject;
import org.apache.qpid.server.management.ManagedObject;
import org.apache.qpid.server.queue.AMQQueue;
@@ -92,6 +96,22 @@ public class AMQBrokerManagerMBean extends AMQManagedObject implements ManagedBr
}
/**
+ * Returns an array of the exchange types available for creation.
+ * @since Qpid JMX API 1.3
+ * @throws IOException
+ */
+ public String[] getExchangeTypes() throws IOException
+ {
+ ArrayList<String> exchangeTypes = new ArrayList<String>();
+ for(ExchangeType<? extends Exchange> ex : _exchangeFactory.getRegisteredTypes())
+ {
+ exchangeTypes.add(ex.getName().toString());
+ }
+
+ return exchangeTypes.toArray(new String[0]);
+ }
+
+ /**
* Creates new exchange and registers it with the registry.
*
* @param exchangeName
diff --git a/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java b/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java
index 913ff1d022..224bf8de2c 100644
--- a/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java
+++ b/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java
@@ -26,6 +26,7 @@ import java.io.IOException;
import javax.management.JMException;
import javax.management.MBeanOperationInfo;
+import org.apache.qpid.management.common.mbeans.annotations.MBeanAttribute;
import org.apache.qpid.management.common.mbeans.annotations.MBeanOperation;
import org.apache.qpid.management.common.mbeans.annotations.MBeanOperationParameter;
@@ -43,6 +44,14 @@ public interface ManagedBroker
static final int VERSION = 1 ;
/**
+ * Returns an array of the exchange types available for creation.
+ * @since Qpid JMX API 1.3
+ * @throws IOException
+ */
+ @MBeanAttribute(name="ExchangeTypes", description = "The types of Exchange available for creation.")
+ String[] getExchangeTypes() throws IOException;
+
+ /**
* Creates a new Exchange.
* @param name
* @param type
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java
index 6887f8bc75..e6f0e227d8 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java
@@ -78,7 +78,7 @@ public class Constants
public final static String CONNECTION ="Connection";
public final static String EXCHANGE = "Exchange";
public final static String EXCHANGE_TYPE = "ExchangeType";
- public final static String[] EXCHANGE_TYPE_VALUES = {"direct", "fanout", "headers", "topic"};
+ public final static String[] DEFAULT_EXCHANGE_TYPE_VALUES = {"direct", "fanout", "headers", "topic"};
public final static String[] BOOLEAN_TYPE_VALUES = {"false", "true"};
public final static String[] ATTRIBUTE_TABLE_TITLES = {"Attribute Name", "Value"};
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java
index f280e20fdd..575b98d48a 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java
@@ -255,6 +255,11 @@ public class JMXServerRegistry extends ServerRegistry
//iterate over all the notification lists for mbeans with subscribed notifications
for (List<NotificationObject> list : _notificationsMap.values())
{
+ if(list == null || list.isEmpty())
+ {
+ continue;
+ }
+
//Check the source vhost of the first notification
NotificationObject notification = list.get(0);
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NotificationsTabControl.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NotificationsTabControl.java
index 516b0b3bbf..926bfa2a48 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NotificationsTabControl.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/NotificationsTabControl.java
@@ -28,6 +28,7 @@ import static org.apache.qpid.management.ui.Constants.FONT_ITALIC;
import static org.apache.qpid.management.ui.Constants.SUBSCRIBE_BUTTON;
import static org.apache.qpid.management.ui.Constants.UNSUBSCRIBE_BUTTON;
+import java.util.ArrayList;
import java.util.List;
import org.apache.qpid.management.ui.ApplicationRegistry;
@@ -163,8 +164,8 @@ public class NotificationsTabControl extends VHNotificationsTabControl
protected void addButtons()
{
Composite composite = _toolkit.createComposite(_form.getBody(), SWT.NONE);
- composite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
- composite.setLayout(new GridLayout());
+ composite.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false));
+ composite.setLayout(new GridLayout(2,false));
// Add Clear Button
_clearButton = _toolkit.createButton(composite, BUTTON_CLEAR, SWT.PUSH | SWT.CENTER);
@@ -173,17 +174,36 @@ public class NotificationsTabControl extends VHNotificationsTabControl
gridData.widthHint = 80;
_clearButton.setLayoutData(gridData);
_clearButton.addSelectionListener(new SelectionAdapter()
- {
- public void widgetSelected(SelectionEvent e)
- {
- if (_mbean == null)
- return;
-
- IStructuredSelection ss = (IStructuredSelection)_tableViewer.getSelection();
- ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(_mbean);
+ {
+ public void widgetSelected(SelectionEvent e)
+ {
+ if (_mbean == null)
+ {
+ return;
+ }
+
+ ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(MBeanView.getServer());
+ IStructuredSelection ss = (IStructuredSelection)_tableViewer.getSelection();
+ if(!ss.isEmpty())
+ {
serverRegistry.clearNotifications(_mbean, ss.toList());
}
- });
+ else if(_notifications != null)
+ {
+ synchronized(this)
+ {
+ List<NotificationObject> newList = new ArrayList<NotificationObject>();
+ newList.addAll(_notifications);
+ serverRegistry.clearNotifications(_mbean, newList);
+ }
+ }
+
+ refresh();
+ }
+ });
+ //add description
+ Label desc = _toolkit.createLabel(composite,"Clears the selected Notifications, or all if none are selected");
+ desc.setLayoutData(new GridData(SWT.LEFT,SWT.CENTER, false, false));
}
@Override
@@ -348,8 +368,10 @@ public class NotificationsTabControl extends VHNotificationsTabControl
{
ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(_mbean);
List<NotificationObject> newList = serverRegistry.getNotifications(_mbean);
- _notifications = newList;
-
- _tableViewer.setInput(_notifications);
+ synchronized(this)
+ {
+ _notifications = newList;
+ _tableViewer.setInput(_notifications);
+ }
}
}
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java
index 11df1b6f00..ff2005e4bb 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java
@@ -221,7 +221,7 @@ public class OperationTabControl extends TabControl
// Customised parameter widgets
if (_mbean.isExchange() &&
- EXCHANGE_TYPE_VALUES[2].equals(_mbean.getProperty(EXCHANGE_TYPE)) &&
+ DEFAULT_EXCHANGE_TYPE_VALUES[2].equals(_mbean.getProperty(EXCHANGE_TYPE)) &&
_opData.getName().equalsIgnoreCase(OPERATION_CREATE_BINDING))
{
customCreateNewBinding();
@@ -274,7 +274,7 @@ public class OperationTabControl extends TabControl
}
else if (param.getName().equals(EXCHANGE_TYPE))
{
- items = EXCHANGE_TYPE_VALUES;
+ items = DEFAULT_EXCHANGE_TYPE_VALUES;
}
else if (isUserListParameter(param))
{
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/VHNotificationsTabControl.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/VHNotificationsTabControl.java
index 691ceedcf4..5ebe0013bf 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/VHNotificationsTabControl.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/VHNotificationsTabControl.java
@@ -119,8 +119,8 @@ public class VHNotificationsTabControl extends TabControl
protected void addButtons()
{
Composite composite = _toolkit.createComposite(_form.getBody(), SWT.NONE);
- composite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
- composite.setLayout(new GridLayout());
+ composite.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false));
+ composite.setLayout(new GridLayout(2,false));
// Add Clear Button
_clearButton = _toolkit.createButton(composite, BUTTON_CLEAR, SWT.PUSH | SWT.CENTER);
@@ -129,16 +129,29 @@ public class VHNotificationsTabControl extends TabControl
gridData.widthHint = 80;
_clearButton.setLayoutData(gridData);
_clearButton.addSelectionListener(new SelectionAdapter()
- {
- public void widgetSelected(SelectionEvent e)
- {
- //TODO : Get selected rows and clear those
- IStructuredSelection ss = (IStructuredSelection)_tableViewer.getSelection();
- ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(MBeanView.getServer());
+ {
+ public void widgetSelected(SelectionEvent e)
+ {
+ ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(MBeanView.getServer());
+ IStructuredSelection ss = (IStructuredSelection)_tableViewer.getSelection();
+ if(!ss.isEmpty())
+ {
serverRegistry.clearNotifications(null, ss.toList());
- refresh();
}
- });
+ else if(_notifications != null)
+ {
+ synchronized(this)
+ {
+ serverRegistry.clearNotifications(null, _notifications);
+ }
+ }
+
+ refresh();
+ }
+ });
+ //add description
+ Label desc = _toolkit.createLabel(composite,"Clears the selected Notifications, or all if none are selected");
+ desc.setLayoutData(new GridData(SWT.LEFT,SWT.CENTER, false, false));
}
/**
@@ -446,9 +459,12 @@ public class VHNotificationsTabControl extends TabControl
ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(MBeanView.getServer());
List<NotificationObject> newList = serverRegistry.getNotifications(virtualhost);
- _notifications = newList;
- _tableViewer.setInput(_notifications);
+ synchronized(this)
+ {
+ _notifications = newList;
+ _tableViewer.setInput(_notifications);
+ }
}
}
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/vhost/VHostTabControl.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/vhost/VHostTabControl.java
index 2a77451533..2d5d4dc0d3 100644
--- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/vhost/VHostTabControl.java
+++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/vhost/VHostTabControl.java
@@ -20,13 +20,15 @@
*/
package org.apache.qpid.management.ui.views.vhost;
-import static org.apache.qpid.management.ui.Constants.EXCHANGE_TYPE_VALUES;
+import static org.apache.qpid.management.ui.Constants.DEFAULT_EXCHANGE_TYPE_VALUES;
+import java.io.IOException;
import java.util.List;
import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
+import org.apache.qpid.management.ui.ApiVersion;
import org.apache.qpid.management.ui.ApplicationRegistry;
import org.apache.qpid.management.ui.ManagedBean;
import org.apache.qpid.management.ui.ServerRegistry;
@@ -78,11 +80,13 @@ public class VHostTabControl extends TabControl
private Composite _paramsComposite = null;
private ManagedBroker _vhmb;
+ private ApiVersion _ApiVersion;
public VHostTabControl(TabFolder tabFolder, JMXManagedObject mbean, MBeanServerConnection mbsc)
{
super(tabFolder);
_mbean = mbean;
+ _ApiVersion = ApplicationRegistry.getServerRegistry(mbean).getManagementApiVersion();
_vhmb = (ManagedBroker) MBeanServerInvocationHandler.newProxyInstance(mbsc,
mbean.getObjectName(), ManagedBroker.class, false);
_toolkit = new FormToolkit(_tabFolder.getDisplay());
@@ -620,11 +624,27 @@ public class VHostTabControl extends TabControl
typeComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
typeComposite.setLayout(new GridLayout(2,false));
- //TODO: get exchange types from broker instead of hardcoded
+ String[] exchangeTypes;
+ if(_ApiVersion.greaterThanOrEqualTo(1, 3))//if the server supports Qpid JMX API 1.3
+ {//request the current exchange types from the broker
+ try
+ {
+ exchangeTypes = _vhmb.getExchangeTypes();
+ }
+ catch (IOException e1)
+ {
+ exchangeTypes = DEFAULT_EXCHANGE_TYPE_VALUES;
+ }
+ }
+ else //use the fallback defaults.
+ {
+ exchangeTypes = DEFAULT_EXCHANGE_TYPE_VALUES;
+ }
+
_toolkit.createLabel(typeComposite,"Type:").setBackground(shell.getBackground());
final org.eclipse.swt.widgets.List typeList = new org.eclipse.swt.widgets.List(typeComposite, SWT.SINGLE | SWT.BORDER);
typeList.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
- typeList.setItems(EXCHANGE_TYPE_VALUES);
+ typeList.setItems(exchangeTypes);
Composite durableComposite = _toolkit.createComposite(shell, SWT.NONE);
durableComposite.setBackground(shell.getBackground());