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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Sep 29 12:42:39 EDT 2008


Author: ataylor
Date: 2008-09-29 12:42:39 -0400 (Mon, 29 Sep 2008)
New Revision: 5040

Modified:
   trunk/examples/jms/src/org/jboss/jms/example/MessageGroupingExample.java
   trunk/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java
   trunk/src/main/org/jboss/messaging/core/server/impl/GroupingRoundRobinDistributionPolicy.java
   trunk/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java
   trunk/src/main/org/jboss/messaging/jms/client/JBossConnectionMetaData.java
   trunk/src/main/org/jboss/messaging/jms/client/JBossMessage.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/GroupingRoundRobinDistributionPolicyTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/settings/impl/QueueSettingsTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/jms/client/JBossConnectionMetaDataTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/jms/client/JBossMessageTest.java
Log:
updated message grouping functionality

Modified: trunk/examples/jms/src/org/jboss/jms/example/MessageGroupingExample.java
===================================================================
--- trunk/examples/jms/src/org/jboss/jms/example/MessageGroupingExample.java	2008-09-29 14:51:00 UTC (rev 5039)
+++ trunk/examples/jms/src/org/jboss/jms/example/MessageGroupingExample.java	2008-09-29 16:42:39 UTC (rev 5040)
@@ -30,8 +30,7 @@
 /**
  * This example sends 20 messages setting the groupid so that a specific consumer will receive each message.
  * setting the property 'JMSXGroupID' will bind a consumer to the value given, from this point on the same consumer will
- * receive any message that has the same JMSXGroupID value. setting the property 'JMSXGroupSeq' to 0 will release the
- * binding after that message has been delivered.  
+ * receive any message that has the same JMSXGroupID value.
  * @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
  */
 public class MessageGroupingExample
