[jboss-cvs] JBoss Messaging SVN: r4705 - in branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging: jms/server/impl and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jul 22 05:37:57 EDT 2008


Author: jmesnil
Date: 2008-07-22 05:37:56 -0400 (Tue, 22 Jul 2008)
New Revision: 4705

Modified:
   branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/management/MessagingServerManagement.java
   branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java
   branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/JMSMessageInfo.java
   branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/JMSQueueControlMBean.java
   branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/TopicControlMBean.java
   branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/impl/JMSQueueControl.java
   branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/impl/TopicControl.java
Log:
JBMESSAGING-1303: Revisit management interfaces
* added listMessages(String filter) operation to JMSQueueControlMBean
* added listMessagesForSubscriber(subID) operation to TopicControlMBean

Modified: branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/management/MessagingServerManagement.java
===================================================================
--- branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/management/MessagingServerManagement.java	2008-07-21 23:45:02 UTC (rev 4704)
+++ branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/core/management/MessagingServerManagement.java	2008-07-22 09:37:56 UTC (rev 4705)
@@ -268,11 +268,11 @@
    Configuration getConfiguration();
 
    /**
-    * @param simpleAddress
+    * @param queueName
     * @return
     * @throws Exception 
     */
-   Queue getQueue(SimpleString simpleAddress) throws Exception;
+   Queue getQueue(SimpleString queueName) throws Exception;
 
    /**
     * @return

Modified: branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java
===================================================================
--- branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java	2008-07-21 23:45:02 UTC (rev 4704)
+++ branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java	2008-07-22 09:37:56 UTC (rev 4705)
@@ -161,9 +161,6 @@
 
    public boolean destroyQueue(String name) throws Exception
    {
- //  	JBossQueue jBossQueue = new JBossQueue(name);
-//      messagingServerManagement.destroyQueue(new SimpleString(name));
-//      messagingServerManagement.removeDestination(jBossQueue.getSimpleAddress());
       List<String> jndiBindings = destinations.get(name);
       if (jndiBindings == null || jndiBindings.size() == 0)
       {
@@ -183,8 +180,6 @@
 
    public boolean destroyTopic(String name) throws Exception
    {
-   //   JBossTopic jBossTopic = new JBossTopic(name);
-    //  messagingServerManagement.removeDestination(jBossTopic.getSimpleAddress());
       List<String> jndiBindings = destinations.get(name);
       if (jndiBindings == null || jndiBindings.size() == 0)
       {

Modified: branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/JMSMessageInfo.java
===================================================================
--- branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/JMSMessageInfo.java	2008-07-21 23:45:02 UTC (rev 4704)
+++ branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/JMSMessageInfo.java	2008-07-22 09:37:56 UTC (rev 4705)
@@ -40,6 +40,10 @@
 import javax.management.openmbean.TabularDataSupport;
 import javax.management.openmbean.TabularType;
 
+import org.jboss.messaging.core.server.ServerMessage;
+import org.jboss.messaging.jms.client.JBossMessage;
+import org.jboss.messaging.util.SimpleString;
+
 /**
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
  * 
@@ -53,12 +57,12 @@
    public static final CompositeType TYPE;
    private static final String MESSAGE_TYPE_NAME = "JMSMessageInfo";
    private static final String MESSAGE_TABULAR_TYPE_NAME = "JMSMessageTabularInfo";
-   private static final String[] ITEM_NAMES = new String[] { "messageID",
-         "correlationID", "deliveryMode", "priority", "replyTo", "timestamp",
-         "expiration", "jmsType", "properties" };
+   private static final String[] ITEM_NAMES = new String[] { "JMSMessageID",
+         "JMSCorrelationID", "JMSDeliveryMode", "JMSPriority", "JMSReplyTo",
+         "JMSTimestamp", "JMSType", "expiration", "properties" };
    private static final String[] ITEM_DESCRIPTIONS = new String[] {
          "Message ID", "Correlation ID", "Delivery Mode", "Priority",
-         "Reply To", "Timestamp", "Expiration", "JMS Type", "JMS Properties" };
+         "Reply To", "Timestamp", "JMS Type", "Expiration", "Properties" };
    private static final OpenType[] TYPES;
    private static final TabularType TABULAR_TYPE;
 
@@ -66,14 +70,14 @@
    {
       try
       {
-         TYPES = new OpenType[] { STRING, STRING, INTEGER, INTEGER, STRING,
-               LONG, LONG, STRING, PropertiesInfo.TABULAR_TYPE };
+         TYPES = new OpenType[] { STRING, STRING, STRING, INTEGER, STRING,
+               LONG, STRING, LONG, PropertiesInfo.TABULAR_TYPE };
          TYPE = new CompositeType(MESSAGE_TYPE_NAME,
                "Information for a JMS Message", ITEM_NAMES, ITEM_DESCRIPTIONS,
                TYPES);
          TABULAR_TYPE = new TabularType(MESSAGE_TABULAR_TYPE_NAME,
                "Information for tabular JMSMessageInfo", TYPE,
-               new String[] { "messageID" });
+               new String[] { "JMSMessageID" });
       } catch (OpenDataException e)
       {
          e.printStackTrace();
@@ -85,7 +89,7 @@
 
    private final String messageID;
    private final String correlationID;
-   private final int deliveryMode;
+   private final String deliveryMode;
    private final int priority;
    private final String replyTo;
    private final long timestamp;
@@ -116,10 +120,40 @@
       return data;
    }
 
+   public static JMSMessageInfo fromServerMessage(ServerMessage message)
+   {
+      String messageID = message.getProperty(JBossMessage.JBM_MESSAGE_ID)
+            .toString();
+      SimpleString simpleCorrelationID = (SimpleString) message
+            .getProperty(JBossMessage.CORRELATIONID_HEADER_NAME);
+      String correlationID = (simpleCorrelationID == null) ? null
+            : simpleCorrelationID.toString();
+      SimpleString simpleJMSType = (SimpleString) message
+            .getProperty(JBossMessage.TYPE_HEADER_NAME);
+      String jmsType = (simpleJMSType == null) ? null : simpleJMSType
+            .toString();
+      String deliveryMode = message.isDurable() ? "PERSISTENT"
+            : "NON_PERSISTENT";
+      int priority = message.getPriority();
+      SimpleString replyAddress = (SimpleString) message
+            .getProperty(JBossMessage.REPLYTO_HEADER_NAME);
+      String replyTo = (replyAddress == null) ? null : replyAddress.toString();
+      long timestamp = message.getTimestamp();
+      long expiration = message.getExpiration();
+
+      JMSMessageInfo info = new JMSMessageInfo(messageID, correlationID,
+            deliveryMode, priority, replyTo, timestamp, expiration, jmsType);
+      for (SimpleString key : message.getPropertyNames())
+      {
+         info.putProperty(key.toString(), message.getProperty(key).toString());
+      }
+      return info;
+   }
+
    // Constructors --------------------------------------------------
 
    public JMSMessageInfo(String messageID, String correlationID,
-         int deliveryMode, int priority, String replyTo, long timestamp,
+         String deliveryMode, int priority, String replyTo, long timestamp,
          long expiration, String jmsType)
    {
       this.messageID = messageID;
@@ -156,7 +190,7 @@
       {
          return new CompositeDataSupport(TYPE, ITEM_NAMES, new Object[] {
                messageID, correlationID, deliveryMode, priority, replyTo,
-               timestamp, expiration, jmsType, properties.toTabularData() });
+               timestamp, jmsType, expiration, properties.toTabularData() });
       } catch (OpenDataException e)
       {
          e.printStackTrace();

Modified: branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/JMSQueueControlMBean.java
===================================================================
--- branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/JMSQueueControlMBean.java	2008-07-21 23:45:02 UTC (rev 4704)
+++ branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/JMSQueueControlMBean.java	2008-07-22 09:37:56 UTC (rev 4705)
@@ -22,8 +22,13 @@
 
 package org.jboss.messaging.jms.server.management;
 
+import static javax.management.MBeanOperationInfo.INFO;
+
 import javax.management.openmbean.TabularData;
 
+import org.jboss.messaging.core.management.Operation;
+import org.jboss.messaging.core.management.Parameter;
+
 /**
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
  * 
@@ -32,5 +37,11 @@
  */
 public interface JMSQueueControlMBean extends DestinationControlMBean
 {
+   @Operation(desc = "List all messages in the queue", impact = INFO)
    TabularData listAllMessages() throws Exception;
+
+   @Operation(desc = "List all messages in the queue which matches the filter", impact = INFO)
+   TabularData listMessages(
+         @Parameter(name = "filter", desc = "A JMS Message filter") String filter)
+         throws Exception;
 }

