[jboss-cvs] JBoss Messaging SVN: r4885 - in trunk: src/main/org/jboss/messaging/core/management and 5 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Aug 28 06:03:45 EDT 2008


Author: jmesnil
Date: 2008-08-28 06:03:45 -0400 (Thu, 28 Aug 2008)
New Revision: 4885

Added:
   trunk/src/main/org/jboss/messaging/core/messagecounter/impl/MessageCounterHelper.java
Modified:
   trunk/src/config/jbm-beans.xml
   trunk/src/config/jbm-standalone-beans.xml
   trunk/src/main/org/jboss/messaging/core/management/ManagementService.java
   trunk/src/main/org/jboss/messaging/core/management/MessagingServerControlMBean.java
   trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java
   trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerControl.java
   trunk/src/main/org/jboss/messaging/core/management/impl/QueueControl.java
   trunk/src/main/org/jboss/messaging/jms/server/management/JMSQueueControlMBean.java
   trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSManagementServiceImpl.java
   trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSQueueControl.java
   trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSManagementServiceImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSQueueControlTest.java
Log:
JBMESSAGING-1410: Reenable message counters
  - aadded operations to list message counters and their history to JMSQueueControlMBean

Modified: trunk/src/config/jbm-beans.xml
===================================================================
--- trunk/src/config/jbm-beans.xml	2008-08-28 03:50:18 UTC (rev 4884)
+++ trunk/src/config/jbm-beans.xml	2008-08-28 10:03:45 UTC (rev 4885)
@@ -134,6 +134,9 @@
          <parameter>
             <inject bean="Configuration" property="JMXManagementEnabled" />
          </parameter>
+         <parameter>
+            <inject bean="ManagementService" property="messageCounterManager" />
+         </parameter>
       </constructor>
    </bean>
    

Modified: trunk/src/config/jbm-standalone-beans.xml
===================================================================
--- trunk/src/config/jbm-standalone-beans.xml	2008-08-28 03:50:18 UTC (rev 4884)
+++ trunk/src/config/jbm-standalone-beans.xml	2008-08-28 10:03:45 UTC (rev 4885)
@@ -153,6 +153,9 @@
          <parameter>
             <inject bean="Configuration" property="JMXManagementEnabled" />
          </parameter>
+         <parameter>
+            <inject bean="ManagementService" property="messageCounterManager" />
+         </parameter>
       </constructor>
    </bean>
    

Modified: trunk/src/main/org/jboss/messaging/core/management/ManagementService.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/ManagementService.java	2008-08-28 03:50:18 UTC (rev 4884)
+++ trunk/src/main/org/jboss/messaging/core/management/ManagementService.java	2008-08-28 10:03:45 UTC (rev 4885)
@@ -25,6 +25,7 @@
 import java.util.Set;
 
 import org.jboss.messaging.core.config.Configuration;
+import org.jboss.messaging.core.messagecounter.MessageCounterManager;
 import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.PostOffice;
 import org.jboss.messaging.core.security.Role;
