Author: rgodfrey
Date: Wed Mar 28 08:39:08 2012
New Revision: 1306213

URL: http://svn.apache.org/viewvc?rev=1306213&view=rev
Log:
NO-JIRA : [Java config] Changes to the web management prototype, added a page 
for viewing exchanges

Added:
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/exchange.css
      - copied, changed from r1305835, 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/queue.css
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/exchange.html
      - copied, changed from r1305835, 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/queue.html
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/exchange.js
      - copied, changed from r1305835, 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/queue.js
Modified:
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ExchangeServlet.java
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/queue.js
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/vhost.js
    
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Publisher.java

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ExchangeServlet.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ExchangeServlet.java?rev=1306213&r1=1306212&r2=1306213&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ExchangeServlet.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ExchangeServlet.java
 Wed Mar 28 08:39:08 2012
@@ -20,29 +20,8 @@
  */
 package org.apache.qpid.server.management.plugin.servlet.rest;
 
-import org.apache.commons.codec.binary.Base64;
-import org.apache.qpid.server.registry.ApplicationRegistry;
-import org.apache.qpid.server.security.auth.AuthenticationResult;
-import 
org.apache.qpid.server.security.auth.database.Base64MD5PasswordFilePrincipalDatabase;
-import org.apache.qpid.server.security.auth.manager.AuthenticationManager;
-import org.codehaus.jackson.map.ObjectMapper;
-
-import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.model.Exchange;
-import org.apache.qpid.server.model.LifetimePolicy;
-import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.VirtualHost;
-import org.apache.qpid.server.security.SecurityManager;
-
-import javax.security.auth.Subject;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
 import java.io.IOException;
 import java.io.PrintWriter;
-import java.security.Principal;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -51,7 +30,20 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.StringTokenizer;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.apache.qpid.server.model.Binding;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.Exchange;
+import org.apache.qpid.server.model.LifetimePolicy;
+import org.apache.qpid.server.model.Publisher;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.Statistics;
+import org.apache.qpid.server.model.VirtualHost;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.SerializationConfig;
 
 public class ExchangeServlet extends AbstractServlet
 {
@@ -71,6 +63,10 @@ public class ExchangeServlet extends Abs
         response.setContentType("application/json");
         response.setStatus(HttpServletResponse.SC_OK);
 
+        response.setHeader("Cache-Control","no-cache");
+        response.setHeader("Pragma","no-cache");
+        response.setDateHeader ("Expires", 0);
+
         String[] sortKeys = request.getParameterValues("sort");
         Comparator comparator;
         if(sortKeys == null || sortKeys.length == 0)
@@ -84,12 +80,12 @@ public class ExchangeServlet extends Abs
 
 
         Collection<VirtualHost> vhosts = _broker.getVirtualHosts();
-        Collection<Exchange> exchanges = new ArrayList<Exchange>();
         List<Map<String,Object>> outputObject = new 
ArrayList<Map<String,Object>>();
 
         final PrintWriter writer = response.getWriter();
 
         ObjectMapper mapper = new ObjectMapper();
+        mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
         String vhostName = null;
         String exchangeName = null;
 
@@ -129,31 +125,76 @@ public class ExchangeServlet extends Abs
         Collections.sort(outputObject, comparator);
         mapper.writeValue(writer, outputObject);
 
-    }
+        response.setContentType("application/json");
+        response.setStatus(HttpServletResponse.SC_OK);
+
 
