You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by bh...@apache.org on 2007/03/26 18:43:25 UTC

svn commit: r522567 - in /incubator/qpid/branches/M2/java: broker/src/main/java/org/apache/qpid/server/queue/ broker/src/test/java/org/apache/qpid/server/queue/ management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/ management/eclip...

Author: bhupendrab
Date: Mon Mar 26 09:43:24 2007
New Revision: 522567

URL: http://svn.apache.org/viewvc?view=rev&rev=522567
Log:
QPID-421  displaying AMQMessage properties in user understandable format in Management Console, like Persistent instead of 1.

Modified:
    incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
    incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java
    incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/ManagedQueue.java
    incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java
    incubator/qpid/branches/M2/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueAlertTest.java
    incubator/qpid/branches/M2/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueMBeanTest.java
    incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java
    incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/AttributesTabControl.java

Modified: incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java?view=diff&rev=522567&r1=522566&r2=522567
==============================================================================
--- incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java (original)
+++ incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java Mon Mar 26 09:43:24 2007
@@ -118,7 +118,7 @@
 
     /** max allowed number of messages on a queue. */
     @Configured(path = "maximumMessageCount", defaultValue = "0")
-    public int _maximumMessageCount;
+    public long _maximumMessageCount;
 
     /** max queue depth for the queue */
     @Configured(path = "maximumQueueDepth", defaultValue = "0")
@@ -350,12 +350,12 @@
         return _totalMessagesReceived.get();
     }
 
-    public int getMaximumMessageCount()
+    public long getMaximumMessageCount()
     {
         return _maximumMessageCount;
     }
 
-    public void setMaximumMessageCount(int value)
+    public void setMaximumMessageCount(long value)
     {
         _maximumMessageCount = value;
     }

Modified: incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java?view=diff&rev=522567&r1=522566&r2=522567
==============================================================================
--- incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java (original)
+++ incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java Mon Mar 26 09:43:24 2007
@@ -20,6 +20,8 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Date;
+import java.text.SimpleDateFormat;
 
 import javax.management.JMException;
 import javax.management.MBeanException;
@@ -44,6 +46,7 @@
 import org.apache.qpid.framing.CommonContentHeaderProperties;
 import org.apache.qpid.framing.ContentHeaderBody;
 import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.framing.BasicContentHeaderProperties;
 import org.apache.qpid.framing.abstraction.ContentChunk;
 import org.apache.qpid.server.management.AMQManagedObject;
 import org.apache.qpid.server.management.MBeanConstructor;