@@ -42,6 +43,8 @@
  */
 public interface ManagementService
 {
+   MessageCounterManager getMessageCounterManager();
+
    MessagingServerControlMBean registerServer(PostOffice postOffice, StorageManager storageManager,
          Configuration configuration,
          HierarchicalRepository<Set<Role>> securityRepository,

Modified: trunk/src/main/org/jboss/messaging/core/management/MessagingServerControlMBean.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/MessagingServerControlMBean.java	2008-08-28 03:50:18 UTC (rev 4884)
+++ trunk/src/main/org/jboss/messaging/core/management/MessagingServerControlMBean.java	2008-08-28 10:03:45 UTC (rev 4885)
@@ -129,4 +129,7 @@
 
    void disableMessageCounters();
 
+   void resetAllMessageCounters();
+
+   void resetAllMessageCounterHistories();
 }

Modified: trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java	2008-08-28 03:50:18 UTC (rev 4884)
+++ trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java	2008-08-28 10:03:45 UTC (rev 4885)
@@ -106,8 +106,13 @@
 
    // Public --------------------------------------------------------
 
-   // ManagementRegistration implementation -------------------------
+   // ManagementService implementation -------------------------
 
+   public MessageCounterManager getMessageCounterManager()
+   {
+      return messageCounterManager;      
+   }
+   
    public MessagingServerControlMBean registerServer(PostOffice postOffice,
          StorageManager storageManager, Configuration configuration,
          HierarchicalRepository<Set<Role>> securityRepository,

Modified: trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerControl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerControl.java	2008-08-28 03:50:18 UTC (rev 4884)
+++ trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerControl.java	2008-08-28 10:03:45 UTC (rev 4885)
@@ -386,6 +386,16 @@
       setEnableMessageCounters(false);
    }
       
+   public void resetAllMessageCounters()
+   {
+      messageCounterManager.resetAllCounters();
+   }
+
+   public void resetAllMessageCounterHistories()
+   {
+      messageCounterManager.resetAllCounterHistories();
+   }
+
    public boolean isEnableMessageCounters()
    {
       return enableMessageCounters;

Modified: trunk/src/main/org/jboss/messaging/core/management/impl/QueueControl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/impl/QueueControl.java	2008-08-28 03:50:18 UTC (rev 4884)
+++ trunk/src/main/org/jboss/messaging/core/management/impl/QueueControl.java	2008-08-28 10:03:45 UTC (rev 4885)
@@ -26,7 +26,6 @@
 import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.List;
-import java.util.StringTokenizer;
 
 import javax.management.MBeanInfo;
 import javax.management.NotCompliantMBeanException;
@@ -43,6 +42,7 @@
 import org.jboss.messaging.core.management.QueueControlMBean;
 import org.jboss.messaging.core.messagecounter.MessageCounter;
 import org.jboss.messaging.core.messagecounter.MessageCounter.DayCounter;
+import org.jboss.messaging.core.messagecounter.impl.MessageCounterHelper;
 import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.Binding;
 import org.jboss.messaging.core.postoffice.PostOffice;
@@ -308,7 +308,7 @@
 
    public String listMessageCounterAsHTML()
    {
-      return listMessageCounterAsHTML(new MessageCounter[] { counter });
+      return MessageCounterHelper.listMessageCounterAsHTML(new MessageCounter[] { counter });
    }
 
    public TabularData listMessageCounterHistory() throws Exception
@@ -336,7 +336,7 @@
    
    public String listMessageCounterHistoryAsHTML()
    {
-      return listMessageCounterHistoryAsHTML(new MessageCounter[] { counter });
+      return MessageCounterHelper.listMessageCounterHistoryAsHTML(new MessageCounter[] { counter });
    }
    
    // StandardMBean overrides ---------------------------------------
@@ -357,133 +357,5 @@
 
    // Private -------------------------------------------------------
 
-   private String listMessageCounterAsHTML(MessageCounter[] counters)
-   {
-      if (counters == null)
-         return null;
-
-      String ret = "<table width=\"100%\" border=\"1\" cellpadding=\"1\" cellspacing=\"1\">"
-            + "<tr>"
-            + "<th>Type</th>"
-            + "<th>Name</th>"
-            + "<th>Subscription</th>"
-            + "<th>Durable</th>"
-            + "<th>Count</th>"
-            + "<th>CountDelta</th>"
-            + "<th>Depth</th>"
-            + "<th>DepthDelta</th>"
-            + "<th>Last Add</th>" + "</tr>";
-
-      for (int i = 0; i < counters.length; i++)
-      {
-         String data = counters[i].getCounterAsString();
-         StringTokenizer token = new StringTokenizer(data, ",");
-         String value;
-
-         ret += "<tr bgcolor=\"#" + ((i % 2) == 0 ? "FFFFFF" : "F0F0F0")
-               + "\">";
-
-         ret += "<td>" + token.nextToken() + "</td>"; // type
-         ret += "<td>" + token.nextToken() + "</td>"; // name
-         ret += "<td>" + token.nextToken() + "</td>"; // subscription
-         ret += "<td>" + token.nextToken() + "</td>"; // durable
-
-         ret += "<td>" + token.nextToken() + "</td>"; // count
-
-         value = token.nextToken(); // countDelta
-
-         if (value.equalsIgnoreCase("0"))
-            value = "-";
-
-         ret += "<td>" + value + "</td>";
-
-         ret += "<td>" + token.nextToken() + "</td>"; // depth
-
-         value = token.nextToken(); // depthDelta
-
-         if (value.equalsIgnoreCase("0"))
-            value = "-";
-
-         ret += "<td>" + value + "</td>";
-
-         ret += "<td>" + token.nextToken() + "</td>"; // date last add
-
-         ret += "</tr>";
-      }
-
-      ret += "</table>";
-
-      return ret;
-   }
-
-   private String listMessageCounterHistoryAsHTML(MessageCounter[] counters)
-   {
-      if (counters == null)
-         return null;
-
-      String ret = "";
-
-      for (int i = 0; i < counters.length; i++)
-      {
-         // destination name
-         ret += (counters[i].getDestinationTopic() ? "Topic '" : "Queue '");
-         ret += counters[i].getDestinationName() + "'";
-
-         if (counters[i].getDestinationSubscription() != null)
-            ret += "Subscription '" + counters[i].getDestinationSubscription()
-                  + "'";
-
-         // table header
-         ret += "<table width=\"100%\" border=\"1\" cellpadding=\"1\" cellspacing=\"1\">"
-               + "<tr>" + "<th>Date</th>";
-
-         for (int j = 0; j < 24; j++)
-            ret += "<th width=\"4%\">" + j + "</th>";
-
-         ret += "<th>Total</th></tr>";
-
-         // get history data as CSV string
-         StringTokenizer tokens = new StringTokenizer(counters[i]
-               .getHistoryAsString(), ",\n");
-
-         // get history day count
-         int days = Integer.parseInt(tokens.nextToken());
-
-         for (int j = 0; j < days; j++)
-         {
-            // next day counter row
-            ret += "<tr bgcolor=\"#" + ((j % 2) == 0 ? "FFFFFF" : "F0F0F0")
-                  + "\">";
-
-            // date
-            ret += "<td>" + tokens.nextToken() + "</td>";
-
-            // 24 hour counters
-            int total = 0;
-
-            for (int k = 0; k < 24; k++)
-            {
-               int value = Integer.parseInt(tokens.nextToken().trim());
-
-               if (value == -1)
-               {
-                  ret += "<td></td>";
-               } else
-               {
-                  ret += "<td>" + value + "</td>";
-
-                  total += value;
-               }
-            }
-
-            ret += "<td>" + total + "</td></tr>";
-         }
-
-         ret += "</table><br><br>";
-      }
-
-      return ret;
-   }
-   
    // Inner classes -------------------------------------------------
 }

Added: trunk/src/main/org/jboss/messaging/core/messagecounter/impl/MessageCounterHelper.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/messagecounter/impl/MessageCounterHelper.java	                        (rev 0)
+++ trunk/src/main/org/jboss/messaging/core/messagecounter/impl/MessageCounterHelper.java	2008-08-28 10:03:45 UTC (rev 4885)
@@ -0,0 +1,182 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */ 
+
+package org.jboss.messaging.core.messagecounter.impl;
+
+import java.util.StringTokenizer;
+
+import org.jboss.messaging.core.messagecounter.MessageCounter;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ *
+ * @version <tt>$Revision$</tt>
+ *
+ */
+public class MessageCounterHelper
+{
+   // Constants -----------------------------------------------------
+
+   // Attributes ----------------------------------------------------
+
+   // Static --------------------------------------------------------
+
+   // Constructors --------------------------------------------------
+
+   // Public --------------------------------------------------------
+
+   public static String listMessageCounterAsHTML(MessageCounter[] counters)
+   {
+      if (counters == null)
+         return null;
+
+      String ret = "<table width=\"100%\" border=\"1\" cellpadding=\"1\" cellspacing=\"1\">"
+            + "<tr>"
+            + "<th>Type</th>"
+            + "<th>Name</th>"
+            + "<th>Subscription</th>"
+            + "<th>Durable</th>"
+            + "<th>Count</th>"
+            + "<th>CountDelta</th>"
+            + "<th>Depth</th>"
+            + "<th>DepthDelta</th>"
+            + "<th>Last Add</th>" + "</tr>";
+
+      for (int i = 0; i < counters.length; i++)
+      {
+         String data = counters[i].getCounterAsString();
+         StringTokenizer token = new StringTokenizer(data, ",");
+         String value;
+
+         ret += "<tr bgcolor=\"#" + ((i % 2) == 0 ? "FFFFFF" : "F0F0F0")
+               + "\">";
+
+         ret += "<td>" + token.nextToken() + "</td>"; // type
+         ret += "<td>" + token.nextToken() + "</td>"; // name
+         ret += "<td>" + token.nextToken() + "</td>"; // subscription
+         ret += "<td>" + token.nextToken() + "</td>"; // durable
+
+         ret += "<td>" + token.nextToken() + "</td>"; // count
+
+         value = token.nextToken(); // countDelta
+
+         if (value.equalsIgnoreCase("0"))
+            value = "-";
+
+         ret += "<td>" + value + "</td>";
+
+         ret += "<td>" + token.nextToken() + "</td>"; // depth
+
+         value = token.nextToken(); // depthDelta
+
+         if (value.equalsIgnoreCase("0"))
+            value = "-";
+
+         ret += "<td>" + value + "</td>";
+
+         ret += "<td>" + token.nextToken() + "</td>"; // date last add
+
+         ret += "</tr>";
+      }
+
+      ret += "</table>";
+
+      return ret;
+   }
+
+   public static String listMessageCounterHistoryAsHTML(MessageCounter[] counters)
+   {
+      if (counters == null)
+         return null;
+
+      String ret = "";
+
+      for (int i = 0; i < counters.length; i++)
+      {
+         // destination name
+         ret += (counters[i].getDestinationTopic() ? "Topic '" : "Queue '");
+         ret += counters[i].getDestinationName() + "'";
+
+         if (counters[i].getDestinationSubscription() != null)
+            ret += "Subscription '" + counters[i].getDestinationSubscription()
+                  + "'";
+
+         // table header
+         ret += "<table width=\"100%\" border=\"1\" cellpadding=\"1\" cellspacing=\"1\">"
+               + "<tr>" + "<th>Date</th>";
+
+         for (int j = 0; j < 24; j++)
+            ret += "<th width=\"4%\">" + j + "</th>";
+
+         ret += "<th>Total</th></tr>";
+
+         // get history data as CSV string
+         StringTokenizer tokens = new StringTokenizer(counters[i]
+               .getHistoryAsString(), ",\n");
+
+         // get history day count
+         int days = Integer.parseInt(tokens.nextToken());
+
+         for (int j = 0; j < days; j++)
+         {
+            // next day counter row
+            ret += "<tr bgcolor=\"#" + ((j % 2) == 0 ? "FFFFFF" : "F0F0F0")
+                  + "\">";
+
+            // date
+            ret += "<td>" + tokens.nextToken() + "</td>";
+
+            // 24 hour counters
+            int total = 0;
+
+            for (int k = 0; k < 24; k++)
+            {
+               int value = Integer.parseInt(tokens.nextToken().trim());
+
+               if (value == -1)
+               {
+                  ret += "<td></td>";
+               } else
+               {
+                  ret += "<td>" + value + "</td>";
+
+                  total += value;
+               }
+            }
+
+            ret += "<td>" + total + "</td></tr>";
+         }
+
+         ret += "</table><br><br>";
+      }
+
+      return ret;
+   }
+   
+   // Package protected ---------------------------------------------
+
+   // Protected -----------------------------------------------------
+
+   // Private -------------------------------------------------------
+
+   // Inner classes -------------------------------------------------
+}

Modified: trunk/src/main/org/jboss/messaging/jms/server/management/JMSQueueControlMBean.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/server/management/JMSQueueControlMBean.java	2008-08-28 03:50:18 UTC (rev 4884)
+++ trunk/src/main/org/jboss/messaging/jms/server/management/JMSQueueControlMBean.java	2008-08-28 10:03:45 UTC (rev 4885)
@@ -25,6 +25,7 @@
 import static javax.management.MBeanOperationInfo.ACTION;
 import static javax.management.MBeanOperationInfo.INFO;
 
+import javax.management.openmbean.CompositeData;
 import javax.management.openmbean.TabularData;
 
 import org.jboss.messaging.core.management.Operation;
@@ -105,4 +106,13 @@
          @Parameter(name = "newPriority", desc = "the new priority (between 0 and 9)") int newPriority)
          throws Exception;
 