+    }
     private Map<String,Object> convertToObject(final Exchange exchange)
     {
+        Map<String, Object> object = convertObjectToMap(exchange);
+
+
+        List<Map<String,Object>> bindings = new ArrayList<Map<String, 
Object>>();
+
+        for(Binding binding : exchange.getBindings())
+        {
+            bindings.add(convertObjectToMap(binding));
+        }
+
+        if(!bindings.isEmpty())
+        {
+            object.put("bindings", bindings);
+        }
+
+        List<Map<String,Object>> publishers = new ArrayList<Map<String, 
Object>>();
+
+        for(Publisher publisher : exchange.getPublishers())
+        {
+            publishers.add(convertObjectToMap(publisher));
+        }
+
+        if(!publishers.isEmpty())
+        {
+            object.put("publishers", publishers);
+        }
+
+
+        return object;
+    }
+
+    private Map<String, Object> convertObjectToMap(final ConfiguredObject 
confObject)
+    {
         Map<String, Object> object = new LinkedHashMap<String, Object>();
-        object.put("id",exchange.getId());
-        object.put("name",exchange.getName());
-        object.put("type", exchange.getExchangeType());
-        object.put("durable", exchange.isDurable());
-        object.put("auto-delete", exchange.getLifetimePolicy() == 
LifetimePolicy.AUTO_DELETE);
-        object.put("binding-count", exchange.getBindings().size());
 
+        for(String name : confObject.getAttributeNames())
+        {
+            Object value = confObject.getAttribute(name);
+            if(value != null)
+            {
+                object.put(name, value);
+            }
+        }
 
-        Map<String,Object> arguments = new HashMap<String, Object>();
-        for(String key : exchange.getAttributeNames())
+        Statistics statistics = confObject.getStatistics();
+        Map<String, Object> statMap = new HashMap<String, Object>();
+        for(String name : statistics.getStatisticNames())
         {
-            if(!key.equals(Exchange.TYPE))
+            Object value = statistics.getStatistic(name);
+            if(value != null)
             {
-                arguments.put(key, exchange.getAttribute(key));
+                statMap.put(name, value);
             }
         }
-        object.put("arguments", arguments);
+
+        if(!statMap.isEmpty())
+        {
+            object.put("statistics", statMap);
+        }
         return object;
     }
 
+
     @Override
     protected void onPut(final HttpServletRequest request, final 
HttpServletResponse response)
             throws ServletException, IOException

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java?rev=1306213&r1=1306212&r2=1306213&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/QueueServlet.java
 Wed Mar 28 08:39:08 2012
@@ -20,23 +20,6 @@
  */
 package org.apache.qpid.server.management.plugin.servlet.rest;
 
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.SerializationConfig;
-
-import org.apache.qpid.server.model.Binding;
-import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.Consumer;
-import org.apache.qpid.server.model.LifetimePolicy;
-import org.apache.qpid.server.model.Queue;
-import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.Statistics;
-import org.apache.qpid.server.model.VirtualHost;
-import org.apache.qpid.server.queue.AMQQueue;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.ArrayList;
@@ -47,6 +30,20 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.apache.qpid.server.model.Binding;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.Consumer;
+import org.apache.qpid.server.model.LifetimePolicy;
+import org.apache.qpid.server.model.Queue;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.Statistics;
+import org.apache.qpid.server.model.VirtualHost;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.map.SerializationConfig;
 
 public class QueueServlet extends AbstractServlet
 {
@@ -83,7 +80,6 @@ public class QueueServlet extends Abstra
 
 
         Collection<VirtualHost> vhosts = _broker.getVirtualHosts();
-        Collection<AMQQueue> queues = new ArrayList<AMQQueue>();
         List<Map<String,Object>> outputObject = new 
ArrayList<Map<String,Object>>();
 
         final PrintWriter writer = response.getWriter();

Copied: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/exchange.css
 (from r1305835, 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/queue.css)
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/exchange.css?p2=qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/exchange.css&p1=qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/queue.css&r1=1305835&r2=1306213&rev=1306213&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/queue.css
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/css/exchange.css
 Wed Mar 28 08:39:08 2012
@@ -3,8 +3,3 @@
        width: 100%;
        height: 100px;
 }
-
-#consumers {
-       width: 100%;
-       height: 100px;
-}

Copied: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/exchange.html
 (from r1305835, 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/queue.html)
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/exchange.html?p2=qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/exchange.html&p1=qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/queue.html&r1=1305835&r2=1306213&rev=1306213&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/queue.html
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/exchange.html
 Wed Mar 28 08:39:08 2012
@@ -2,7 +2,7 @@
 <html lang="en">
        <head>
                <meta charset="utf-8">
-               <title>Queue</title>
+               <title>Exchange</title>
                <!--<link rel="stylesheet" 
href="/dojo/1.7.2/dojo/resources/dojo.css">
                <link rel="stylesheet" 
href="/dojo/1.7.2/dijit/themes/claro/claro.css">
                <link rel="stylesheet" 
href="/dojo/1.7.2/dojox/grid/resources/claroGrid.css">-->
@@ -10,7 +10,7 @@
         <link rel="stylesheet" 
href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dijit/themes/claro/claro.css";>
         <link rel="stylesheet" 
