You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2012/08/01 00:03:12 UTC

svn commit: r1367797 - in /qpid/trunk/qpid/java/broker-plugins/management-http/src: main/java/org/apache/qpid/server/management/plugin/servlet/rest/ main/java/resources/ main/java/resources/js/qpid/management/ test/java/org/apache/qpid/server/managemen...

Author: robbie
Date: Tue Jul 31 22:03:12 2012
New Revision: 1367797

URL: http://svn.apache.org/viewvc?rev=1367797&view=rev
Log:
QPID-4167: Fix a cycle in the JSON output of the AlternateExchange attribute which would lead to massive/broken output that would cripple the webui. Add REST test to validate the fix. Add checkbox to create a DLQ for the new queue, and display the alternateExchange attribute.

Work by myself and Keith Wall.

Modified:
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addQueue.html
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addQueue.js
    qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html
    qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostRestTest.java

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java?rev=1367797&r1=1367796&r2=1367797&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java Tue Jul 31 22:03:12 2012
@@ -292,7 +292,11 @@ public class RestServlet extends Abstrac
         for(String name : confObject.getAttributeNames())
         {
             Object value = confObject.getAttribute(name);
-            if(value != null)
+            if(value instanceof ConfiguredObject)
+            {
+                object.put(name, ((ConfiguredObject) value).getName());
+            }
+            else if(value != null)
             {
                 object.put(name, value);
             }

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addQueue.html
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addQueue.html?rev=1367797&r1=1367796&r2=1367797&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addQueue.html (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addQueue.html Tue Jul 31 22:03:12 2012
@@ -162,8 +162,15 @@
                             regexp="[0-9]+"
                             invalidMessage= "Invalid value"/></td>
                     </tr>
-
-
+                    <tr>
+                        <td valign="top"><strong>Create DLQ? </strong></td>
+                        <td><input type="checkbox" name="dlqEnabled" id="formAddQueue.dlqEnabled" value="dlqEnabled" dojoType="dijit.form.CheckBox" /></td>
+                    </tr>
+                </table>
+                <table cellpadding="0" cellspacing="2">
+                    <tr>
+                        <td valign="top">NOTE: Configuring maximum delivery retries on a queue which has no DLQ / AlternateExchange will result in messages being discarded after the limit is reached.</td>
+                    </tr>
                 </table>
             </div>
             <br/>

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js?rev=1367797&r1=1367796&r2=1367797&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js Tue Jul 31 22:03:12 2012
@@ -270,8 +270,7 @@ define(["dojo/_base/xhr",
                            "durable",
                            "lifetimePolicy",
                            "type",
-                           "keyName",
-                           "keyValue",
+                           "typeQualifier",
                            "alertRepeatGap",
                            "alertRepeatGapUnits",
                            "alertThresholdMessageAge",
@@ -281,6 +280,7 @@ define(["dojo/_base/xhr",
                            "alertThresholdQueueDepthBytes",
                            "alertThresholdQueueDepthBytesUnits",
                            "alertThresholdQueueDepthMessages",
+                           "alternateExchange",
                            "queueDepthMessages",
                            "queueDepthBytes",
                            "queueDepthBytesUnits",
@@ -335,7 +335,7 @@ define(["dojo/_base/xhr",
                this.state.innerHTML = this.queueData[ "state" ];
                this.durable.innerHTML = this.queueData[ "durable" ];
                this.lifetimePolicy.innerHTML = this.queueData[ "lifetimePolicy" ];
-               this.type.innerHTML = this.queueData[ "type" ];
+               this.alternateExchange.innerHTML = this.queueData[ "alternateExchange" ] ? this.queueData[ "alternateExchange" ]: "" ;
 
                this.queueDepthMessages.innerHTML = this.queueData["queueDepthMessages"];
                bytesDepth = formatter.formatBytes( this.queueData["queueDepthBytes"] );
@@ -346,15 +346,14 @@ define(["dojo/_base/xhr",
                bytesDepth = formatter.formatBytes( this.queueData["unacknowledgedBytes"] );
                this.unacknowledgedBytes.innerHTML = "(" + bytesDepth.value;
                this.unacknowledgedBytesUnits.innerHTML = bytesDepth.units + ")";
+               this.type.innerHTML = this.queueData[ "type" ];
                if (this.queueData.type == "standard")
                {
-                   this.keyName.style.display = "none";
-                   this.keyValue.style.display = "none";
+                   this.typeQualifier.style.display = "none";
                }
                else
                {
-                   this.keyName.innerHTML = queueTypeKeyNames[this.queueData.type] + ":";
-                   this.keyValue.innerHTML = this.queueData[queueTypeKeys[this.queueData.type]];
+                   this.typeQualifier.innerHTML = "(" + queueTypeKeyNames[this.queueData.type] + ": " + this.queueData[queueTypeKeys[this.queueData.type]] + ")";
                }
 
            };

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addQueue.js
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addQueue.js?rev=1367797&r1=1367796&r2=1367797&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addQueue.js (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addQueue.js Tue Jul 31 22:03:12 2012
@@ -81,7 +81,14 @@ define(["dojo/_base/xhr",
                             if (formValues.durable[0] && formValues.durable[0] == "durable") {
                                 newQueue.durable = true;
                             }
-                        } else if (!typeSpecificFields.hasOwnProperty(propName) ||
+                        }
+                        else if(propName === "dlqEnabled")
+                        {
+                            if (formValues.dlqEnabled[0] && formValues.dlqEnabled[0] == "dlqEnabled") {
+                                newQueue["x-qpid-dlq-enabled"] = true;
+                            }
+                        }
+                        else if (!typeSpecificFields.hasOwnProperty(propName) ||
                                         formValues.type === typeSpecificFields[ propName ]) {
                             if(formValues[ propName ] !== "") {
                                 if (fieldConverters.hasOwnProperty(propName))

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html?rev=1367797&r1=1367796&r2=1367797&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html Tue Jul 31 22:03:12 2012
@@ -47,9 +47,9 @@
     <span class="bytesOutRate" style="position:absolute; right: 3.3em"></span>
     <span class="bytesOutRateUnits" style="position:absolute; right: 0em; width: 3em"></span>
     <br/>
-    <span style="">Type:</span><span style="position:absolute; left:6em" class="type"></span>
-    <span style="position:absolute; left:26em" class="keyName"></span>
-    <span style="position:absolute; right:1em" class="keyValue"></span>
+    <span style="">AlternateExchange:</span><span class="alternateExchange" style="position:absolute; left:10em"></span>
+    <span style="position:absolute; left:26em">Type:</span><span style="position:absolute; left:29em" class="type"></span>
+    <span style="position:absolute; right:1em" class="typeQualifier"></span>
     <br/>
     <br/>
     <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Bindings'">

Modified: qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostRestTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostRestTest.java?rev=1367797&r1=1367796&r2=1367797&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostRestTest.java (original)
+++ qpid/trunk/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/VirtualHostRestTest.java Tue Jul 31 22:03:12 2012
@@ -346,6 +346,46 @@ public class VirtualHostRestTest extends
         assertEquals("Unexpected priorities key attribute", 10, priorityQueue.get(Queue.PRIORITIES));
     }
 
+    @SuppressWarnings("unchecked")
+    public void testCreateQueueWithDLQEnabled() throws Exception
+    {
+        String queueName = getTestQueueName();
+
+        Map<String, Object> attributes = new HashMap<String, Object>();
+        attributes.put(AMQQueueFactory.X_QPID_DLQ_ENABLED, true);
+
+        //verify the starting state
+        Map<String, Object> hostDetails = getJsonAsSingletonList("/rest/virtualhost/test");
+        List<Map<String, Object>> queues = (List<Map<String, Object>>) hostDetails.get(VirtualHostRestTest.VIRTUALHOST_QUEUES_ATTRIBUTE);
+        List<Map<String, Object>> exchanges = (List<Map<String, Object>>) hostDetails.get(VirtualHostRestTest.VIRTUALHOST_EXCHANGES_ATTRIBUTE);
+
+        assertNull("queue should not have already been present", find(Queue.NAME, queueName , queues));
+        assertNull("queue should not have already been present", find(Queue.NAME, queueName + "_DLQ" , queues));
+        assertNull("exchange should not have already been present", find(Exchange.NAME, queueName + "_DLE" , exchanges));
+
+        //create the queue
+        createQueue(queueName, "standard", attributes);
+
+        //verify the new queue, as well as the DLQueue and DLExchange have been created
+        hostDetails = getJsonAsSingletonList("/rest/virtualhost/test");
+        queues = (List<Map<String, Object>>) hostDetails.get(VirtualHostRestTest.VIRTUALHOST_QUEUES_ATTRIBUTE);
+        exchanges = (List<Map<String, Object>>) hostDetails.get(VirtualHostRestTest.VIRTUALHOST_EXCHANGES_ATTRIBUTE);
+
+        Map<String, Object> queue = find(Queue.NAME, queueName , queues);
+        Map<String, Object> dlqQueue = find(Queue.NAME, queueName + "_DLQ" , queues);
+        Map<String, Object> dlExchange = find(Exchange.NAME, queueName + "_DLE" , exchanges);
+        assertNotNull("queue should not have been present", queue);
+        assertNotNull("queue should not have been present", dlqQueue);
+        assertNotNull("exchange should not have been present", dlExchange);
+
+        //verify that the alternate exchange is set as expected on the new queue
+        Map<String, Object> queueAttributes = new HashMap<String, Object>();
+        queueAttributes.put(Queue.ALTERNATE_EXCHANGE, queueName + "_DLE");
+
+        Asserts.assertQueue(queueName, "standard", queue, queueAttributes);
+        Asserts.assertQueue(queueName, "standard", queue, null);
+    }
+
     private void createExchange(String exchangeName, String exchangeType) throws IOException
     {
         HttpURLConnection connection = openManagementConection("/rest/exchange/test/" + exchangeName, "PUT");



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org