+   CompositeData listMessageCounter();
+
+   String listMessageCounterAsHTML();
+
+   TabularData listMessageCounterHistory() throws Exception;
+
+   String listMessageCounterHistoryAsHTML();
+
+
 }

Modified: trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSManagementServiceImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSManagementServiceImpl.java	2008-08-28 03:50:18 UTC (rev 4884)
+++ trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSManagementServiceImpl.java	2008-08-28 10:03:45 UTC (rev 4885)
@@ -30,6 +30,8 @@
 import javax.management.ObjectName;
 
 import org.jboss.messaging.core.management.impl.ManagementServiceImpl;
+import org.jboss.messaging.core.messagecounter.MessageCounter;
+import org.jboss.messaging.core.messagecounter.MessageCounterManager;
 import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.PostOffice;
 import org.jboss.messaging.core.server.Queue;
@@ -56,6 +58,7 @@
 
    public final MBeanServer mbeanServer;
    private final boolean jmxManagementEnabled;
+   private final MessageCounterManager messageCounterManager;
    private Map<ObjectName, Object> registry;
 
    // Static --------------------------------------------------------
@@ -90,11 +93,12 @@
    // Constructors --------------------------------------------------
 
    public JMSManagementServiceImpl(final MBeanServer mbeanServer,
-         final boolean jmxManagementEnabled)
+         final boolean jmxManagementEnabled, final MessageCounterManager messageCounterManager)
    {
       this.mbeanServer = mbeanServer;
       this.jmxManagementEnabled = jmxManagementEnabled;
       this.registry = new HashMap<ObjectName, Object>();
+      this.messageCounterManager = messageCounterManager;
    }
 
    // Public --------------------------------------------------------
