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 2009/07/17 16:00:57 UTC

svn commit: r795089 - in /qpid/trunk/qpid/java: broker/src/main/java/org/apache/qpid/server/queue/ management/common/src/main/java/org/apache/qpid/management/common/mbeans/ management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/

Author: robbie
Date: Fri Jul 17 14:00:57 2009
New Revision: 795089

URL: http://svn.apache.org/viewvc?rev=795089&view=rev
Log:
QPID-1990: add the messages queue position to the viewMessages() operation results, update management console QueueOperations tab accordingly

Modified:
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java
    qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java
    qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java?rev=795089&r1=795088&r2=795089&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java Fri Jul 17 14:00:57 2009
@@ -82,7 +82,7 @@
     private String _queueName = null;
     // OpenMBean data types for viewMessages method
 
-    private static OpenType[] _msgAttributeTypes = new OpenType[4]; // AMQ message attribute types.
+    private static OpenType[] _msgAttributeTypes = new OpenType[5]; // AMQ message attribute types.
     private static CompositeType _messageDataType = null; // Composite type for representing AMQ Message data.
     private static TabularType _messagelistDataType = null; // Datatype for representing AMQ messages list.
 
@@ -139,6 +139,7 @@
         _msgAttributeTypes[1] = new ArrayType(1, SimpleType.STRING); // For header attributes
         _msgAttributeTypes[2] = SimpleType.LONG; // For size
         _msgAttributeTypes[3] = SimpleType.BOOLEAN; // For redelivered
+        _msgAttributeTypes[4] = SimpleType.LONG; // For queue position
 
         _messageDataType = new CompositeType("Message", "AMQ Message", VIEW_MSGS_COMPOSITE_ITEM_NAMES, 
                                 VIEW_MSGS_COMPOSITE_ITEM_DESCRIPTIONS, _msgAttributeTypes);
@@ -396,11 +397,12 @@
             // Create the tabular list of message header contents
             for (int i = beginIndex; (i <= endIndex) && (i <= list.size()); i++)
             {
+                long position = i;
                 AMQMessage msg = list.get(i - 1).getMessage();
                 ContentHeaderBody headerBody = msg.getContentHeaderBody();
                 // Create header attributes list
                 String[] headerAttributes = getMessageHeaderProperties(headerBody);
-                Object[] itemValues = { msg.getMessageId(), headerAttributes, headerBody.bodySize, msg.isRedelivered() };
+                Object[] itemValues = { msg.getMessageId(), headerAttributes, headerBody.bodySize, msg.isRedelivered(), position};
                 CompositeData messageData = new CompositeDataSupport(_messageDataType, VIEW_MSGS_COMPOSITE_ITEM_NAMES, itemValues);
                 _messageList.put(messageData);
             }

Modified: qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java?rev=795089&r1=795088&r2=795089&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java (original)
+++ qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java Fri Jul 17 14:00:57 2009
@@ -40,12 +40,13 @@
 public interface ManagedQueue
 {
     static final String TYPE = "Queue";
-    static final int VERSION = 2;
+    static final int VERSION = 3;
 
     //TabularType and contained CompositeType key/description information for message list
     //For compatibility reasons, DONT MODIFY the existing key values if expanding the set. 
-    String[] VIEW_MSGS_COMPOSITE_ITEM_NAMES = {"AMQ MessageId", "Header", "Size(bytes)", "Redelivered"};
-    String[] VIEW_MSGS_COMPOSITE_ITEM_DESCRIPTIONS = {"AMQ MessageId", "Header", "Size(bytes)", "Redelivered"};
+    //"Queue Position" added in Qpid JMX API 1.3
+    String[] VIEW_MSGS_COMPOSITE_ITEM_NAMES = {"AMQ MessageId", "Header", "Size(bytes)", "Redelivered", "Queue Position"};
+    String[] VIEW_MSGS_COMPOSITE_ITEM_DESCRIPTIONS = {"AMQ MessageId", "Header", "Size(bytes)", "Redelivered", "Queue Position"};
     String[] VIEW_MSGS_TABULAR_UNIQUE_INDEX = {VIEW_MSGS_COMPOSITE_ITEM_NAMES[0]};
 
     //CompositeType key/description information for message content

Modified: qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java?rev=795089&r1=795088&r2=795089&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java (original)
+++ qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java Fri Jul 17 14:00:57 2009
@@ -35,6 +35,7 @@
 import javax.management.openmbean.CompositeDataSupport;
 import javax.management.openmbean.TabularDataSupport;
 
+import org.apache.qpid.management.ui.ApiVersion;
 import org.apache.qpid.management.ui.ApplicationRegistry;
 import org.apache.qpid.management.ui.ManagedBean;
 import org.apache.qpid.management.common.mbeans.ManagedQueue;
@@ -84,6 +85,8 @@
     private TableViewer _tableViewer = null;
     private Composite _paramsComposite = null;
             
+    private ApiVersion _ApiVersion;
+    
     private TabularDataSupport _messages = null;
     private ManagedQueue _qmb;
     
@@ -91,11 +94,13 @@
     static final String MSG_HEADER = ManagedQueue.VIEW_MSGS_COMPOSITE_ITEM_NAMES[1];
     static final String MSG_SIZE = ManagedQueue.VIEW_MSGS_COMPOSITE_ITEM_NAMES[2];
     static final String MSG_REDELIVERED = ManagedQueue.VIEW_MSGS_COMPOSITE_ITEM_NAMES[3];
+    static final String MSG_QUEUE_POS = ManagedQueue.VIEW_MSGS_COMPOSITE_ITEM_NAMES[4];
     
     public QueueOperationsTabControl(TabFolder tabFolder, JMXManagedObject mbean, MBeanServerConnection mbsc)
     {
         super(tabFolder);
         _mbean = mbean;
+        _ApiVersion = ApplicationRegistry.getServerRegistry(mbean).getManagementApiVersion();
         _qmb = (ManagedQueue) MBeanServerInvocationHandler.newProxyInstance(mbsc, 
                                 mbean.getObjectName(), ManagedQueue.class, false);
         _toolkit = new FormToolkit(_tabFolder.getDisplay());
@@ -184,7 +189,13 @@
         final TableSorter tableSorter = new TableSorter();
         
         String[] titles = {"AMQ ID", "Size(bytes)"};
-        int[] bounds = { 175, 175 };
+        if(_ApiVersion.greaterThanOrEqualTo(1, 3))
+        {
+           //if server management API is >= 1.3, show message's queue position
+           titles = new String[]{"AMQ ID", "Size(bytes)", "Queue Position"};
+        }
+
+        int[] bounds = { 175, 175, 140 };
         for (int i = 0; i < titles.length; i++) 
         {
             final int index = i;
@@ -415,6 +426,8 @@
                     return String.valueOf(((CompositeDataSupport) element).get(MSG_AMQ_ID));
                 case 1 : // msg size column 
                     return String.valueOf(((CompositeDataSupport) element).get(MSG_SIZE));
+                case 2 : // msg position in queue 
+                    return String.valueOf(((CompositeDataSupport) element).get(MSG_QUEUE_POS));
                 default :
                     return "-";
             }
@@ -476,6 +489,9 @@
                 case 1:
                     comparison = ((Long) msg1.get(MSG_SIZE)).compareTo((Long)msg2.get(MSG_SIZE));
                     break;
+                case 2:
+                    comparison = ((Long) msg1.get(MSG_QUEUE_POS)).compareTo((Long)msg2.get(MSG_QUEUE_POS));
+                    break;
                 default:
                     comparison = 0;
             }



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org