@@ -57,12 +56,16 @@
          {
             if (i < messages.length/2)
             {
-               messages[i] = session.createTextMessage("This is a text message from groupid1!");
-               messages[i].setStringProperty("JMSXGroupID", "groupid1");
-               if(i == 4)
+               if(i % 2 == 1)
                {
-                  messages[i].setIntProperty("JMSXGroupSeq", 0);  
+                  messages[i] = session.createTextMessage("This is a text message from groupid1!");
+                  messages[i].setStringProperty("JMSXGroupID", "groupid1");
                }
+               else
+               {
+                  messages[i] = session.createTextMessage("This is a text message from groupid3!");
+                  messages[i].setStringProperty("JMSXGroupID", "groupid3");
+               }
             }
             else
             {

Modified: trunk/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java	2008-09-29 14:51:00 UTC (rev 5039)
+++ trunk/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java	2008-09-29 16:42:39 UTC (rev 5040)
@@ -22,19 +22,15 @@
 
 package org.jboss.messaging.core.message.impl;
 
-import static org.jboss.messaging.util.DataConstants.SIZE_BOOLEAN;
-import static org.jboss.messaging.util.DataConstants.SIZE_BYTE;
-import static org.jboss.messaging.util.DataConstants.SIZE_INT;
-import static org.jboss.messaging.util.DataConstants.SIZE_LONG;
-
-import java.util.Set;
-
 import org.jboss.messaging.core.logging.Logger;
 import org.jboss.messaging.core.message.Message;
 import org.jboss.messaging.core.remoting.spi.MessagingBuffer;
+import static org.jboss.messaging.util.DataConstants.*;
 import org.jboss.messaging.util.SimpleString;
 import org.jboss.messaging.util.TypedProperties;
 
+import java.util.Set;
+
 /**
  * A concrete implementation of a message
  *
@@ -60,6 +56,8 @@
 
    public static final SimpleString HDR_ORIGIN_QUEUE = new SimpleString("JBMOriginQueue");
 
+   public static final SimpleString GROUP_ID = new SimpleString("JBMGroupID");
+
    // Attributes ----------------------------------------------------
 
    protected long messageID;

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/GroupingRoundRobinDistributionPolicy.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/GroupingRoundRobinDistributionPolicy.java	2008-09-29 14:51:00 UTC (rev 5039)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/GroupingRoundRobinDistributionPolicy.java	2008-09-29 16:42:39 UTC (rev 5040)
@@ -21,7 +21,7 @@
  */
 package org.jboss.messaging.core.server.impl;
 
-import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.message.impl.MessageImpl;
 import org.jboss.messaging.core.server.Consumer;
 import org.jboss.messaging.core.server.ServerMessage;
 import org.jboss.messaging.util.SimpleString;
@@ -34,9 +34,8 @@
 /**
  * Distributes message based on the message property 'JMSXGroupID'. Once a message has been successfully delivered to a
  * consumer that consumer is then bound to that group. Any message that has the same group id set will always be
- * delivered to the same consumer. This sequence is broken only when a message with the same group id has the property
- * 'JMSXGroupSeq' set to 0 or if the consumer is removed, that is it is not passed down in the select consumers list.
- * The Initial consumer is th efirst consumer found, using the round robin policy, that hasn't been bound to a group, If
+ * delivered to the same consumer.
+ * The Initial consumer is the first consumer found, using the round robin policy, that hasn't been bound to a group, If
  * there are no consumers left that have not been bound to a group then the next consumer will be bound to 2 groups and
  * so on.
  * @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
@@ -45,54 +44,40 @@
 {
    // Constants -----------------------------------------------------
 
-   private static final Logger log = Logger.getLogger(GroupingRoundRobinDistributionPolicy.class);
-
-
-   // for convenience, the Group ID is directly mapped to the
-   // JMS JMSXGroupID & JMSXGroupSeq header names.
-   // It does not imply any dependency on JMS whatsoever
-   public static final SimpleString GROUP_ID = new SimpleString("JMSXGroupID");
-
-   public static final SimpleString GROUP_SEQ = new SimpleString("JMSXGroupSeq");
-
    // Static --------------------------------------------------------
 
    // Attributes ----------------------------------------------------
 
    // Map with GroupID as a key and a Consumer as value.
-   private Map<SimpleString, ConsumerState> consumers = new ConcurrentHashMap<SimpleString, ConsumerState>();
+   private final Map<SimpleString, ConsumerState> consumers = new ConcurrentHashMap<SimpleString, ConsumerState>();
 
-   //we hold the state of each consumer, i.e., is it bound etc
-   private Map<Consumer, ConsumerState> consumerStateMap = new ConcurrentHashMap<Consumer, ConsumerState>();
+   // we hold the state of each consumer, i.e., is it bound etc
+   private final Map<Consumer, ConsumerState> consumerStateMap = new ConcurrentHashMap<Consumer, ConsumerState>();
+
    // Distributor implementation ------------------------------------
 
-   public Consumer select(ServerMessage message, boolean redeliver)
+   @Override
+   public Consumer select(final ServerMessage message, final boolean redeliver)
    {
-      if (message.getProperty(GROUP_ID) != null)
+      if (message.getProperty(MessageImpl.GROUP_ID) != null)
       {
-         SimpleString groupId = (SimpleString) message.getProperty(GROUP_ID);
-         Integer groupSeq = (Integer) message.getProperty(GROUP_SEQ);
-         if (consumers.get(groupId) != null)
+         final SimpleString groupId = (SimpleString)message.getProperty(MessageImpl.GROUP_ID);
+         final ConsumerState consumerState = consumers.get(groupId);
+         if (consumerState != null)
          {
-            ConsumerState consumerState = consumers.get(groupId);
-            //if this is a redelivery and the group is bound we wait.
-            if(redeliver && consumerState.isBound())
+            // if this is a redelivery and the group is bound we wait.
+            if (redeliver && consumerState.isBound())
             {
                return null;
             }
-            //if we need to reset which consumer to use, this will take play from the next invocation with the same groupid.
-            if (groupSeq != null && groupSeq.equals(0))
+            // if this is a redelivery and it was its first attempt we can look for another consumer and use that
+            else if (redeliver && !consumerState.isBound())
             {
                removeBinding(groupId, consumerState);
-            }
-            //if this is a redelivery and it was its first attempt we can look for another consumer and use that
-            else if(redeliver && !consumerState.isBound())
-            {
-               removeBinding(groupId, consumerState);
                return getNextPositionAndBind(message, redeliver, groupId).getConsumer();
             }
-            //we bind after we know that the first message has been successfully consumed
-            else if(!consumerState.isBound())
+            // we bind after we know that the first message has been successfully consumed
+            else if (!consumerState.isBound())
             {
                consumerState.setBound(true);
             }
@@ -111,20 +96,21 @@
       }
    }
 
-   public synchronized void addConsumer(Consumer consumer)
+   @Override
+   public synchronized void addConsumer(final Consumer consumer)
    {
       super.addConsumer(consumer);
-      ConsumerState cs = new ConsumerState(consumer);
-      consumerStateMap.put(consumer, cs);
+      consumerStateMap.put(consumer, new ConsumerState(consumer));
    }
 
-   public synchronized boolean removeConsumer(Consumer consumer)
+   @Override
+   public synchronized boolean removeConsumer(final Consumer consumer)
    {
-      boolean removed = super.removeConsumer(consumer);
-      if(removed)
+      final boolean removed = super.removeConsumer(consumer);
+      if (removed)
       {
-         ConsumerState cs = consumerStateMap.remove(consumer);
-         for (SimpleString ss : cs.getGroupIds())
+         final ConsumerState cs = consumerStateMap.remove(consumer);
+         for (final SimpleString ss : cs.getGroupIds())
          {
             consumers.remove(ss);
          }
@@ -141,12 +127,14 @@
     * @param groupId
     * @return
     */
-   private ConsumerState getNextPositionAndBind(ServerMessage message, boolean redeliver, SimpleString groupId)
+   private ConsumerState getNextPositionAndBind(final ServerMessage message,
+                                                final boolean redeliver,
+                                                final SimpleString groupId)
    {
       Consumer consumer = super.select(message, redeliver);
-      ConsumerState cs = consumerStateMap.get(consumer);
-      //if there is only one return it
-      if(getConsumerCount() == 1 || cs.isAvailable())
+      final ConsumerState cs = consumerStateMap.get(consumer);
+      // if there is only one return it
+      if (getConsumerCount() == 1 || cs.isAvailable())
       {
          consumers.put(groupId, cs);
          cs.getGroupIds().add(groupId);
@@ -156,11 +144,11 @@
       {
          consumer = super.select(message, redeliver);
          ConsumerState ncs = consumerStateMap.get(consumer);
-         while(!ncs.isAvailable())
+         while (!ncs.isAvailable())
          {
             consumer = super.select(message, redeliver);
             ncs = consumerStateMap.get(consumer);
-            if(ncs == cs)
+            if (ncs == cs)
             {
                cs.getGroupIds().add(groupId);
                return cs;
@@ -171,7 +159,7 @@
       }
    }
 
-   private void removeBinding(SimpleString groupId, ConsumerState consumerState)
+   private void removeBinding(final SimpleString groupId, final ConsumerState consumerState)
    {
       consumerState.setAvailable(true);
       consumerState.getGroupIds().remove(groupId);
@@ -184,11 +172,14 @@
    class ConsumerState
    {
       private final Consumer consumer;
+
       private volatile boolean isBound = false;
+
       private volatile boolean available = true;
-      private List<SimpleString> groupIds = new ArrayList<SimpleString>();
 
-      public ConsumerState(Consumer consumer)
+      private final List<SimpleString> groupIds = new ArrayList<SimpleString>();
+
+      public ConsumerState(final Consumer consumer)
       {
          this.consumer = consumer;
       }
@@ -198,18 +189,17 @@
          return isBound;
       }
 
-      public void setBound(boolean bound)
+      public void setBound(final boolean bound)
       {
          isBound = bound;
       }
 
-
       public boolean isAvailable()
       {
          return available;
       }
 
-      public void setAvailable(boolean available)
+      public void setAvailable(final boolean available)
       {
          this.available = available;
       }
@@ -224,7 +214,8 @@
          return groupIds;
       }
 
-      public boolean equals(Object o)
+      @Override
+      public boolean equals(final Object o)
       {
          if (this == o)
          {
@@ -235,7 +226,7 @@
             return false;
          }
 
-         ConsumerState that = (ConsumerState) o;
+         final ConsumerState that = (ConsumerState)o;
 
          if (!consumer.equals(that.consumer))
          {
@@ -245,11 +236,11 @@
          return true;
       }
 
+      @Override
       public int hashCode()
       {
          return consumer.hashCode();
       }
 
-
    }
 }

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java	2008-09-29 14:51:00 UTC (rev 5039)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java	2008-09-29 16:42:39 UTC (rev 5040)
@@ -70,8 +70,6 @@
 
    private final PriorityLinkedList<MessageReference> messageReferences = new PriorityLinkedListImpl<MessageReference>(NUM_PRIORITIES);
 
-   //private final List<Consumer> consumers = new ArrayList<Consumer>();
-
    private final Set<ScheduledDeliveryRunnable> scheduledRunnables = new LinkedHashSet<ScheduledDeliveryRunnable>();
 
    private volatile DistributionPolicy distributionPolicy = new RoundRobinDistributionPolicy();
@@ -80,10 +78,6 @@
 
    private boolean promptDelivery;
 
-   //private int pos = -1;
-
-   private Consumer currentConsumer = null;
-
    private AtomicInteger sizeBytes = new AtomicInteger(0);
 
    private AtomicInteger messagesAdded = new AtomicInteger(0);

Modified: trunk/src/main/org/jboss/messaging/jms/client/JBossConnectionMetaData.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/client/JBossConnectionMetaData.java	2008-09-29 14:51:00 UTC (rev 5039)
+++ trunk/src/main/org/jboss/messaging/jms/client/JBossConnectionMetaData.java	2008-09-29 16:42:39 UTC (rev 5040)
@@ -22,14 +22,13 @@
 
 package org.jboss.messaging.jms.client;
 
-import java.util.Enumeration;
-import java.util.Vector;
+import org.jboss.messaging.core.version.Version;
 
 import javax.jms.ConnectionMetaData;
 import javax.jms.JMSException;
+import java.util.Enumeration;
+import java.util.Vector;
 
-import org.jboss.messaging.core.version.Version;
-
 /**
  * Connection metadata
  *
@@ -101,7 +100,7 @@
    {
       Vector v = new Vector();
       v.add("JMSXGroupID");
-      v.add("JMSXGroupSeq");
+      //v.add("JMSXGroupSeq");
       v.add("JMSXDeliveryCount");
       return v.elements();
    }

Modified: trunk/src/main/org/jboss/messaging/jms/client/JBossMessage.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/client/JBossMessage.java	2008-09-29 14:51:00 UTC (rev 5039)
+++ trunk/src/main/org/jboss/messaging/jms/client/JBossMessage.java	2008-09-29 16:42:39 UTC (rev 5040)
@@ -12,32 +12,21 @@
 
 package org.jboss.messaging.jms.client;
 
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.List;
-
-import javax.jms.DeliveryMode;
-import javax.jms.Destination;
-import javax.jms.InvalidDestinationException;
-import javax.jms.JMSException;
-import javax.jms.Message;
-import javax.jms.MessageFormatException;
-import javax.jms.MessageNotReadableException;
-import javax.jms.MessageNotWriteableException;
-
 import org.jboss.messaging.core.client.ClientMessage;
 import org.jboss.messaging.core.client.ClientSession;
 import org.jboss.messaging.core.client.impl.ClientMessageImpl;
 import org.jboss.messaging.core.exception.MessagingException;
 import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.message.impl.MessageImpl;
 import org.jboss.messaging.core.remoting.impl.ByteBufferWrapper;
 import org.jboss.messaging.core.remoting.spi.MessagingBuffer;
 import org.jboss.messaging.jms.JBossDestination;
 import org.jboss.messaging.util.SimpleString;
 
+import javax.jms.*;
+import java.nio.ByteBuffer;
+import java.util.*;
+
 /**
  * Implementation of a JMS Message JMS Messages only live on the client side - the server only deals with MessageImpl
  * instances
@@ -72,6 +61,8 @@
 
    public static final String JMSXDELIVERYCOUNT = "JMSXDeliveryCount";
 
+   public static final String JMSXGROUPID = "JMSXGroupID";
+
    // Used when bridging a message
    public static final String JBOSS_MESSAGING_BRIDGE_MESSAGE_ID_LIST = "JBM_BRIDGE_MSG_ID_LIST";
 
@@ -542,7 +533,8 @@
 
    public boolean propertyExists(final String name) throws JMSException
    {
-      return message.containsProperty(new SimpleString(name)) || name.equals(JMSXDELIVERYCOUNT);
+      return message.containsProperty(new SimpleString(name)) || name.equals(JMSXDELIVERYCOUNT)
+            || (JMSXGROUPID.equals(name) && message.containsProperty(MessageImpl.GROUP_ID));
    }
 
    public boolean getBooleanProperty(final String name) throws JMSException
@@ -701,7 +693,15 @@
       {
          return String.valueOf(message.getDeliveryCount());
       }
-      Object value = message.getProperty(new SimpleString(name));
+      Object value;
+      if(JMSXGROUPID.equals(name))
+      {
+         value = message.getProperty(MessageImpl.GROUP_ID);
+      }
+      else
+      {
+         value = message.getProperty(new SimpleString(name));
+      }
       if (value == null)
          return null;
 
@@ -826,7 +826,14 @@
    public void setStringProperty(final String name, final String value) throws JMSException
    {
       checkProperty(name, value);
-      message.putStringProperty(new SimpleString(name), new SimpleString(value));
+      if(JMSXGROUPID.equals(name))
+      {
+         message.putStringProperty(MessageImpl.GROUP_ID, new SimpleString(value));
+      }
+      else
+      {
+         message.putStringProperty(new SimpleString(name), new SimpleString(value));
+      }
    }
 
    public void setObjectProperty(final String name, final Object value) throws JMSException

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/GroupingRoundRobinDistributionPolicyTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/GroupingRoundRobinDistributionPolicyTest.java	2008-09-29 14:51:00 UTC (rev 5039)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/GroupingRoundRobinDistributionPolicyTest.java	2008-09-29 16:42:39 UTC (rev 5040)
@@ -22,6 +22,7 @@
 package org.jboss.messaging.tests.unit.core.server.impl;
 
 import org.easymock.EasyMock;
+import org.jboss.messaging.core.message.impl.MessageImpl;
 import org.jboss.messaging.core.server.Consumer;
 import org.jboss.messaging.core.server.ServerMessage;
 import org.jboss.messaging.core.server.impl.GroupingRoundRobinDistributionPolicy;
@@ -50,8 +51,7 @@
       Consumer consumer = EasyMock.createStrictMock(Consumer.class);
       policy.addConsumer(consumer);
       ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid1"));
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid1"));
       EasyMock.replay(consumer, serverMessage);
       assertEquals(consumer, policy.select( serverMessage, false));
       assertEquals(consumer, policy.select(serverMessage, false));
@@ -67,8 +67,7 @@
       policy.addConsumer(consumer2);
       policy.addConsumer(consumer3);
       ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid1"));
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid1"));
       EasyMock.replay(consumer, consumer2, consumer3, serverMessage);
       assertEquals(consumer, policy.select(serverMessage, false));
       assertEquals(consumer, policy.select(serverMessage, false));
@@ -80,11 +79,9 @@
       Consumer consumer = EasyMock.createStrictMock(Consumer.class);
       policy.addConsumer(consumer);
       ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid1"));
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid1"));
       ServerMessage serverMessage2 = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage2.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid2"));
-      EasyMock.expect(serverMessage2.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage2.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid2"));
       EasyMock.replay(consumer, serverMessage, serverMessage2);
       assertEquals(consumer, policy.select(serverMessage, false));
       assertEquals(consumer, policy.select(serverMessage2, false));
@@ -100,11 +97,9 @@
       policy.addConsumer(consumer2);
       policy.addConsumer(consumer3);
       ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid1"));
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid1"));
       ServerMessage serverMessage2 = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage2.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid2"));
-      EasyMock.expect(serverMessage2.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage2.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid2"));
       EasyMock.replay(consumer, consumer2, consumer3, serverMessage, serverMessage2);
       assertEquals(consumer, policy.select(serverMessage, false));
       assertEquals(consumer2, policy.select(serverMessage2, false));
@@ -122,8 +117,7 @@
       policy.addConsumer(consumer2);
       policy.addConsumer(consumer3);
       ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid1"));
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid1"));
       EasyMock.replay(consumer, consumer2, consumer3, serverMessage);
       assertEquals(consumer, policy.select(serverMessage, false));
       assertEquals(consumer2, policy.select(serverMessage, true));
@@ -139,8 +133,7 @@
       policy.addConsumer(consumer2);
       policy.addConsumer(consumer3);
       ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid1"));
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid1"));
       EasyMock.replay(consumer, consumer2, consumer3, serverMessage);
       assertEquals(consumer, policy.select(serverMessage, false));
       assertEquals(consumer, policy.select(serverMessage, false));
@@ -157,32 +150,23 @@
       policy.addConsumer(consumer2);
       policy.addConsumer(consumer3);
       ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid1"));
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid1"));
       ServerMessage serverMessage2 = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage2.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid2"));
-      EasyMock.expect(serverMessage2.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage2.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid2"));
       ServerMessage serverMessage3 = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage3.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid3"));
-      EasyMock.expect(serverMessage3.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage3.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid3"));
       ServerMessage serverMessage4 = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage4.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid4"));
-      EasyMock.expect(serverMessage4.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage4.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid4"));
       ServerMessage serverMessage5 = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage5.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid5"));
-      EasyMock.expect(serverMessage5.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage5.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid5"));
       ServerMessage serverMessage6 = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage6.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid6"));
-      EasyMock.expect(serverMessage6.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage6.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid6"));
       ServerMessage serverMessage7 = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage7.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid7"));
-      EasyMock.expect(serverMessage7.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage7.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid7"));
       ServerMessage serverMessage8 = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage8.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid8"));
-      EasyMock.expect(serverMessage8.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage8.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid8"));
       ServerMessage serverMessage9 = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage9.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid9"));
-      EasyMock.expect(serverMessage9.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage9.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid9"));
       EasyMock.replay(consumer, consumer2, consumer3, serverMessage, serverMessage2, serverMessage3, serverMessage4,
                       serverMessage5, serverMessage6, serverMessage7, serverMessage8, serverMessage9);
       assertEquals(consumer, policy.select(serverMessage, false));
@@ -210,14 +194,11 @@
       policy.addConsumer(consumer3);
       policy.addConsumer(consumer4);
       ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid1"));
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid1"));
       ServerMessage serverMessage2 = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage2.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid2"));
-      EasyMock.expect(serverMessage2.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage2.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid2"));
       ServerMessage serverMessage3 = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage3.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid3"));
-      EasyMock.expect(serverMessage3.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
+      EasyMock.expect(serverMessage3.getProperty(MessageImpl.GROUP_ID)).andStubReturn(new SimpleString("gid3"));
       EasyMock.replay(consumer, consumer2, consumer3, consumer4, serverMessage, serverMessage2, serverMessage3);
       assertEquals(consumer, policy.select(serverMessage, false));
       assertEquals(consumer2, policy.select(serverMessage2, false));
@@ -227,34 +208,5 @@
       EasyMock.verify(consumer, consumer2, consumer3, consumer4, serverMessage, serverMessage2, serverMessage3);
    }
 
-   public void testMultipleConsumersResetReceived()
-   {
-      Consumer consumer = EasyMock.createStrictMock(Consumer.class);
-      Consumer consumer2 = EasyMock.createStrictMock(Consumer.class);
-      Consumer consumer3 = EasyMock.createStrictMock(Consumer.class);
-      Consumer consumer4 = EasyMock.createStrictMock(Consumer.class);
-      policy.addConsumer(consumer);
-      policy.addConsumer(consumer2);
-      policy.addConsumer(consumer3);
-      policy.addConsumer(consumer4);
-      ServerMessage serverMessage = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid1"));
-      EasyMock.expect(serverMessage.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
-      ServerMessage serverMessage2 = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage2.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid2"));
-      EasyMock.expect(serverMessage2.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andReturn(null);
-      EasyMock.expect(serverMessage2.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andReturn(0);
-      EasyMock.expect(serverMessage2.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andReturn(null);
-      ServerMessage serverMessage3 = EasyMock.createStrictMock(ServerMessage.class);
-      EasyMock.expect(serverMessage3.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_ID)).andStubReturn(new SimpleString("gid3"));
-      EasyMock.expect(serverMessage3.getProperty(GroupingRoundRobinDistributionPolicy.GROUP_SEQ)).andStubReturn(null);
-      EasyMock.replay(consumer, consumer2, consumer3, consumer4, serverMessage, serverMessage2, serverMessage3);
-      assertEquals(consumer, policy.select(serverMessage, false));
-      assertEquals(consumer2, policy.select(serverMessage2, false));
-      assertEquals(consumer3, policy.select(serverMessage3, false));
-      assertEquals(consumer2, policy.select(serverMessage2, false));
-      assertEquals(consumer4, policy.select(serverMessage2, false));
-      EasyMock.verify(consumer, consumer2, consumer3, consumer4, serverMessage, serverMessage2, serverMessage3);
-   }
 
 }

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/settings/impl/QueueSettingsTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/settings/impl/QueueSettingsTest.java	2008-09-29 14:51:00 UTC (rev 5039)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/settings/impl/QueueSettingsTest.java	2008-09-29 16:42:39 UTC (rev 5040)
@@ -23,7 +23,6 @@
 package org.jboss.messaging.tests.unit.core.settings.impl;
 
 import junit.framework.TestCase;
-
 import org.jboss.messaging.core.settings.impl.QueueSettings;
 import org.jboss.messaging.util.SimpleString;
 
@@ -35,7 +34,7 @@
    public void testDefaults()
    {
       QueueSettings queueSettings = new QueueSettings();
-      assertEquals(queueSettings.getDistributionPolicy().getClass(), QueueSettings.DEFAULT_DISTRIBUTION_POLICY_CLASS.getClass());
+      assertEquals(queueSettings.getDistributionPolicy().getClass(), QueueSettings.DEFAULT_DISTRIBUTION_POLICY_CLASS);
       assertEquals(queueSettings.getDistributionPolicyClass(), null);
       assertEquals(queueSettings.getDLQ(), null);
       assertEquals(queueSettings.isClustered(), Boolean.valueOf(false));
@@ -64,7 +63,7 @@
       queueSettingsToMerge.setRedeliveryDelay((long)1003);
       queueSettingsToMerge.setPageSizeBytes(1004);
       queueSettings.merge(queueSettingsToMerge);
-      assertEquals(queueSettings.getDistributionPolicy().getClass(), QueueSettings.DEFAULT_DISTRIBUTION_POLICY_CLASS.getClass());
+      assertEquals(queueSettings.getDistributionPolicy().getClass(), QueueSettings.DEFAULT_DISTRIBUTION_POLICY_CLASS);
       assertEquals(queueSettings.getDistributionPolicyClass(), null);
       assertEquals(queueSettings.isClustered(), Boolean.valueOf(true));
       assertEquals(queueSettings.getDLQ(), DLQ);
@@ -99,7 +98,7 @@
       queueSettingsToMerge2.setRedeliveryDelay((long)2003);
       queueSettings.merge(queueSettingsToMerge2);
 
-      assertEquals(queueSettings.getDistributionPolicy().getClass(), QueueSettings.DEFAULT_DISTRIBUTION_POLICY_CLASS.getClass());
+      assertEquals(queueSettings.getDistributionPolicy().getClass(), QueueSettings.DEFAULT_DISTRIBUTION_POLICY_CLASS);
       assertEquals(queueSettings.getDistributionPolicyClass(), null);
       assertEquals(queueSettings.isClustered(), Boolean.valueOf(true));
       assertEquals(queueSettings.getDLQ(), DLQ);
@@ -135,7 +134,7 @@
       queueSettingsToMerge2.setRedeliveryDelay((long)2003);
       queueSettings.merge(queueSettingsToMerge2);
 
-      assertEquals(queueSettings.getDistributionPolicy().getClass(), QueueSettings.DEFAULT_DISTRIBUTION_POLICY_CLASS.getClass());
+      assertEquals(queueSettings.getDistributionPolicy().getClass(), QueueSettings.DEFAULT_DISTRIBUTION_POLICY_CLASS);
       assertEquals(queueSettings.getDistributionPolicyClass(), null);
       assertEquals(queueSettings.isClustered(), Boolean.valueOf(true));
       assertEquals(queueSettings.getDLQ(), DLQ);

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/jms/client/JBossConnectionMetaDataTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/jms/client/JBossConnectionMetaDataTest.java	2008-09-29 14:51:00 UTC (rev 5039)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/jms/client/JBossConnectionMetaDataTest.java	2008-09-29 16:42:39 UTC (rev 5040)
@@ -22,22 +22,16 @@
 
 package org.jboss.messaging.tests.unit.jms.client;
 
-import static org.easymock.EasyMock.createStrictMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
+import junit.framework.TestCase;
+import static org.easymock.EasyMock.*;
+import org.jboss.messaging.core.version.Version;
+import org.jboss.messaging.jms.client.JBossConnectionMetaData;
 
+import javax.jms.ConnectionMetaData;
 import java.util.Enumeration;
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.jms.ConnectionMetaData;
-
-import junit.framework.TestCase;
-
-import org.jboss.messaging.core.version.Version;
-import org.jboss.messaging.jms.client.JBossConnectionMetaData;
-
 /**
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
  * 
@@ -102,7 +96,7 @@
 
       Set<String>expectedNames = new HashSet<String>();
       expectedNames.add("JMSXGroupID");
-      expectedNames.add("JMSXGroupSeq");
+      //expectedNames.add("JMSXGroupSeq");
       expectedNames.add("JMSXDeliveryCount");
       
       assertEquals(expectedNames, names);

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/jms/client/JBossMessageTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/jms/client/JBossMessageTest.java	2008-09-29 14:51:00 UTC (rev 5039)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/jms/client/JBossMessageTest.java	2008-09-29 16:42:39 UTC (rev 5040)
@@ -22,46 +22,27 @@
 
 package org.jboss.messaging.tests.unit.jms.client;
 
-import static org.easymock.EasyMock.createNiceMock;
-import static org.easymock.EasyMock.createStrictMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import static org.jboss.messaging.tests.util.RandomUtil.randomByte;
-import static org.jboss.messaging.tests.util.RandomUtil.randomBytes;
-import static org.jboss.messaging.tests.util.RandomUtil.randomDouble;
-import static org.jboss.messaging.tests.util.RandomUtil.randomFloat;
-import static org.jboss.messaging.tests.util.RandomUtil.randomInt;
-import static org.jboss.messaging.tests.util.RandomUtil.randomLong;
-import static org.jboss.messaging.tests.util.RandomUtil.randomShort;
-import static org.jboss.messaging.tests.util.RandomUtil.randomSimpleString;
-import static org.jboss.messaging.tests.util.RandomUtil.randomString;
-
-import java.nio.ByteBuffer;
-import java.util.Collections;
-
-import javax.jms.DeliveryMode;
-import javax.jms.JMSException;
-import javax.jms.Message;
-import javax.jms.MessageFormatException;
-
 import junit.framework.TestCase;
-
 import org.easymock.EasyMock;
+import static org.easymock.EasyMock.*;
 import org.jboss.messaging.core.client.ClientMessage;
 import org.jboss.messaging.core.client.ClientSession;
 import org.jboss.messaging.core.client.impl.ClientMessageImpl;
 import org.jboss.messaging.core.exception.MessagingException;
+import org.jboss.messaging.core.message.impl.MessageImpl;
 import org.jboss.messaging.core.remoting.impl.ByteBufferWrapper;
 import org.jboss.messaging.core.remoting.spi.MessagingBuffer;
-import org.jboss.messaging.jms.client.JBossBytesMessage;
-import org.jboss.messaging.jms.client.JBossMapMessage;
-import org.jboss.messaging.jms.client.JBossMessage;
-import org.jboss.messaging.jms.client.JBossObjectMessage;
-import org.jboss.messaging.jms.client.JBossStreamMessage;
-import org.jboss.messaging.jms.client.JBossTextMessage;
+import org.jboss.messaging.jms.client.*;
+import static org.jboss.messaging.tests.util.RandomUtil.*;
 import org.jboss.messaging.util.SimpleString;
 
+import javax.jms.DeliveryMode;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageFormatException;
+import java.nio.ByteBuffer;
+import java.util.Collections;
+
 /**
  * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
  * 
@@ -379,6 +360,29 @@
       assertEquals(expiration, message.getJMSExpiration());
    }
 
+   public void testJMSXGroupIDPropertyNull() throws Exception
+   {
+      JBossMessage message = new JBossMessage();
+      assertFalse(message.propertyExists(JBossMessage.JMSXGROUPID));
+      assertNull(message.getStringProperty(JBossMessage.JMSXGROUPID));
+   }
+
+   public void testSetJMSXGroupIDProperty() throws Exception
+   {
+      JBossMessage message = new JBossMessage();
+      message.setStringProperty(JBossMessage.JMSXGROUPID, "testid");
+      assertTrue(message.propertyExists(JBossMessage.JMSXGROUPID));
+      assertEquals(new SimpleString("testid"), message.getCoreMessage().getProperty(MessageImpl.GROUP_ID));
+   }
+
+   public void testGetJMSXGroupIDProperty() throws Exception
+   {
+      JBossMessage message = new JBossMessage();
+      message.getCoreMessage().putStringProperty(MessageImpl.GROUP_ID, new SimpleString("testid"));
+      assertTrue(message.propertyExists(JBossMessage.JMSXGROUPID));
+      assertEquals("testid", message.getStringProperty(JBossMessage.JMSXGROUPID));
+   }
+
    public void testSetJMSMessageID() throws Exception
    {
       String messageID = "ID:" + randomString();




More information about the jboss-cvs-commits mailing list