@@ -123,9 +127,12 @@
          HierarchicalRepository<QueueSettings> queueSettingsRepository)
          throws Exception
    {
+      MessageCounter counter = new MessageCounter(queue.getName(), null, coreQueue, false, coreQueue.isDurable(),
+            messageCounterManager.getMaxDayCount());
+      messageCounterManager.registerMessageCounter(queue.getName(), counter);
       ObjectName objectName = getJMSQueueObjectName(queue.getQueueName());
       JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+            jndiBinding, postOffice, storageManager, queueSettingsRepository, counter);
       register(objectName, control);
       registerInJMX(objectName, control);
    }

Modified: trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSQueueControl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSQueueControl.java	2008-08-28 03:50:18 UTC (rev 4884)
+++ trunk/src/main/org/jboss/messaging/jms/server/management/impl/JMSQueueControl.java	2008-08-28 10:03:45 UTC (rev 4885)
@@ -22,18 +22,28 @@
 
 package org.jboss.messaging.jms.server.management.impl;
 
+import java.text.DateFormat;
 import java.util.ArrayList;
+import java.util.Date;
+import java.util.GregorianCalendar;
 import java.util.List;
 
 import javax.management.MBeanInfo;
 import javax.management.NotCompliantMBeanException;
 import javax.management.StandardMBean;
+import javax.management.openmbean.CompositeData;
 import javax.management.openmbean.TabularData;
 
+import org.jboss.logging.Logger;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.filter.Filter;
 import org.jboss.messaging.core.filter.impl.FilterImpl;
+import org.jboss.messaging.core.management.DayCounterInfo;
+import org.jboss.messaging.core.management.MessageCounterInfo;
 import org.jboss.messaging.core.management.impl.MBeanInfoHelper;
+import org.jboss.messaging.core.messagecounter.MessageCounter;
+import org.jboss.messaging.core.messagecounter.MessageCounter.DayCounter;
+import org.jboss.messaging.core.messagecounter.impl.MessageCounterHelper;
 import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.PostOffice;
 import org.jboss.messaging.core.server.MessageReference;
@@ -60,14 +70,17 @@
 {
    // Constants -----------------------------------------------------
 
+   private static final Logger log = Logger.getLogger(JMSQueueControl.class);
+
    // Attributes ----------------------------------------------------
 
    private final JBossQueue managedQueue;
-   private Queue coreQueue;
+   private final Queue coreQueue;
    private final String binding;
    private final PostOffice postOffice;
    private final StorageManager storageManager;
    private final HierarchicalRepository<QueueSettings> queueSettingsRepository;
+   private final MessageCounter counter;
 
    // Static --------------------------------------------------------
 
@@ -83,7 +96,8 @@
    public JMSQueueControl(final JBossQueue queue, final Queue coreQueue,
          final String jndiBinding, final PostOffice postOffice,
          final StorageManager storageManager,
-         HierarchicalRepository<QueueSettings> queueSettingsRepository)
+         final HierarchicalRepository<QueueSettings> queueSettingsRepository,
+         final MessageCounter counter)
          throws NotCompliantMBeanException
    {
       super(JMSQueueControlMBean.class);
@@ -93,6 +107,7 @@
       this.postOffice = postOffice;
       this.storageManager = storageManager;
       this.queueSettingsRepository = queueSettingsRepository;
+      this.counter = counter;
    }
 
    // Public --------------------------------------------------------
@@ -305,6 +320,46 @@
             queueSettingsRepository);
    }
 