href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojox/grid/resources/claroGrid.css";>
 
-        <link rel="stylesheet" href="../css/queue.css" media="screen">
+        <link rel="stylesheet" href="../css/exchange.css" media="screen">
 
                <link rel="stylesheet" href="css/common.css" media="screen">
 
@@ -28,7 +28,7 @@
                 "dijit/TitlePane", "dojo/parser"]);
             </script>
 
-        <script src="/js/queue.js">
+        <script src="/js/exchange.js">
         </script>
        </head>
        <body class="claro">
@@ -38,19 +38,9 @@
         <div data-dojo-type="dijit.layout.ContentPane" 
data-dojo-props="region:'top'">Top pane</div>
         <div data-dojo-type="dijit.layout.ContentPane" 
data-dojo-props="region:'leading'">Leading pane</div>
         <div data-dojo-type="dijit.layout.ContentPane" 
data-dojo-props="region:'center'">
-            <span style="">Queue:</span><span id="name" 
style="position:absolute; left:6em"></span>
-            <span style="position:absolute; left:26em">Size:</span>
-            <span id="queueDepthMessages" style="position:absolute; 
right:9.5em"></span>
-            <span style="position:absolute; right: 5em; width: 4em"> 
msgs</span>
-            <span id="queueDepthBytes" style="position:absolute; right: 
3.3em">(</span>
-            <span id="queueDepthBytesUnits" style="position:absolute; right: 
0em; width: 3em">)</span>
+            <span style="">Exchange:</span><span id="name" 
style="position:absolute; left:6em"></span>
             <br/>
             <span style="">State:</span><span id="state" 
style="position:absolute; left:6em"></span>
-            <span style="position:absolute; left:26em">Pre-fetched:</span>
-            <span id="unacknowledgedMessages" style="position:absolute; 
right:9.5em"></span>
-            <span style="position:absolute; right: 5em; width: 4em"> 
msgs</span>
-            <span id="unacknowledgedBytes" style="position:absolute; right: 
3.3em"></span>
-            <span id="unacknowledgedBytesUnits" style="position:absolute; 
right: 0em; width: 3em"></span>
             <br/>
             <span style="">Durable:</span><span id="durable" 
style="position:absolute; left:6em"></span>
             <span style="position:absolute; left:26em">Inbound:</span>
@@ -60,50 +50,18 @@
             <span id="bytesInRateUnits" style="position:absolute; right: 0em; 
width: 3em"></span>
             <br/>
             <span style="">Lifespan:</span><span style="position:absolute; 
left:6em" id="lifetimePolicy"></span>
-            <span style="position:absolute; left:26em">Outbound:</span>
-            <span id="msgOutRate" style="position:absolute; 
right:9.5em"></span>
+            <span style="position:absolute; left:26em">Dropped:</span>
+            <span id="msgDropRate" style="position:absolute; 
right:9.5em"></span>
             <span style="position:absolute; right: 5em; width: 4em"> 
msg/s</span>
-            <span id="bytesOutRate" style="position:absolute; right: 
3.3em"></span>
-            <span id="bytesOutRateUnits" style="position:absolute; right: 0em; 
width: 3em"></span>
+            <span id="bytesDropRate" style="position:absolute; right: 
3.3em"></span>
+            <span id="bytesDropRateUnits" style="position:absolute; right: 
0em; width: 3em"></span>
             <br/>
             <br/>
             <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 
'Bindings'">
                 <div id="bindings"></div>
             </div>
             <br/>
-            <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 
'Consumers'">
-                <div id="consumers"></div>
-            </div>
-            <br/>
-            <div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 
'Alerting Thresholds'">
-                <span style="">Max. Queue Size:</span>
-                <span id="alertThresholdQueueDepthMessages"
-                      style="position:absolute; left:8em; width:8em; 
text-align:right"></span>
-                <span style="position:absolute; left:16.2em">msgs</span>
-
-                <span id="alertThresholdQueueDepthBytes"
-                      style="position:absolute; left:20em; width:8em; 
text-align:right"></span>
-                <span id="alertThresholdQueueDepthBytesUnits" 
style="position:absolute; left:28.2em"></span>
-                <br>
-                <span style="">Max. Message Age:</span>
-                <span id="alertThresholdMessageAge"
-                      style="position:absolute; left:8em; width:8em; 
text-align:right"></span>
-                <span id="alertThresholdMessageAgeUnits" 
style="position:absolute; left:16.2em"></span>
-
-                <span style="position:absolute; left:21em">Size: </span>
-                <span id="alertThresholdMessageSize"
-                      style="position:absolute; left:23em; width:5em; 
text-align:right"></span>
-                <span id="alertThresholdMessageSizeUnits" 
style="position:absolute; left:28.2em"></span>
-                <br/>
-                <br/>
-                <span style="">Alert frequency:</span>
-                <span id="alertRepeatGap"
-                      style="position:absolute; left:8em; width:8em; 
text-align:right"></span>
-                <span id="alertRepeatGapUnits" style="position:absolute; 
left:16.2em"></span>
-
 