@@ -58,8 +61,8 @@
 @MBeanDescription("Management Interface for AMQQueue")
 public class AMQQueueMBean extends AMQManagedObject implements ManagedQueue, QueueNotificationListener
 {
-
     private static final Logger _logger = Logger.getLogger(AMQQueueMBean.class);
+    private static final SimpleDateFormat _dateFormat = new SimpleDateFormat("MM-dd-yy HH:mm:ss.SSS z");
 
     /**
      * Since the MBean is not associated with a real channel we can safely create our own store context
@@ -197,12 +200,12 @@
         return _queue.getReceivedMessageCount();
     }
 
-    public Integer getMaximumMessageCount()
+    public Long getMaximumMessageCount()
     {
         return _queue.getMaximumMessageCount();
     }
 
-    public void setMaximumMessageCount(Integer value)
+    public void setMaximumMessageCount(Long value)
     {
         _queue.setMaximumMessageCount(value);
     }
@@ -370,8 +373,7 @@
                 AMQMessage msg = list.get(i - 1);
                 ContentHeaderBody headerBody = msg.getContentHeaderBody();
                 // Create header attributes list
-                CommonContentHeaderProperties headerProperties = (CommonContentHeaderProperties) headerBody.properties;
-                String[] headerAttributes = headerProperties.toString().split(",");
+                String[] headerAttributes = getMessageHeaderProperties(headerBody);
                 Object[] itemValues = {msg.getMessageId(), headerAttributes, headerBody.bodySize, msg.isRedelivered()};
                 CompositeData messageData = new CompositeDataSupport(_messageDataType, _msgAttributeNames, itemValues);
                 _messageList.put(messageData);
@@ -383,6 +385,35 @@
         }
 
         return _messageList;
+    }
+
+    private String[] getMessageHeaderProperties(ContentHeaderBody headerBody)
+    {
+        List<String> list = new ArrayList<String>();
+        BasicContentHeaderProperties headerProperties = (BasicContentHeaderProperties) headerBody.properties;
+        list.add("reply-to = " + headerProperties.getReplyToAsString());
+        list.add("propertyFlags = " + headerProperties.getPropertyFlags());
+        list.add("ApplicationID = " + headerProperties.getAppIdAsString());
+        list.add("ClusterID = " + headerProperties.getClusterIdAsString());
+        list.add("UserId = " + headerProperties.getUserIdAsString());
+        list.add("JMSMessageID = " + headerProperties.getMessageIdAsString());
+        list.add("JMSCorrelationID = " + headerProperties.getCorrelationIdAsString());
+
+        int delMode = headerProperties.getDeliveryMode();
+        list.add("JMSDeliveryMode = " + (delMode == 1 ? "Persistent" : "Non_Persistent"));
+
+        list.add("JMSPriority = " + headerProperties.getPriority());
+        list.add("JMSType = " + headerProperties.getType());
+        
+        long longDate = headerProperties.getExpiration();
+        String strDate = (longDate != 0) ? _dateFormat.format(new Date(longDate)) : null;
+        list.add("JMSExpiration = " + strDate);
+
+        longDate = headerProperties.getTimestamp();
+        strDate = (longDate != 0) ? _dateFormat.format(new Date(longDate)) : null;
+        list.add("JMSTimestamp = " + strDate);
+
+        return list.toArray(new String[list.size()]);
     }
 
     /**

Modified: incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/ManagedQueue.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/ManagedQueue.java?view=diff&rev=522567&r1=522566&r2=522567
==============================================================================
--- incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/ManagedQueue.java (original)
+++ incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/ManagedQueue.java Mon Mar 26 09:43:24 2007
@@ -156,7 +156,7 @@
      * @return maximum muber of message allowed to be stored in the queue.
      * @throws IOException
      */
-    Integer getMaximumMessageCount() throws IOException;
+    Long getMaximumMessageCount() throws IOException;
 
     /**
      * Sets the maximum number of messages allowed to be stored in the queue.
@@ -164,7 +164,7 @@
      * @throws IOException
      */
     @MBeanAttribute(name="MaximumMessageCount", description="Threshold high value for number of undelivered messages in the queue")
-    void setMaximumMessageCount(Integer value) throws IOException;
+    void setMaximumMessageCount(Long value) throws IOException;
 
     /**
      * This is useful for setting notifications or taking required action if the size of messages

Modified: incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java?view=diff&rev=522567&r1=522566&r2=522567
==============================================================================
--- incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java (original)
+++ incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java Mon Mar 26 09:43:24 2007
@@ -27,7 +27,7 @@
         boolean notifyIfNecessary(AMQMessage msg, AMQQueue queue, QueueNotificationListener listener)
         {
             int msgCount = queue.getMessageCount();
-            final int maximumMessageCount = queue.getMaximumMessageCount();
+            final long maximumMessageCount = queue.getMaximumMessageCount();
             if (maximumMessageCount!= 0 && msgCount >= maximumMessageCount)
             {
                 listener.notifyClients(this, queue, msgCount + ": Maximum count on queue threshold ("+ maximumMessageCount +") breached.");

Modified: incubator/qpid/branches/M2/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueAlertTest.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueAlertTest.java?view=diff&rev=522567&r1=522566&r2=522567
==============================================================================
--- incubator/qpid/branches/M2/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueAlertTest.java (original)
+++ incubator/qpid/branches/M2/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueAlertTest.java Mon Mar 26 09:43:24 2007
@@ -42,7 +42,7 @@
 /** This class tests all the alerts an AMQQueue can throw based on threshold values of different parameters */
 public class AMQQueueAlertTest extends TestCase
 {
-    private final static int MAX_MESSAGE_COUNT = 50;
+    private final static long MAX_MESSAGE_COUNT = 50;
     private final static long MAX_MESSAGE_AGE = 250;   // 0.25 sec
     private final static long MAX_MESSAGE_SIZE = 2000;  // 2 KB
     private final static long MAX_QUEUE_DEPTH = 10000;  // 10 KB
@@ -175,7 +175,7 @@
                                        new AMQShortString("consumer_tag"), true, null, false, false);
         
         _queueMBean = (AMQQueueMBean) _queue.getManagedObject();
-        _queueMBean.setMaximumMessageCount(9999);   // Set a high value, because this is not being tested
+        _queueMBean.setMaximumMessageCount(9999l);   // Set a high value, because this is not being tested
         _queueMBean.setMaximumQueueDepth(MAX_QUEUE_DEPTH);
 
         // Send messages(no of message to be little more than what can cause a Queue_Depth alert)
@@ -268,9 +268,9 @@
         _virtualHost = applicationRegistry.getVirtualHostRegistry().getVirtualHost("test");
     }
 