+   public CompositeData listMessageCounter()
+   {
+      DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT,
+            DateFormat.MEDIUM);
+      String timestamp = dateFormat.format(new Date(counter.getLastUpdate()));
+      MessageCounterInfo info = new MessageCounterInfo(counter
+            .getDestinationName(), counter.getDestinationSubscription(),
+            counter.getDestinationDurable(), counter.getCount(), counter
+                  .getCountDelta(), counter.getMessageCount(), counter
+                  .getMessageCountDelta(), timestamp);
+      return info.toCompositeData();
+   }
+
+   public String listMessageCounterAsHTML()
+   {
+      return MessageCounterHelper.listMessageCounterAsHTML(new MessageCounter[] { counter });
+   }
+
+   public TabularData listMessageCounterHistory() throws Exception
+   {
+      List<DayCounter> history = counter.getHistory();
+      DayCounterInfo[] infos = new DayCounterInfo[history.size()];
+      for (int i = 0; i < infos.length; i++)
+      {
+         DayCounter dayCounter = history.get(i);
+         int[] counters = dayCounter.getCounters();
+         GregorianCalendar date = dayCounter.getDate();
+
+         DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT);
+         String strData = dateFormat.format(date.getTime());
+         infos[i] = new DayCounterInfo(strData, counters);
+      }
+      return DayCounterInfo.toTabularData(infos);
+   }
+   
+   public String listMessageCounterHistoryAsHTML()
+   {
+      return MessageCounterHelper.listMessageCounterHistoryAsHTML(new MessageCounter[] { counter });
+   }
+
    // StandardMBean overrides ---------------------------------------
 
    @Override

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSManagementServiceImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSManagementServiceImplTest.java	2008-08-28 03:50:18 UTC (rev 4884)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSManagementServiceImplTest.java	2008-08-28 10:03:45 UTC (rev 4885)
@@ -39,6 +39,8 @@
 
 import junit.framework.TestCase;
 
+import org.jboss.messaging.core.messagecounter.MessageCounter;
+import org.jboss.messaging.core.messagecounter.MessageCounterManager;
 import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.PostOffice;
 import org.jboss.messaging.core.server.Queue;
@@ -90,14 +92,15 @@
       expect(
             mbeanServer.registerMBean(isA(JMSServerControlMBean.class),
                   eq(objectName))).andReturn(objectInstance);
+      MessageCounterManager messageCounterManager = createMock(MessageCounterManager.class);
+      
+      replay(mbeanServer, server, messageCounterManager);
 
-      replay(mbeanServer, server);
-
       JMSManagementService service = new JMSManagementServiceImpl(mbeanServer,
-            true);
+            true, messageCounterManager);
       service.registerJMSServer(server);
       
-      verify(mbeanServer, server);
+      verify(mbeanServer, server, messageCounterManager);
    }
 
    public void testRegisterAlreadyRegisteredJMSServer() throws Exception
@@ -115,14 +118,15 @@
       expect(
             mbeanServer.registerMBean(isA(JMSServerControlMBean.class),
                   eq(objectName))).andReturn(objectInstance);
+      MessageCounterManager messageCounterManager = createMock(MessageCounterManager.class);
+      
+      replay(mbeanServer, server, messageCounterManager);
 
-      replay(mbeanServer, server);
-
       JMSManagementService service = new JMSManagementServiceImpl(mbeanServer,
-            true);
+            true, messageCounterManager);
       service.registerJMSServer(server);
       
-      verify(mbeanServer, server);
+      verify(mbeanServer, server, messageCounterManager);
    }
    
    public void testRegisterQueue() throws Exception
@@ -136,6 +140,7 @@
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
+      expect(coreQueue.isDurable()).andReturn(true);
       PostOffice postOffice = createMock(PostOffice.class);
       StorageManager storageManager = createMock(StorageManager.class);
       HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
@@ -145,14 +150,17 @@
       expect(
             mbeanServer.registerMBean(isA(JMSQueueControlMBean.class),
                   eq(objectName))).andReturn(objectInstance);
+      MessageCounterManager messageCounterManager = createMock(MessageCounterManager.class);
+      expect(messageCounterManager.getMaxDayCount()).andReturn(10);
+      messageCounterManager.registerMessageCounter(eq(name), isA(MessageCounter.class));
+      
+      replay(mbeanServer, messageCounterManager, coreQueue, postOffice, storageManager, queueSettingsRepository);
 
-      replay(mbeanServer, coreQueue, postOffice, storageManager, queueSettingsRepository);
-
       JMSManagementService service = new JMSManagementServiceImpl(mbeanServer,
-            true);
+            true, messageCounterManager);
       service.registerQueue(queue, coreQueue, jndiBinding, postOffice, storageManager, queueSettingsRepository);
 
-      verify(mbeanServer, coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verify(mbeanServer, messageCounterManager, coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
 
    public void testRegisterAlreadyRegisteredQueue() throws Exception
@@ -166,6 +174,7 @@
 
       JBossQueue queue = new JBossQueue(name);
       Queue coreQueue = createMock(Queue.class);
+      expect(coreQueue.isDurable()).andReturn(true);
       PostOffice postOffice = createMock(PostOffice.class);
       StorageManager storageManager = createMock(StorageManager.class);
       HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
@@ -176,14 +185,16 @@
       expect(
             mbeanServer.registerMBean(isA(JMSQueueControlMBean.class),
                   eq(objectName))).andReturn(objectInstance);
+      MessageCounterManager messageCounterManager = createMock(MessageCounterManager.class);
+      expect(messageCounterManager.getMaxDayCount()).andReturn(10);
+      messageCounterManager.registerMessageCounter(eq(name), isA(MessageCounter.class));
+      replay(mbeanServer, messageCounterManager, coreQueue, postOffice, storageManager, queueSettingsRepository);
 
-      replay(mbeanServer, coreQueue, postOffice, storageManager, queueSettingsRepository);
-
       JMSManagementService service = new JMSManagementServiceImpl(mbeanServer,
-            true);
+            true, messageCounterManager);
       service.registerQueue(queue, coreQueue, jndiBinding, postOffice, storageManager, queueSettingsRepository);
 
-      verify(mbeanServer, coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verify(mbeanServer, messageCounterManager, coreQueue, postOffice, storageManager, queueSettingsRepository);
    }
 
    public void testRegisterTopic() throws Exception
@@ -204,11 +215,12 @@
       expect(
             mbeanServer.registerMBean(isA(TopicControlMBean.class),
                   eq(objectName))).andReturn(objectInstance);
+      MessageCounterManager messageCounterManager = createMock(MessageCounterManager.class);
 
-      replay(mbeanServer, postOffice, storageManager);
+      replay(mbeanServer, messageCounterManager, postOffice, storageManager);
 
       JMSManagementService service = new JMSManagementServiceImpl(mbeanServer,
-            true);
+            true, messageCounterManager);
       service.registerTopic(topic, jndiBinding, postOffice, storageManager);
 
       verify(mbeanServer, postOffice, storageManager);
