You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by de...@apache.org on 2010/04/22 14:25:16 UTC
svn commit: r936811 - in /activemq/trunk/activemq-core/src:
main/java/org/apache/activemq/command/ActiveMQDestination.java
test/java/org/apache/activemq/JmsQueueCompositeSendReceiveTest.java
Author: dejanb
Date: Thu Apr 22 12:25:16 2010
New Revision: 936811
URL: http://svn.apache.org/viewvc?rev=936811&view=rev
Log:
https://issues.apache.org/activemq/browse/AMQ-2323 - dupliactes with composite destinations
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ActiveMQDestination.java
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/JmsQueueCompositeSendReceiveTest.java
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ActiveMQDestination.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ActiveMQDestination.java?rev=936811&r1=936810&r2=936811&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ActiveMQDestination.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ActiveMQDestination.java Thu Apr 22 12:25:16 2010
@@ -22,9 +22,11 @@ import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.net.URISyntaxException;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
+import java.util.Set;
import java.util.StringTokenizer;
import javax.jms.Destination;
@@ -249,7 +251,7 @@ public abstract class ActiveMQDestinatio
this.hashValue = 0;
if (composite) {
// Check to see if it is a composite.
- List<String> l = new ArrayList<String>();
+ Set<String> l = new HashSet<String>();
StringTokenizer iter = new StringTokenizer(physicalName, "" + COMPOSITE_SEPERATOR);
while (iter.hasMoreTokens()) {
String name = iter.nextToken().trim();
@@ -258,12 +260,10 @@ public abstract class ActiveMQDestinatio
}
l.add(name);
}
- if (l.size() > 1) {
- compositeDestinations = new ActiveMQDestination[l.size()];
- int counter = 0;
- for (String dest : l) {
- compositeDestinations[counter++] = createDestination(dest);
- }
+ compositeDestinations = new ActiveMQDestination[l.size()];
+ int counter = 0;
+ for (String dest : l) {
+ compositeDestinations[counter++] = createDestination(dest);
}
}
}
Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/JmsQueueCompositeSendReceiveTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/JmsQueueCompositeSendReceiveTest.java?rev=936811&r1=936810&r2=936811&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/JmsQueueCompositeSendReceiveTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/JmsQueueCompositeSendReceiveTest.java Thu Apr 22 12:25:16 2010
@@ -18,9 +18,19 @@ package org.apache.activemq;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
+import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Topic;
-
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerInvocationHandler;
+import javax.management.ObjectName;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXServiceURL;
+
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.broker.jmx.QueueViewMBean;
+import org.apache.activemq.command.ActiveMQDestination;
import org.apache.activemq.test.JmsTopicSendReceiveTest;
@@ -84,4 +94,26 @@ public class JmsQueueCompositeSendReceiv
assertMessagesAreReceived();
LOG.info("" + data.length + " messages(s) received, closing down connections");
}
+
+ public void testDuplicate() throws Exception {
+ ActiveMQDestination queue = (ActiveMQDestination)session.createQueue("TEST,TEST");
+ for (int i = 0; i < data.length; i++) {
+ Message message = createMessage(i);
+ configureMessage(message);
+ if (verbose) {
+ LOG.info("About to send a message: " + message + " with text: " + data[i]);
+ }
+ producer.send(queue, message);
+ }
+ JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi");
+ JMXConnector connector = JMXConnectorFactory.connect(url, null);
+ connector.connect();
+ MBeanServerConnection connection = connector.getMBeanServerConnection();
+ ObjectName queueViewMBeanName = new ObjectName("org.apache.activemq:Type=Queue,Destination=TEST,BrokerName=localhost");
+
+ QueueViewMBean queueMbean = (QueueViewMBean) MBeanServerInvocationHandler.newProxyInstance(connection, queueViewMBeanName, QueueViewMBean.class, true);
+ assertEquals(data.length, queueMbean.getQueueSize());
+ queueMbean.purge();
+ assertEquals(0, queueMbean.getQueueSize());
+ }
}