-
-            </div>
         </div>
         <!--<div data-dojo-type="dijit.layout.ContentPane" 
data-dojo-props="region:'trailing'">Trailing pane</div>-->
         <div data-dojo-type="dijit.layout.ContentPane" 
data-dojo-props="region:'bottom'">Bottom pane</div>

Copied: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/exchange.js
 (from r1305835, 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/queue.js)
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/exchange.js?p2=qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/exchange.js&p1=qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/queue.js&r1=1305835&r2=1306213&rev=1306213&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/queue.js
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/exchange.js
 Wed Mar 28 08:39:08 2012
@@ -183,103 +183,81 @@ require(["dojo/store/JsonRest",
          }
 
 
-         function QueueUpdater()
+         function ExchangeUpdater()
          {
             this.name = dom.byId("name");
             this.state = dom.byId("state");
             this.durable = dom.byId("durable");
             this.lifetimePolicy = dom.byId("lifetimePolicy");
-            this.queueDepthMessages = dom.byId("queueDepthMessages");
-            this.queueDepthBytes = dom.byId("queueDepthBytes");
-            this.queueDepthBytesUnits = dom.byId("queueDepthBytesUnits");
-            this.unacknowledgedMessages = dom.byId("unacknowledgedMessages");
-            this.unacknowledgedBytes = dom.byId("unacknowledgedBytes");
-            this.unacknowledgedBytesUnits = 
dom.byId("unacknowledgedBytesUnits");
-
+            
             urlQuery = 
dojo.queryToObject(dojo.doc.location.search.substr((dojo.doc.location.search[0] 
=== "?" ? 1 : 0)));
-            this.query = "/rest/queue/"+ urlQuery.vhost + "/" + urlQuery.queue;
+            this.query = "/rest/exchange/"+ urlQuery.vhost + "/" + 
urlQuery.exchange;
 
 
             var thisObj = this;
 
             xhr.get({url: this.query, handleAs: "json"}).then(function(data)
                              {
-                                thisObj.queueData = data[0];
-                                var stats = thisObj.queueData[ "statistics" ];
+                                thisObj.exchangeData = data[0];
+                                var stats = thisObj.exchangeData[ "statistics" 
];
 
                                 // flatten statistics into attributes
                                 for(var propName in stats)
                                 {
-                                    thisObj.queueData[ propName ] = stats[ 
propName ];
+                                    thisObj.exchangeData[ propName ] = stats[ 
propName ];
                                 }
 
                                 thisObj.updateHeader();
-                                thisObj.bindingsGrid = new 
UpdatableStore(thisObj.queueData.bindings, "bindings",
-                                                         [ { name: "Exchange", 
   field: "exchange",      width: "90px"},
+                                thisObj.bindingsGrid = new 
UpdatableStore(thisObj.exchangeData.bindings, "bindings",
+                                                         [ { name: "Queue",    
field: "queue",      width: "90px"},
                                                            { name: "Binding 
Key", field: "name",          width: "120px"},
-                                                           { name: 
"Arguments",   field: "arguments",     width: "200px"}
-                                                         ]);
-
-                                thisObj.consumersGrid = new 
UpdatableStore(thisObj.queueData.consumers, "consumers",
-                                                         [ { name: "Name",    
field: "name",      width: "70px"},
-                                                           { name: "Mode", 
field: "distributionMode", width: "70px"},
-                                                           { name: "Msgs 
Rate", field: "msgRate",
-                                                           width: "150px"},
-                                                           { name: "Bytes 
Rate", field: "bytesRate",
-                                                              width: "150px"}
+                                                           { name: 
"Arguments",   field: "argumentString",     width: "200px"}
                                                          ]);
 
-
-
                              });
 
          }
 
-         QueueUpdater.prototype.updateHeader = function()
+         ExchangeUpdater.prototype.updateHeader = function()
          {
-            this.name.innerHTML = this.queueData[ "name" ];
-            this.state.innerHTML = this.queueData[ "state" ];
-            this.durable.innerHTML = this.queueData[ "durable" ];
-            this.lifetimePolicy.innerHTML = this.queueData[ "lifetimePolicy" ];
-
-            this.queueDepthMessages.innerHTML = 
this.queueData["queueDepthMessages"];
-            bytesDepth = new formatBytes( this.queueData["queueDepthBytes"] );
-            this.queueDepthBytes.innerHTML = "(" + bytesDepth.value;
-            this.queueDepthBytesUnits.innerHTML = bytesDepth.units + ")"
-
-            this.unacknowledgedMessages.innerHTML = 
this.queueData["unacknowledgedMessages"];
-            bytesDepth = new formatBytes( 
this.queueData["unacknowledgedBytes"] );
-            this.unacknowledgedBytes.innerHTML = "(" + bytesDepth.value;
-            this.unacknowledgedBytesUnits.innerHTML = bytesDepth.units + ")"
+            this.name.innerHTML = this.exchangeData[ "name" ];
+            this.state.innerHTML = this.exchangeData[ "state" ];
+            this.durable.innerHTML = this.exchangeData[ "durable" ];
+            this.lifetimePolicy.innerHTML = this.exchangeData[ 
"lifetimePolicy" ];
 
          }
 
-         QueueUpdater.prototype.update = function()
+         ExchangeUpdater.prototype.update = function()
          {
 
             var thisObj = this;
 
             xhr.get({url: this.query, handleAs: "json"}).then(function(data)
                  {
-                    thisObj.queueData = data[0];
-                    var stats = thisObj.queueData[ "statistics" ];
+                    thisObj.exchangeData = data[0];
+                    var stats = thisObj.exchangeData[ "statistics" ];
 
                     // flatten statistics into attributes
                     for(var propName in stats)
                     {
-                        thisObj.queueData[ propName ] = stats[ propName ];
+                        thisObj.exchangeData[ propName ] = stats[ propName ];
                     }
 
-                    var bindings = thisObj.queueData[ "bindings" ];
+                    var bindings = thisObj.exchangeData[ "bindings" ];
                     for(var i=0; i < bindings.length; i++)
                     {
-                        bindings[i].arguments = 
dojo.toJson(bindings[i].arguments);
-                        bindings[i].argumentString = 
dojo.toJson(bindings[i].arguments);
-
+                        if(bindings[i].arguments)
+                        {
+                            bindings[i].argumentString = 
dojo.toJson(bindings[i].arguments);
+                        }
+                        else
+                        {
+                            bindings[i].argumentString = "";
+                        }
                     }
 
 
-                    var consumers = thisObj.queueData[ "consumers" ];
+                    var consumers = thisObj.exchangeData[ "consumers" ];
                     if(consumers)
                     {
                         for(var i=0; i < consumers.length; i++)
@@ -296,107 +274,53 @@ require(["dojo/store/JsonRest",
                     thisObj.updateHeader();
 
 
-                    // update alerting info
-                    alertRepeatGap = new formatTime( 
thisObj.queueData["alertRepeatGap"] );
-
-                    dom.byId("alertRepeatGap").innerHTML = 
alertRepeatGap.value;
-                    dom.byId("alertRepeatGapUnits").innerHTML = 
alertRepeatGap.units;
-
-
-                    alertMsgAge = new formatTime( 
thisObj.queueData["alertThresholdMessageAge"] );
-
-                    dom.byId("alertThresholdMessageAge").innerHTML = 
alertMsgAge.value;
-                    dom.byId("alertThresholdMessageAgeUnits").innerHTML = 
alertMsgAge.units;
-
-                    alertMsgSize = new formatBytes( 
thisObj.queueData["alertThresholdMessageSize"] );
-
-                    dom.byId("alertThresholdMessageSize").innerHTML = 
alertMsgSize.value;
-                    dom.byId("alertThresholdMessageSizeUnits").innerHTML = 
alertMsgSize.units;
-
-                    alertQueueDepth = new formatBytes( 
thisObj.queueData["alertThresholdQueueDepthBytes"] );
-
-                    dom.byId("alertThresholdQueueDepthBytes").innerHTML = 
alertQueueDepth.value;
-                    dom.byId("alertThresholdQueueDepthBytesUnits").innerHTML = 
alertQueueDepth.units;
-
-                    dom.byId("alertThresholdQueueDepthMessages").innerHTML = 
thisObj.queueData["alertThresholdQueueDepthMessages"];
-
-                    stats = thisObj.queueData[ "statistics" ];
+                    stats = thisObj.exchangeData[ "statistics" ];
 
                     var sampleTime = new Date();
-                    var messageIn = stats["totalEnqueuedMessages"];
-                    var bytesIn = stats["totalEnqueuedBytes"];
-                    var messageOut = stats["totalDequeuedMessages"];
-                    var bytesOut = stats["totalDequeuedBytes"];
+                    var messageIn = stats["messagesIn"];
+                    var bytesIn = stats["bytesIn"];
+                    var messageDrop = stats["messagesDropped"];
+                    var bytesDrop = stats["bytesDropped"];
 
                     if(thisObj.sampleTime)
                     {
                         var samplePeriod = sampleTime.getTime() - 
thisObj.sampleTime.getTime();
 
                         var msgInRate = (1000 * (messageIn - 
thisObj.messageIn)) / samplePeriod;
-                        var msgOutRate = (1000 * (messageOut - 
thisObj.messageOut)) / samplePeriod;
+                        var msgDropRate = (1000 * (messageDrop - 
thisObj.messageDrop)) / samplePeriod;
                         var bytesInRate = (1000 * (bytesIn - thisObj.bytesIn)) 
/ samplePeriod;
-                        var bytesOutRate = (1000 * (bytesOut - 
thisObj.bytesOut)) / samplePeriod;
+                        var bytesDropRate = (1000 * (bytesDrop - 
thisObj.bytesDrop)) / samplePeriod;
 
                         dom.byId("msgInRate").innerHTML = msgInRate.toFixed(0);
                         bytesInFormat = new formatBytes( bytesInRate );
                         dom.byId("bytesInRate").innerHTML = "(" + 
bytesInFormat.value;
                         dom.byId("bytesInRateUnits").innerHTML = 
bytesInFormat.units + "/s)"
 
-                        dom.byId("msgOutRate").innerHTML = 
msgOutRate.toFixed(0);
-                        bytesOutFormat = new formatBytes( bytesOutRate );
-                        dom.byId("bytesOutRate").innerHTML = "(" + 
bytesOutFormat.value;
-                        dom.byId("bytesOutRateUnits").innerHTML = 
bytesOutFormat.units + "/s)"
-
-                        if(consumers && thisObj.consumers)
-                        {
-                            for(var i=0; i < consumers.length; i++)
-                            {
-                                var consumer = consumers[i];
-                                for(var j = 0; j < thisObj.consumers.length; 
j++)
-                                {
-                                    var oldConsumer = thisObj.consumers[j];
-                                    if(oldConsumer.id == consumer.id)
-                                    {
-                                        var msgRate = (1000 * 
(consumer.messagesOut - oldConsumer.messagesOut)) /
-                                                        samplePeriod;
-                                        consumer.msgRate = msgRate.toFixed(0) 
+ "msg/s";
-
-                                        var bytesRate = (1000 * 
(consumer.bytesOut - oldConsumer.bytesOut)) /
-                                                        samplePeriod
-                                        var bytesRateFormat = new formatBytes( 
bytesRate );
-                                        consumer.bytesRate = 
bytesRateFormat.value + bytesRateFormat.units + "/s";
-                                    }
-
-
-                                }
-
-                            }
-                        }
+                        dom.byId("msgDropRate").innerHTML = 
msgDropRate.toFixed(0);
+                        bytesDropFormat = new formatBytes( bytesDropRate );
+                        dom.byId("bytesDropRate").innerHTML = "(" + 
bytesDropFormat.value;
+                        dom.byId("bytesDropRateUnits").innerHTML = 
bytesDropFormat.units + "/s)"
 
                     }
 
                     thisObj.sampleTime = sampleTime;
                     thisObj.messageIn = messageIn;
                     thisObj.bytesIn = bytesIn;
-                    thisObj.messageOut = messageOut;
-                    thisObj.bytesOut = bytesOut;
+                    thisObj.messageDrop = messageDrop;
+                    thisObj.bytesDrop = bytesDrop;
                     thisObj.consumers = consumers;
 
                     // update bindings
-                    thisObj.bindingsGrid.update(thisObj.queueData.bindings)
-
-                    // update consumers
-                    thisObj.consumersGrid.update(thisObj.queueData.consumers)
-
+                    thisObj.bindingsGrid.update(thisObj.exchangeData.bindings)
 
                  });
          };
 
-         queueUpdater = new QueueUpdater();
+         exchangeUpdater = new ExchangeUpdater();
 
-         updateList.push( queueUpdater );
+         updateList.push( exchangeUpdater );
 
-         queueUpdater.update();
+         exchangeUpdater.update();
 
          setInterval(function(){
                for(var i = 0; i < updateList.length; i++)

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/queue.js
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/queue.js?rev=1306213&r1=1306212&r2=1306213&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/queue.js
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/queue.js
 Wed Mar 28 08:39:08 2012
@@ -3,6 +3,7 @@ var bindingsTuple;
 
 
 require(["dojo/store/JsonRest",
+         "dojo/json",
                                "dojo/store/Memory",
                                "dojo/store/Cache",
                                "dojox/grid/DataGrid",
@@ -12,7 +13,7 @@ require(["dojo/store/JsonRest",
                 "dojo/_base/xhr",
                 "dojo/dom",
                                "dojo/domReady!"],
-            function(JsonRest, Memory, Cache, DataGrid, ObjectStore, query, 
Observable, xhr, dom)
+            function(JsonRest, json, Memory, Cache, DataGrid, ObjectStore, 
query, Observable, xhr, dom)
             {
 
 
@@ -217,7 +218,7 @@ require(["dojo/store/JsonRest",
                                 thisObj.bindingsGrid = new 
UpdatableStore(thisObj.queueData.bindings, "bindings",
                                                          [ { name: "Exchange", 
   field: "exchange",      width: "90px"},
                                                            { name: "Binding 
Key", field: "name",          width: "120px"},
-                                                           { name: 
"Arguments",   field: "arguments",     width: "200px"}
+                                                           { name: 
"Arguments",   field: "argumentString",     width: "200px"}
                                                          ]);
 
                                 thisObj.consumersGrid = new 
UpdatableStore(thisObj.queueData.consumers, "consumers",
@@ -273,9 +274,7 @@ require(["dojo/store/JsonRest",
                     var bindings = thisObj.queueData[ "bindings" ];
                     for(var i=0; i < bindings.length; i++)
                     {
-                        bindings[i].arguments = 
dojo.toJson(bindings[i].arguments);
-                        bindings[i].argumentString = 
dojo.toJson(bindings[i].arguments);
-
+                        bindings[i].argumentString = 
json.stringify(bindings[i].arguments);
                     }
 
 

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/vhost.js
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/vhost.js?rev=1306213&r1=1306212&r2=1306213&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/vhost.js
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/vhost.js
 Wed Mar 28 08:39:08 2012
@@ -257,7 +257,22 @@ require(["dojo/store/JsonRest",
                                                            { name: "Type", 
field: "type", width: "120px"},
                                                            { name: "Binding 
Count", field: "bindingCount",
                                                            width: "90px"}
-                                                         ]);
+                                                         ],
+                                                           function(obj)
+                                                           {
+                                                               
dojo.connect(obj.grid, "onRowDblClick", obj.grid,
+                                                               function(evt){
+                                                                      var idx 
= evt.rowIndex,
+                                                                      item = 
this.getItem(idx);
+
+                                                                      url = 
"/exchange?vhost="
+                                                                       + 
thisObj.vhostData.name + "&exchange=" +
+                                                                      
obj.dataStore.getValue(item,"name");
+
+                                                                      
window.location = url;
+
+                                                              });
+                                                           } );
 
 
                                 thisObj.connectionsGrid = new 
UpdatableStore(thisObj.vhostData.connections,

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Publisher.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Publisher.java?rev=1306213&r1=1306212&r2=1306213&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Publisher.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Publisher.java
 Wed Mar 28 08:39:08 2012
@@ -20,6 +20,6 @@
  */
 package org.apache.qpid.server.model;
 
-public interface Publisher
+public interface Publisher extends ConfiguredObject
 {
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to