@@ -233,14 +245,15 @@
       expect(
             mbeanServer.registerMBean(isA(TopicControlMBean.class),
                   eq(objectName))).andReturn(objectInstance);
+      MessageCounterManager messageCounterManager = createMock(MessageCounterManager.class);
 
-      replay(mbeanServer, postOffice, storageManager);
+      replay(mbeanServer, messageCounterManager, postOffice, storageManager);
 
       JMSManagementService service = new JMSManagementServiceImpl(mbeanServer,
-            true);
+            true, messageCounterManager);
       service.registerTopic(topic, jndiBinding, postOffice, storageManager);
 
-      verify(mbeanServer, postOffice, storageManager);
+      verify(mbeanServer, messageCounterManager, postOffice, storageManager);
    }
 
    public void testRegisterConnectionFactory() throws Exception
@@ -261,14 +274,15 @@
       expect(
             mbeanServer.registerMBean(isA(ConnectionFactoryControlMBean.class),
                   eq(objectName))).andReturn(objectInstance);
+      MessageCounterManager messageCounterManager = createMock(MessageCounterManager.class);
 
-      replay(mbeanServer, connectionFactory);
+      replay(mbeanServer, messageCounterManager, connectionFactory);
 
       JMSManagementService service = new JMSManagementServiceImpl(mbeanServer,
-            true);
+            true, messageCounterManager);
       service.registerConnectionFactory(name, connectionFactory, bindings);
 
-      verify(mbeanServer, connectionFactory);
+      verify(mbeanServer, messageCounterManager, connectionFactory);
    }
 
    public void testRegisterAlreadyRegisteredConnectionFactory() throws Exception
@@ -290,14 +304,15 @@
       expect(
             mbeanServer.registerMBean(isA(ConnectionFactoryControlMBean.class),
                   eq(objectName))).andReturn(objectInstance);
+      MessageCounterManager messageCounterManager = createMock(MessageCounterManager.class);
 
-      replay(mbeanServer, connectionFactory);
+      replay(mbeanServer, messageCounterManager, connectionFactory);
 
       JMSManagementService service = new JMSManagementServiceImpl(mbeanServer,
-            true);
+            true, messageCounterManager);
       service.registerConnectionFactory(name, connectionFactory, bindings);
 
-      verify(mbeanServer, connectionFactory);
+      verify(mbeanServer, messageCounterManager, connectionFactory);
    }
    // Package protected ---------------------------------------------
 

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSQueueControlTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSQueueControlTest.java	2008-08-28 03:50:18 UTC (rev 4884)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/jms/server/management/impl/JMSQueueControlTest.java	2008-08-28 10:03:45 UTC (rev 4885)
@@ -38,6 +38,7 @@
 import java.util.HashSet;
 import java.util.List;
 
+import javax.management.NotCompliantMBeanException;
 import javax.management.openmbean.CompositeData;
 import javax.management.openmbean.TabularData;
 
@@ -45,6 +46,7 @@
 
 import org.easymock.EasyMock;
 import org.jboss.messaging.core.filter.Filter;
+import org.jboss.messaging.core.messagecounter.MessageCounter;
 import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.PostOffice;
 import org.jboss.messaging.core.server.MessageReference;
