diff options
author | Robert Godfrey <rgodfrey@apache.org> | 2009-10-05 10:16:41 +0000 |
---|---|---|
committer | Robert Godfrey <rgodfrey@apache.org> | 2009-10-05 10:16:41 +0000 |
commit | 510ba3ebd76717f1fc3e08537b167f7fea96ee28 (patch) | |
tree | e515080e36d596c69ac27256b20883b8de5a950a | |
parent | b814e73fa07ec35dea45d58f9a2deaa44630edd9 (diff) | |
download | qpid-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
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()); |