diff options
| author | Robert Gemmell <robbie@apache.org> | 2010-09-18 21:18:54 +0000 |
|---|---|---|
| committer | Robert Gemmell <robbie@apache.org> | 2010-09-18 21:18:54 +0000 |
| commit | f3c426e27d4cded63a2eeb34ec5e6a8d4b803589 (patch) | |
| tree | 40ff4078717c27c42afbecc1bfe5f15cd03202fd /java/management/eclipse-plugin/src | |
| parent | a92613d7c9e7d623fda47cc41175197ec86c3cfb (diff) | |
| download | qpid-python-f3c426e27d4cded63a2eeb34ec5e6a8d4b803589.tar.gz | |
QPID-2867: add support to the JMX management console for removing bindings from direct/topic exchanges
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@998546 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/management/eclipse-plugin/src')
2 files changed, 100 insertions, 12 deletions
diff --git a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java index cec9c8a83c..9bf1b91c49 100644 --- a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java +++ b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java @@ -78,7 +78,12 @@ 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[] DEFAULT_EXCHANGE_TYPE_VALUES = {"direct", "fanout", "headers", "topic"}; + + public final static String DIRECT_EXCHANGE = "direct"; + public final static String FANOUT_EXCHANGE = "fanout"; + public final static String HEADERS_EXCHANGE = "headers"; + public final static String TOPIC_EXCHANGE = "topic"; + public final static String[] DEFAULT_EXCHANGE_TYPE_VALUES = {DIRECT_EXCHANGE, FANOUT_EXCHANGE, HEADERS_EXCHANGE, TOPIC_EXCHANGE}; public final static String[] BOOLEAN_TYPE_VALUES = {"false", "true"}; public final static String[] ATTRIBUTE_TABLE_TITLES = {"Attribute Name", "Value"}; diff --git a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/ExchangeOperationsTabControl.java b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/ExchangeOperationsTabControl.java index 09f5f5c6d8..b51cb85427 100644 --- a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/ExchangeOperationsTabControl.java +++ b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/ExchangeOperationsTabControl.java @@ -20,8 +20,12 @@ */ package org.apache.qpid.management.ui.views.exchange; +import static org.apache.qpid.management.common.mbeans.ManagedExchange.BINDING_KEY; +import static org.apache.qpid.management.common.mbeans.ManagedExchange.QUEUE_NAMES; import static org.apache.qpid.management.ui.Constants.EXCHANGE_TYPE; -import static org.apache.qpid.management.ui.Constants.DEFAULT_EXCHANGE_TYPE_VALUES; +import static org.apache.qpid.management.ui.Constants.DIRECT_EXCHANGE; +import static org.apache.qpid.management.ui.Constants.FANOUT_EXCHANGE; +import static org.apache.qpid.management.ui.Constants.TOPIC_EXCHANGE; import java.util.Collection; import java.util.Collections; @@ -92,9 +96,6 @@ public class ExchangeOperationsTabControl extends TabControl private ManagedExchange _emb; private ApiVersion _ApiVersion; - static final String BINDING_KEY = ManagedExchange.BINDING_KEY; - static final String QUEUES = ManagedExchange.QUEUE_NAMES; - public ExchangeOperationsTabControl(TabFolder tabFolder, JMXManagedObject mbean, MBeanServerConnection mbsc) { super(tabFolder); @@ -248,7 +249,7 @@ public class ExchangeOperationsTabControl extends TabControl _queuesTable.setLayoutData(data); _queuesTableViewer = new TableViewer(_queuesTable); - final TableSorter queuesTableSorter = new TableSorter(QUEUES); + final TableSorter queuesTableSorter = new TableSorter(QUEUE_NAMES); titles = new String[]{"Queue Names"}; bounds = new int[]{225}; @@ -286,8 +287,8 @@ public class ExchangeOperationsTabControl extends TabControl } - _queuesTableViewer.setContentProvider(new ContentProviderImpl(QUEUES)); - _queuesTableViewer.setLabelProvider(new LabelProviderImpl(QUEUES)); + _queuesTableViewer.setContentProvider(new ContentProviderImpl(QUEUE_NAMES)); + _queuesTableViewer.setLabelProvider(new LabelProviderImpl(QUEUE_NAMES)); _queuesTableViewer.setSorter(queuesTableSorter); _queuesTable.setSortColumn(_queuesTable.getColumn(0)); _queuesTable.setSortDirection(SWT.UP); @@ -327,7 +328,36 @@ public class ExchangeOperationsTabControl extends TabControl createNewBinding(createBindingButton.getShell()); } }); - + + if(_ApiVersion.greaterThanOrEqualTo(1, 9) + && (isDirectExchange() ||isTopicExchange())) + { + final Button removeBindingButton = _toolkit.createButton(buttonsComposite, "Delete ...", SWT.PUSH); + removeBindingButton.setEnabled(false); + removeBindingButton.addSelectionListener(new SelectionAdapter() + { + public void widgetSelected(SelectionEvent e) + { + removeBinding(removeBindingButton.getShell()); + } + }); + + _queuesTableViewer.addSelectionChangedListener(new ISelectionChangedListener(){ + public void selectionChanged(SelectionChangedEvent evt) + { + int selectionIndex = _queuesTable.getSelectionIndex(); + + if (selectionIndex != -1) + { + removeBindingButton.setEnabled(true); + } + else + { + removeBindingButton.setEnabled(false); + } + } + }); + } } private void updateQueuesTable() @@ -338,7 +368,7 @@ public class ExchangeOperationsTabControl extends TabControl { final CompositeData selectedMsg = (CompositeData)_keysTable.getItem(selectionIndex).getData(); - String[] queues = (String[]) selectedMsg.get(QUEUES); + String[] queues = (String[]) selectedMsg.get(QUEUE_NAMES); _queuesTableViewer.setInput(queues); } else @@ -349,8 +379,17 @@ public class ExchangeOperationsTabControl extends TabControl private boolean isFanoutExchange() { - return _mbean.getProperty(EXCHANGE_TYPE).equalsIgnoreCase(DEFAULT_EXCHANGE_TYPE_VALUES[1]); - + return _mbean.getProperty(EXCHANGE_TYPE).equalsIgnoreCase(FANOUT_EXCHANGE); + } + + private boolean isDirectExchange() + { + return _mbean.getProperty(EXCHANGE_TYPE).equalsIgnoreCase(DIRECT_EXCHANGE); + } + + private boolean isTopicExchange() + { + return _mbean.getProperty(EXCHANGE_TYPE).equalsIgnoreCase(TOPIC_EXCHANGE); } /** @@ -606,6 +645,50 @@ public class ExchangeOperationsTabControl extends TabControl shell.open(); } + private void removeBinding(Shell parent) + { + int selectionIndex = _keysTable.getSelectionIndex(); + if (selectionIndex == -1) + { + return; + } + + final CompositeData selectedBindingRecord = (CompositeData)_keysTable.getItem(selectionIndex).getData(); + + final String bindingKey = (String) selectedBindingRecord.get(BINDING_KEY); + + selectionIndex = _queuesTable.getSelectionIndex(); + if (selectionIndex == -1) + { + return; + } + + final String queueName = (String)_queuesTable.getItem(selectionIndex).getData(); + + + int response = ViewUtility.popupOkCancelConfirmationMessage("Delete Binding", + "Delete the following binding?\n\n" + + "Binding Key: " + bindingKey + "\n" + + "Queue: " + queueName + "\n" + + "Exchange: " + _mbean.getName()); + + if (response == SWT.OK) + { + try + { + _emb.removeBinding(queueName, bindingKey); + ViewUtility.operationResultFeedback(null, "Removed Binding", null); + } + catch (Exception e) + { + ViewUtility.operationFailedStatusBarMessage("Error removing Binding"); + MBeanUtility.handleException(_mbean, e); + } + + refresh(_mbean); + } + } + private void openMBean(Table table) { int selectionIndex = table.getSelectionIndex(); |