-    private void sendMessages(int messageCount, long size) throws AMQException
+    private void sendMessages(long messageCount, long size) throws AMQException
     {
-        AMQMessage[] messages = new AMQMessage[messageCount];
+        AMQMessage[] messages = new AMQMessage[(int)messageCount];
         for (int i = 0; i < messages.length; i++)
         {
             messages[i] = message(false, size);

Modified: incubator/qpid/branches/M2/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueMBeanTest.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueMBeanTest.java?view=diff&rev=522567&r1=522566&r2=522567
==============================================================================
--- incubator/qpid/branches/M2/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueMBeanTest.java (original)
+++ incubator/qpid/branches/M2/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueMBeanTest.java Mon Mar 26 09:43:24 2007
@@ -116,7 +116,7 @@
     public void testGeneralProperties()
     {
         long maxQueueDepth = 1000; // in bytes
-        _queueMBean.setMaximumMessageCount(50000);
+        _queueMBean.setMaximumMessageCount(50000l);
         _queueMBean.setMaximumMessageSize(2000l);
         _queueMBean.setMaximumQueueDepth(maxQueueDepth);
 

Modified: incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java?view=diff&rev=522567&r1=522566&r2=522567
==============================================================================
--- incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java (original)
+++ incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java Mon Mar 26 09:43:24 2007
@@ -21,6 +21,7 @@
 package org.apache.qpid.management.ui.jmx;
 
 import java.io.IOException;
+import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Iterator;
@@ -65,6 +66,9 @@
         String debug = System.getProperty("debug");
         _debug = "true".equalsIgnoreCase(debug) ? true : false;
     }
+    
+    public static final BigInteger MAX_LONG = BigInteger.valueOf(Long.MAX_VALUE);
+    public static final BigInteger MAX_INT = BigInteger.valueOf(Integer.MAX_VALUE);
     /**
      * Retrieves the MBeanInfo from MBeanServer and stores in the application registry
      * @param mbean  managed bean
@@ -333,10 +337,19 @@
         Object newValue = value;
         if (attribute.getDataType().equals(Long.class.getName()))
         {
+            if (MAX_LONG.compareTo(new BigInteger(value)) == -1)
+            {
+                throw new ManagementConsoleException("Entered value is too big for \"" +
+                                                     ViewUtility.getDisplayText(attribute.getName()) + "\"");
+            }
             newValue = new Long(Long.parseLong(value));
         }
         else if (attribute.getDataType().equals(Integer.class.getName()))
         {
+            if (MAX_INT.compareTo(new BigInteger(value)) == -1)
+            {
+                throw new ManagementConsoleException("Entered value is too big for " + attribute.getName());
+            }
             newValue = new Integer(Integer.parseInt(value));
         }
         

Modified: incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/AttributesTabControl.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/AttributesTabControl.java?view=diff&rev=522567&r1=522566&r2=522567
==============================================================================
--- incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/AttributesTabControl.java (original)
+++ incubator/qpid/branches/M2/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/AttributesTabControl.java Mon Mar 26 09:43:24 2007
@@ -488,7 +488,7 @@
         GridData layoutData = new GridData(SWT.TRAIL, SWT.TOP, false, false);
         label.setLayoutData(layoutData);
         Text  value = new Text(parent, SWT.BEGINNING | SWT.BORDER |SWT.READ_ONLY);
-        value.setText(attribute.getName());
+        value.setText(ViewUtility.getDisplayText(attribute.getName()));
         value.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));