Modified: branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/TopicControlMBean.java
===================================================================
--- branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/TopicControlMBean.java	2008-07-21 23:45:02 UTC (rev 4704)
+++ branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/TopicControlMBean.java	2008-07-22 09:37:56 UTC (rev 4705)
@@ -25,6 +25,7 @@
 import javax.management.openmbean.TabularData;
 
 import org.jboss.messaging.core.management.Operation;
+import org.jboss.messaging.core.management.Parameter;
 
 /**
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
@@ -37,16 +38,19 @@
    // Attributes ----------------------------------------------------
 
    int getSubcriptionsCount();
+
    int getDurableSubcriptionsCount();
+
    int getNonDurableSubcriptionsCount();
-   
+
    int getDurableMessageCount();
+
    int getNonDurableMessageCount();
 
    // Operations ----------------------------------------------------
-   
+
    // Open Type API
-   
+
    @Operation(desc = "List all subscribers")
    TabularData listAllSubscribers();
 
@@ -56,8 +60,13 @@
    @Operation(desc = "List only the non durable subscribers")
    TabularData listNonDurableSubscribers();
 
+   @Operation(desc = "List all the message for the given subscriber")
+   public TabularData listMessagesForSubscriber(
+         @Parameter(name = "subscriberID", desc = "Subscriber's ID") String subscriberID)
+         throws Exception;
+
    // Specific API
-   
+
    @Operation(desc = "List all subscribers")
    SubscriberInfo[] listAllSubscriberInfos();
 

Modified: branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/impl/JMSQueueControl.java
===================================================================
--- branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/impl/JMSQueueControl.java	2008-07-21 23:45:02 UTC (rev 4704)
+++ branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/impl/JMSQueueControl.java	2008-07-22 09:37:56 UTC (rev 4705)
@@ -25,17 +25,20 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.jms.DeliveryMode;
+import javax.management.MBeanInfo;
 import javax.management.NotCompliantMBeanException;
 import javax.management.StandardMBean;
 import javax.management.openmbean.TabularData;
 
+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.impl.MBeanInfoHelper;
 import org.jboss.messaging.core.server.MessageReference;
 import org.jboss.messaging.core.server.Queue;
 import org.jboss.messaging.core.server.ServerMessage;
-import org.jboss.messaging.jms.JBossDestination;
 import org.jboss.messaging.jms.JBossQueue;
-import org.jboss.messaging.jms.client.JBossMessage;
+import org.jboss.messaging.jms.client.SelectorTranslator;
 import org.jboss.messaging.jms.server.JMSServerManager;
 import org.jboss.messaging.jms.server.management.JMSMessageInfo;
 import org.jboss.messaging.jms.server.management.JMSQueueControlMBean;
@@ -110,58 +113,45 @@
 
    public TabularData listAllMessages() throws Exception
    {
+      return listMessages(null);
+   }
+
+   public TabularData listMessages(String filterStr) throws Exception
+   {
       try
       {
-         List<MessageReference> messageRefs = coreQueue.list(null);
+         Filter filter = filterStr == null ? null : new FilterImpl(
+               new SimpleString(SelectorTranslator
+                     .convertToJBMFilterString(filterStr)));
+
+         List<MessageReference> messageRefs = coreQueue.list(filter);
          List<JMSMessageInfo> infos = new ArrayList<JMSMessageInfo>(messageRefs
                .size());
          for (MessageReference messageRef : messageRefs)
          {
             ServerMessage message = messageRef.getMessage();
-
-            String messageID = message.getProperty(JBossMessage.JBM_MESSAGE_ID)
-                  .toString();
-            SimpleString simpleCorrelationID = (SimpleString) message
-                  .getProperty(JBossMessage.CORRELATIONID_HEADER_NAME);
-            String correlationID = (simpleCorrelationID == null) ? null
-                  : simpleCorrelationID.toString();
-            SimpleString simpleJMSType = (SimpleString) message
-                  .getProperty(JBossMessage.TYPE_HEADER_NAME);
-            String jmsType = (simpleJMSType == null) ? null : simpleJMSType
-                  .toString();
-            int deliveryMode = message.isDurable() ? DeliveryMode.PERSISTENT
-                  : DeliveryMode.NON_PERSISTENT;
-            int priority = message.getPriority();
-            String replyTo = null;
-            SimpleString replyAddress = (SimpleString) message
-                  .getProperty(JBossMessage.REPLYTO_HEADER_NAME);
-            if (replyAddress != null)
-            {
-               replyTo = JBossDestination.fromAddress(replyAddress.toString())
-                     .toString();
-            }
-            long timestamp = message.getTimestamp();
-            long expiration = message.getExpiration();
-
-            JMSMessageInfo info = new JMSMessageInfo(messageID, correlationID,
-                  deliveryMode, priority, replyTo, timestamp, expiration,
-                  jmsType);
-            for (SimpleString key : message.getPropertyNames())
-            {
-               info.putProperty(key.toString(), message.getProperty(key)
-                     .toString());
-            }
+            JMSMessageInfo info = JMSMessageInfo.fromServerMessage(message);
             infos.add(info);
-
          }
          return JMSMessageInfo.toTabularData(infos);
-      } catch (Throwable t)
+      } catch (MessagingException e)
       {
-         t.printStackTrace();
-         return null;
+         throw new IllegalStateException(e.getMessage());
       }
    }
 
+   // StandardMBean overrides ---------------------------------------
+
+   @Override
+   public MBeanInfo getMBeanInfo()
+   {
+      MBeanInfo info = super.getMBeanInfo();
+      return new MBeanInfo(info.getClassName(), info.getDescription(), info
+            .getAttributes(), info.getConstructors(), MBeanInfoHelper
+            .getMBeanOperationsInfo(JMSQueueControlMBean.class), info
+            .getNotifications());
+   }
+
    // Package protected ---------------------------------------------
 
    // Protected -----------------------------------------------------

Modified: branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/impl/TopicControl.java
===================================================================
--- branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/impl/TopicControl.java	2008-07-21 23:45:02 UTC (rev 4704)
+++ branches/Branch_JBMESSAGING-1303/src/main/org/jboss/messaging/jms/server/management/impl/TopicControl.java	2008-07-22 09:37:56 UTC (rev 4705)
@@ -35,11 +35,15 @@
 import org.jboss.messaging.core.management.Operation;
 import org.jboss.messaging.core.management.Parameter;
 import org.jboss.messaging.core.management.impl.MBeanInfoHelper;
+import org.jboss.messaging.core.server.MessageReference;
 import org.jboss.messaging.core.server.Queue;
+import org.jboss.messaging.core.server.ServerMessage;
 import org.jboss.messaging.jms.JBossTopic;
+import org.jboss.messaging.jms.server.management.JMSMessageInfo;
 import org.jboss.messaging.jms.server.management.SubscriberInfo;
 import org.jboss.messaging.jms.server.management.TopicControlMBean;
 import org.jboss.messaging.util.Pair;
+import org.jboss.messaging.util.SimpleString;
 
 /**
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
@@ -61,8 +65,8 @@
 
    // Constructors --------------------------------------------------
 
-   public TopicControl(JBossTopic topic, MessagingServerManagement server, String jndiBinding)
-         throws NotCompliantMBeanException
+   public TopicControl(JBossTopic topic, MessagingServerManagement server,
+         String jndiBinding) throws NotCompliantMBeanException
    {
       super(TopicControlMBean.class);
       this.managedTopic = topic;
@@ -172,6 +176,23 @@
       return listSubscribersInfos(DurabilityType.NON_DURABLE);
    }
 
+   public TabularData listMessagesForSubscriber(String subscriberID)
+         throws Exception
+   {
+      Queue queue = server.getQueue(new SimpleString(subscriberID));
+      List<MessageReference> messageRefs = queue.list(null);
+      List<JMSMessageInfo> infos = new ArrayList<JMSMessageInfo>(messageRefs
+            .size());
+
+      for (MessageReference messageRef : messageRefs)
+      {
+         ServerMessage message = messageRef.getMessage();
+         JMSMessageInfo info = JMSMessageInfo.fromServerMessage(message);
+         infos.add(info);
+      }
+      return JMSMessageInfo.toTabularData(infos);
+   }
+
    public void removeAllMessages() throws Exception
    {
       server.removeAllMessagesForAddress(managedTopic.getSimpleAddress());




More information about the jboss-cvs-commits mailing list