@@ -64,6 +66,15 @@
  */
 public class JMSQueueControlTest extends TestCase
 {
+   private String jndiBinding;
+   private String name;
+   private JBossQueue queue;
+   private Queue coreQueue;
+   private PostOffice postOffice;
+   private StorageManager storageManager;
+   private HierarchicalRepository queueSettingsRepository;
+   private MessageCounter counter;
+
    // Constants -----------------------------------------------------
 
    // Attributes ----------------------------------------------------
@@ -76,294 +87,165 @@
 
    public void testGetName() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
+      replayMockedAttributes();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
-
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
-
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertEquals(name, control.getName());
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testGetAddress() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
+      replayMockedAttributes();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
-
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
-
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertEquals(queue.getAddress(), control.getAddress());
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testGetJNDIBinding() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
+      replayMockedAttributes();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
-
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
-
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertEquals(jndiBinding, control.getJNDIBinding());
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testIsTemporary() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
+      replayMockedAttributes();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
-
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
-
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertEquals(queue.isTemporary(), control.isTemporary());
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testIsClustered() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       boolean clustered = randomBoolean();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.isClustered()).andReturn(clustered);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+      replayMockedAttributes();
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
-
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertEquals(clustered, control.isClustered());
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testIsDurabled() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       boolean durable = randomBoolean();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.isDurable()).andReturn(durable);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+      replayMockedAttributes();
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
-
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertEquals(durable, control.isDurable());
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testGetMessageCount() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       int count = randomInt();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.getMessageCount()).andReturn(count);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+      replayMockedAttributes();
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
-
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertEquals(count, control.getMessageCount());
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testGetMessagesAdded() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       int count = randomInt();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.getMessagesAdded()).andReturn(count);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+      replayMockedAttributes();
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
-
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertEquals(count, control.getMessagesAdded());
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testGetConsumerCount() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       int count = randomInt();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.getConsumerCount()).andReturn(count);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+      replayMockedAttributes();
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
-
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertEquals(count, control.getConsumerCount());
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testGetDeliveringCount() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       int count = randomInt();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.getDeliveringCount()).andReturn(count);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+      replayMockedAttributes();
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
-
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertEquals(count, control.getDeliveringCount());
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testGetMaxSizeBytes() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       int size = randomInt();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.getMaxSizeBytes()).andReturn(size);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+      replayMockedAttributes();
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
-
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertEquals(size, control.getMaxSizeBytes());
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testGetSizeBytes() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       int size = randomInt();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.getSizeBytes()).andReturn(size);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+      replayMockedAttributes();
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
-
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertEquals(size, control.getSizeBytes());
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testGetScheduledCount() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       int count = randomInt();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.getScheduledCount()).andReturn(count);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+      replayMockedAttributes();
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
-
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertEquals(count, control.getScheduledCount());
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testGetDLQ() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       final String dlq = randomString();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
-
       QueueSettings settings = new QueueSettings()
       {
          @Override
@@ -374,27 +256,18 @@
       };
       expect(queueSettingsRepository.getMatch(name)).andReturn(settings);
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      replayMockedAttributes();
 
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertEquals(dlq, control.getDLQ());
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testGetExpiryQueue() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       final String expiryQueue = randomString();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
-
       QueueSettings settings = new QueueSettings()
       {
          @Override
@@ -406,28 +279,19 @@
       };
       expect(queueSettingsRepository.getMatch(name)).andReturn(settings);
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      replayMockedAttributes();
 
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertEquals(expiryQueue, control.getExpiryQueue());
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testRemoveMessage() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       String jmsMessageID = randomString();
       long messageID = randomLong();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
-
       List<MessageReference> refs = new ArrayList<MessageReference>();
       MessageReference ref = createMock(MessageReference.class);
       ServerMessage message = createMock(ServerMessage.class);
@@ -438,44 +302,30 @@
       expect(coreQueue.deleteReference(messageID, storageManager)).andReturn(
             true);
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository,
-            ref, message);
+      replayMockedAttributes();
+      replay(ref, message);
 
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertTrue(control.removeMessage(jmsMessageID));
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository,
-            ref, message);
+      verifyMockedAttributes();
+      verify(ref, message);
    }
 
    public void testRemoveAllMessages() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
-
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
       coreQueue.deleteAllReferences(storageManager);
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      replayMockedAttributes();
 
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       control.removeAllMessages();
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testListMessages() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
-
-      JBossQueue queue = new JBossQueue(name);
       String filterStr = "color = 'green'";
       List<MessageReference> refs = new ArrayList<MessageReference>();
       MessageReference ref = createMock(MessageReference.class);
@@ -496,43 +346,29 @@
             new HashSet<SimpleString>());
       expect(ref.getMessage()).andReturn(message);
       refs.add(ref);
-      Queue coreQueue = createMock(Queue.class);
       expect(coreQueue.list(isA(Filter.class))).andReturn(refs);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository,
-            ref, message);
+      replayMockedAttributes();
+      replay(ref, message);
 
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       TabularData data = control.listMessages(filterStr);
       assertEquals(1, data.size());
       CompositeData info = data.get(new Object[] { message.getProperty(
             new SimpleString("JMSMessageID")).toString() });
       assertNotNull(info);
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository,
-            ref, message);
+      verifyMockedAttributes();
+      verify(ref, message);
    }
 
    public void testListMessagesThrowsException() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       String invalidFilterStr = "this is not a valid filter";
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+      replayMockedAttributes();
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
-
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       try
       {
          control.listMessages(invalidFilterStr);
@@ -542,22 +378,14 @@
 
       }
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testExpireMessage() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       String jmsMessageID = randomString();
       long messageID = randomLong();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
-
       List<MessageReference> refs = new ArrayList<MessageReference>();
       MessageReference ref = createMock(MessageReference.class);
       ServerMessage serverMessage = createMock(ServerMessage.class);
@@ -569,35 +397,26 @@
             coreQueue.expireMessage(messageID, storageManager, postOffice,
                   queueSettingsRepository)).andReturn(true);
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository,
-            ref, serverMessage);
+      replayMockedAttributes();
+      replay(ref, serverMessage);
 
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertTrue(control.expireMessage(jmsMessageID));
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository,
-            ref, serverMessage);
+      verifyMockedAttributes();
+      verify(ref, serverMessage);
    }
 
    public void testExpireMessageWithNoJMSMesageID() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       String jmsMessageID = randomString();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
       expect(coreQueue.list(isA(Filter.class))).andReturn(
             new ArrayList<MessageReference>());
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      replayMockedAttributes();
 
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       try
       {
          control.expireMessage(jmsMessageID);
@@ -606,20 +425,13 @@
       {
       }
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testExpireMessages() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       long messageID = randomLong();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
       List<MessageReference> refs = new ArrayList<MessageReference>();
       MessageReference ref = createMock(MessageReference.class);
       ServerMessage serverMessage = createMock(ServerMessage.class);
@@ -631,27 +443,21 @@
             coreQueue.expireMessage(messageID, storageManager, postOffice,
                   queueSettingsRepository)).andReturn(true);
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository, ref, serverMessage);
+      replayMockedAttributes();
+      replay(ref, serverMessage);
 
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertEquals(1, control.expireMessages("color = 'green'"));
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository, ref, serverMessage);
+      verifyMockedAttributes();
+      verify(ref, serverMessage);
    }
 
    public void testSendMessageToDLQ() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       String jmsMessageID = randomString();
       long messageID = randomLong();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
       List<MessageReference> refs = new ArrayList<MessageReference>();
       MessageReference ref = createMock(MessageReference.class);
       ServerMessage serverMessage = createMock(ServerMessage.class);
