summaryrefslogtreecommitdiff
path: root/java/management
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2010-09-18 21:18:54 +0000
committerRobert Gemmell <robbie@apache.org>2010-09-18 21:18:54 +0000
commitf3c426e27d4cded63a2eeb34ec5e6a8d4b803589 (patch)
tree40ff4078717c27c42afbecc1bfe5f15cd03202fd /java/management
parenta92613d7c9e7d623fda47cc41175197ec86c3cfb (diff)
downloadqpid-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')
-rw-r--r--java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedExchange.java2
-rw-r--r--java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java7
-rw-r--r--java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/ExchangeOperationsTabControl.java105
3 files changed, 101 insertions, 13 deletions
diff --git a/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedExchange.java b/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedExchange.java
index 9b4c75c4a5..970f5913d5 100644
--- a/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedExchange.java
+++ b/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedExchange.java
@@ -128,6 +128,6 @@ public interface ManagedExchange
description="Removes an exchange binding from the Queue",
impact= MBeanOperationInfo.ACTION)
void removeBinding(@MBeanOperationParameter(name= ManagedQueue.TYPE, description="Queue name") String queueName,
- @MBeanOperationParameter(name="Binding", description="New binding")String binding)
+ @MBeanOperationParameter(name="Binding", description="Binding key")String binding)
throws IOException, JMException;
}
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();