diff options
author | Robert Gemmell <robbie@apache.org> | 2009-07-17 14:00:57 +0000 |
---|---|---|
committer | Robert Gemmell <robbie@apache.org> | 2009-07-17 14:00:57 +0000 |
commit | 96b013f6670b450311f2cd669bab5ed5a3f07d32 (patch) | |
tree | 8e4bbb81e49b4c59b2b7dc6e903c25d0ac0b9d32 | |
parent | 1f9d2e11738d88a48118b3378fef7bfd7179f763 (diff) | |
download | qpid-python-96b013f6670b450311f2cd669bab5ed5a3f07d32.tar.gz |
QPID-1990: add the messages queue position to the viewMessages() operation results, update management console QueueOperations tab accordingly
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@795089 13f79535-47bb-0310-9956-ffa450edef68
3 files changed, 25 insertions, 6 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java index 6beb018d6f..785b668687 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java @@ -82,7 +82,7 @@ public class AMQQueueMBean extends AMQManagedObject implements ManagedQueue, Que 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 @@ public class AMQQueueMBean extends AMQManagedObject implements ManagedQueue, Que _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 @@ public class AMQQueueMBean extends AMQManagedObject implements ManagedQueue, Que // 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); } diff --git a/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java b/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java index d0d80fde0f..9c21d64cdf 100644 --- a/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java +++ b/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java @@ -40,12 +40,13 @@ import org.apache.qpid.management.common.mbeans.annotations.MBeanOperationParame 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 diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java index a3954649eb..bb934593a2 100644 --- a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java +++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java @@ -35,6 +35,7 @@ import javax.management.openmbean.CompositeData; 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 @@ public class QueueOperationsTabControl extends TabControl private TableViewer _tableViewer = null; private Composite _paramsComposite = null; + private ApiVersion _ApiVersion; + private TabularDataSupport _messages = null; private ManagedQueue _qmb; @@ -91,11 +94,13 @@ public class QueueOperationsTabControl extends TabControl 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 @@ public class QueueOperationsTabControl extends TabControl 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 @@ public class QueueOperationsTabControl extends TabControl 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 @@ public class QueueOperationsTabControl extends TabControl 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; } |