@@ -659,35 +465,29 @@
       expect(ref.getMessage()).andReturn(serverMessage);
       refs.add(ref);
       expect(coreQueue.list(isA(Filter.class))).andReturn(refs);
-      expect(coreQueue.sendMessageToDLQ(messageID, storageManager, postOffice, queueSettingsRepository)).andReturn(true);
-      
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository, ref, serverMessage);
+      expect(
+            coreQueue.sendMessageToDLQ(messageID, storageManager, postOffice,
+                  queueSettingsRepository)).andReturn(true);
 
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      replayMockedAttributes();
+      replay(ref, serverMessage);
+
+      JMSQueueControl control = createControl();
       assertTrue(control.sendMessageToDLQ(jmsMessageID));
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository, ref, serverMessage);
+      verifyMockedAttributes();
+      verify(ref, serverMessage);
    }
 
    public void testSendMessageToDLQWithNoJMSMessageID() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       String jmsMessageID = randomString();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
       expect(coreQueue.list(isA(Filter.class))).andReturn(
             new ArrayList<MessageReference>());
+      replayMockedAttributes();
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
-
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       try
       {
          control.sendMessageToDLQ(jmsMessageID);
@@ -696,22 +496,15 @@
       {
       }
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testChangeMessagePriority() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       byte newPriority = 5;
       String jmsMessageID = randomString();
       long messageID = randomLong();
-      
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+
       List<MessageReference> refs = new ArrayList<MessageReference>();
       MessageReference ref = createMock(MessageReference.class);
       ServerMessage serverMessage = createMock(ServerMessage.class);
@@ -719,34 +512,29 @@
       expect(ref.getMessage()).andReturn(serverMessage);
       refs.add(ref);
       expect(coreQueue.list(isA(Filter.class))).andReturn(refs);
-      expect(coreQueue.changeMessagePriority(messageID, newPriority, storageManager, postOffice, queueSettingsRepository)).andReturn(true);
+      expect(
+            coreQueue.changeMessagePriority(messageID, newPriority,
+                  storageManager, postOffice, queueSettingsRepository))
+            .andReturn(true);
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository, ref, serverMessage);
+      replayMockedAttributes();
+      replay(ref, serverMessage);
 
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       assertTrue(control.changeMessagePriority(jmsMessageID, newPriority));
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository, ref, serverMessage);
+      verifyMockedAttributes();
+      verify(ref, serverMessage);
    }
 
    public void testChangeMessagePriorityWithInvalidPriorityValues()
          throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       String jmsMessageID = randomString();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
+      replayMockedAttributes();
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
-
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       try
       {
          control.changeMessagePriority(jmsMessageID, -1);
@@ -763,28 +551,20 @@
       {
       }
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    public void testChangeMessagePriorityWithNoJMSMessageID() throws Exception
    {
-      String jndiBinding = randomString();
-      String name = randomString();
       byte newPriority = 5;
       String jmsMessageID = randomString();
 
-      JBossQueue queue = new JBossQueue(name);
-      Queue coreQueue = createMock(Queue.class);
-      PostOffice postOffice = createMock(PostOffice.class);
-      StorageManager storageManager = createMock(StorageManager.class);
-      HierarchicalRepository<QueueSettings> queueSettingsRepository = createMock(HierarchicalRepository.class);
       expect(coreQueue.list(isA(Filter.class))).andReturn(
             new ArrayList<MessageReference>());
 
-      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      replayMockedAttributes();
 
-      JMSQueueControl control = new JMSQueueControl(queue, coreQueue,
-            jndiBinding, postOffice, storageManager, queueSettingsRepository);
+      JMSQueueControl control = createControl();
       try
       {
          control.changeMessagePriority(jmsMessageID, newPriority);
@@ -793,14 +573,61 @@
       {
       }
 
-      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+      verifyMockedAttributes();
    }
 
    // Package protected ---------------------------------------------
 
    // Protected -----------------------------------------------------
 
+   @Override
+   protected void setUp() throws Exception
+   {
+      super.setUp();
+
+      jndiBinding = randomString();
+      name = randomString();
+
+      queue = new JBossQueue(name);
+      coreQueue = createMock(Queue.class);
+      postOffice = createMock(PostOffice.class);
+      storageManager = createMock(StorageManager.class);
+      queueSettingsRepository = createMock(HierarchicalRepository.class);
+      counter = new MessageCounter(name, null, coreQueue, false, true, 10);
+   }
+
+   @Override
+   protected void tearDown() throws Exception
+   {
+      jndiBinding = null;
+      name = null;
+      queue = null;
+      coreQueue = null;
+      postOffice = null;
+      storageManager = null;
+      queueSettingsRepository = null;
+      counter = null;
+
+      super.tearDown();
+   }
+
    // Private -------------------------------------------------------
 
+   private JMSQueueControl createControl() throws NotCompliantMBeanException
+   {
+      return new JMSQueueControl(queue, coreQueue, jndiBinding, postOffice,
+            storageManager, queueSettingsRepository, counter);
+   }
+
+   private void replayMockedAttributes()
+   {
+      replay(coreQueue, postOffice, storageManager, queueSettingsRepository);
+   }
+
+   private void verifyMockedAttributes()
+   {
+      verify(coreQueue, postOffice, storageManager, queueSettingsRepository);
+   }
+
    // Inner classes -------------------------------------------------
 }




More information about the jboss-cvs-commits mailing list