From 2797a71b663841fe1de6e8925e2168b1c59cbb8f Mon Sep 17 00:00:00 2001 From: Robert Gemmell Date: Thu, 19 Jul 2012 11:23:49 +0000 Subject: QPID-4149: Add REST functionality to delete exchanges, queues and bindings, add queue/exchange/binding delete operations into web UI Applied patch from Oleksandr Rudyy and myself. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1363298 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/main/java/resources/js/qpid/common/util.js | 68 ++++++++++++++++++++- .../java/resources/js/qpid/management/Exchange.js | 66 ++++++++++++++++++++- .../java/resources/js/qpid/management/Queue.js | 23 ++++++++ .../resources/js/qpid/management/VirtualHost.js | 69 +++++++++++++++++++--- .../resources/js/qpid/management/addExchange.js | 1 - .../src/main/java/resources/showExchange.html | 4 ++ .../src/main/java/resources/showQueue.html | 4 ++ .../src/main/java/resources/showVirtualHost.html | 2 + .../plugin/servlet/rest/BindingRestTest.java | 45 ++++++++++++++ .../plugin/servlet/rest/VirtualHostRestTest.java | 50 ++++++++++++++++ 10 files changed, 318 insertions(+), 14 deletions(-) (limited to 'qpid/java/broker-plugins/management-http/src') diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js index d7917b640e..08fdf5c99b 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js @@ -18,8 +18,8 @@ * under the License. * */ -define([], - function () { +define(["dojo/_base/xhr"], + function (xhr) { var util = {}; if (Array.isArray) { util.isArray = function (object) { @@ -52,5 +52,69 @@ define([], } } }; + + util.isReservedExchangeName = function(exchangeName) + { + return exchangeName == null || exchangeName == "" || "<>" == exchangeName || exchangeName.indexOf("amq.") == 0 || exchangeName.indexOf("qpid.") == 0; + }; + + util.deleteGridSelections = function(updater, gridName, url, confirmationMessageStart) + { + var grid = updater[gridName].grid; + var data = grid.selection.getSelected(); + if(data.length) + { + var confirmationMessage = null; + if (data.length == 1) + { + confirmationMessage = confirmationMessageStart + " '" + data[0].name + "'?"; + } + else + { + var names = ''; + for(var i = 0; i
+
+
+ +
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html index 3be53a45a2..f4960055b0 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html @@ -97,5 +97,9 @@ + +
+ +
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/showVirtualHost.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/showVirtualHost.html index 9d16d523d6..f4d998458f 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/showVirtualHost.html +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/showVirtualHost.html @@ -43,11 +43,13 @@
+

+

diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingRestTest.java index 91b41c3476..527eb16927 100644 --- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingRestTest.java +++ b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/BindingRestTest.java @@ -1,5 +1,6 @@ package org.apache.qpid.server.management.plugin.servlet.rest; +import java.net.HttpURLConnection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -61,4 +62,48 @@ public class BindingRestTest extends QpidRestTestCase Asserts.assertBinding("queue", "amq.direct", bindings.get(0)); } + + public void testDeleteBinding() throws Exception + { + List> bindings = getJsonAsList("/rest/binding/test/amq.direct/queue/queue"); + assertEquals("Unexpected number of bindings", 1, bindings.size()); + Asserts.assertBinding("queue", "amq.direct", bindings.get(0)); + + HttpURLConnection connection = openManagementConection("/rest/binding/test/amq.direct/queue/queue", "DELETE"); + connection.connect(); + assertEquals("Unexpected response code", 200, connection.getResponseCode()); + + bindings = getJsonAsList("/rest/binding/test/amq.direct/queue/queue"); + assertEquals("Binding should be deleted", 0, bindings.size()); + } + + public void testDeleteBindingById() throws Exception + { + Map binding = getJsonAsSingletonList("/rest/binding/test/amq.direct/queue"); + HttpURLConnection connection = openManagementConection("/rest/binding/test/amq.direct?id=" + binding.get(Binding.ID), "DELETE"); + connection.connect(); + assertEquals("Unexpected response code", 200, connection.getResponseCode()); + List> bindings = getJsonAsList("/rest/binding/test/amq.direct/queue"); + assertEquals("Binding should be deleted", 0, bindings.size()); + } + + public void testCreateBinding() throws Exception + { + String bindingName = getTestName(); + Map bindingData = new HashMap(); + bindingData.put(Binding.NAME, bindingName); + bindingData.put(Binding.QUEUE, "queue"); + bindingData.put(Binding.EXCHANGE, "amq.direct"); + + HttpURLConnection connection = openManagementConection("/rest/binding/test/amq.direct/queue/" + bindingName, "PUT"); + connection.connect(); + writeJsonRequest(connection, bindingData); + int responseCode = connection.getResponseCode(); + connection.disconnect(); + assertEquals("Unexpected response code", 201, responseCode); + Map binding = getJsonAsSingletonList("/rest/binding/test/amq.direct/queue/" + bindingName); + + Asserts.assertBinding(bindingName, "queue", "amq.direct", binding); + } + } diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostRestTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostRestTest.java index 71e85d389e..eaf2e60478 100644 --- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostRestTest.java +++ b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostRestTest.java @@ -246,6 +246,56 @@ public class VirtualHostRestTest extends QpidRestTestCase assertNull("Queue of unsupported type was created", queue); } + public void testDeleteQueue() throws Exception + { + String queueName = getTestQueueName(); + createQueue(queueName, null, null); + + HttpURLConnection connection = openManagementConection("/rest/queue/test/" + queueName, "DELETE"); + connection.connect(); + assertEquals("Unexpected response code", 200, connection.getResponseCode()); + List> queues = getJsonAsList("/rest/queue/test/" + queueName); + assertEquals("Queue should be deleted", 0, queues.size()); + } + + public void testDeleteQueueById() throws Exception + { + String queueName = getTestQueueName(); + createQueue(queueName, null, null); + Map queueDetails = getJsonAsSingletonList("/rest/queue/test/" + queueName); + + HttpURLConnection connection = openManagementConection("/rest/queue/test?id=" + queueDetails.get(Queue.ID), "DELETE"); + connection.connect(); + assertEquals("Unexpected response code", 200, connection.getResponseCode()); + List> queues = getJsonAsList("/rest/queue/test/" + queueName); + assertEquals("Queue should be deleted", 0, queues.size()); + } + + public void testDeleteExchange() throws Exception + { + String exchangeName = getTestName(); + createExchange(exchangeName, "direct"); + + HttpURLConnection connection = openManagementConection("/rest/exchange/test/" + exchangeName, "DELETE"); + connection.connect(); + assertEquals("Unexpected response code", 200, connection.getResponseCode()); + List> queues = getJsonAsList("/rest/exchange/test/" + exchangeName); + assertEquals("Exchange should be deleted", 0, queues.size()); + } + + public void testDeleteExchangeById() throws Exception + { + String exchangeName = getTestName(); + createExchange(exchangeName, "direct"); + Map echangeDetails = getJsonAsSingletonList("/rest/exchange/test/" + exchangeName); + + HttpURLConnection connection = openManagementConection("/rest/exchange/test?id=" + echangeDetails.get(Exchange.ID), "DELETE"); + connection.connect(); + assertEquals("Unexpected response code", 200, connection.getResponseCode()); + List> queues = getJsonAsList("/rest/exchange/test/" + exchangeName); + assertEquals("Exchange should be deleted", 0, queues.size()); + } + private void createExchange(String exchangeName, String exchangeType) throws IOException { HttpURLConnection connection = openManagementConection("/rest/exchange/test/" + exchangeName, "PUT"); -- cgit v1.2.1