summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2009-07-17 14:00:57 +0000
committerRobert Gemmell <robbie@apache.org>2009-07-17 14:00:57 +0000
commit96b013f6670b450311f2cd669bab5ed5a3f07d32 (patch)
tree8e4bbb81e49b4c59b2b7dc6e903c25d0ac0b9d32
parent1f9d2e11738d88a48118b3378fef7bfd7179f763 (diff)
downloadqpid-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
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java6
-rw-r--r--qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java7
-rw-r--r--qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java18
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;
}