[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