You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by js...@apache.org on 2006/01/04 11:31:24 UTC
svn commit: r365883 - in /incubator/activemq/trunk/activemq-core/src:
main/java/org/apache/activemq/broker/region/policy/
main/java/org/apache/activemq/command/ test/java/org/apache/activemq/command/
Author: jstrachan
Date: Wed Jan 4 02:31:15 2006
New Revision: 365883
URL: http://svn.apache.org/viewcvs?rev=365883&view=rev
Log:
make destinations sortable
Modified:
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java
incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ActiveMQDestination.java
incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/command/ActiveMQDestinationTest.java
Modified: incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java?rev=365883&r1=365882&r2=365883&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java (original)
+++ incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/policy/PolicyEntry.java Wed Jan 4 02:31:15 2006
@@ -18,7 +18,6 @@
import org.apache.activemq.broker.region.Queue;
import org.apache.activemq.broker.region.Topic;
-import org.apache.activemq.command.RedeliveryPolicy;
import org.apache.activemq.filter.DestinationMapEntry;
/**
@@ -33,9 +32,8 @@
private DispatchPolicy dispatchPolicy;
private SubscriptionRecoveryPolicy subscriptionRecoveryPolicy;
- private RedeliveryPolicy redeliveryPolicy;
private boolean sendAdvisoryIfNoConsumers;
- private DeadLetterStrategy deadLetterStrategy = new SharedDeadLetterStrategy();
+ private DeadLetterStrategy deadLetterStrategy;
public void configure(Queue queue) {
if (dispatchPolicy != null) {
@@ -67,14 +65,6 @@
public void setDispatchPolicy(DispatchPolicy policy) {
this.dispatchPolicy = policy;
- }
-
- public RedeliveryPolicy getRedeliveryPolicy() {
- return redeliveryPolicy;
- }
-
- public void setRedeliveryPolicy(RedeliveryPolicy redeliveryPolicy) {
- this.redeliveryPolicy = redeliveryPolicy;
}
public SubscriptionRecoveryPolicy getSubscriptionRecoveryPolicy() {
Modified: incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ActiveMQDestination.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ActiveMQDestination.java?rev=365883&r1=365882&r2=365883&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ActiveMQDestination.java (original)
+++ incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ActiveMQDestination.java Wed Jan 4 02:31:15 2006
@@ -39,7 +39,7 @@
* @openwire:marshaller
* @version $Revision: 1.10 $
*/
-abstract public class ActiveMQDestination implements DataStructure, Destination, Externalizable {
+abstract public class ActiveMQDestination implements DataStructure, Destination, Externalizable, Comparable {
private static final long serialVersionUID = -3885260014960795889L;
@@ -65,6 +65,72 @@
transient protected int hashValue;
protected Map options;
+
+ // static helper methods for working with destinations
+ // -------------------------------------------------------------------------
+ static public ActiveMQDestination createDestination(String name, byte defaultType) {
+
+ if( name.startsWith(QUEUE_QUALIFIED_PREFIX) ) {
+ return new ActiveMQQueue(name.substring(QUEUE_QUALIFIED_PREFIX.length()));
+ } else if( name.startsWith(TOPIC_QUALIFIED_PREFIX) ) {
+ return new ActiveMQTopic(name.substring(TOPIC_QUALIFIED_PREFIX.length()));
+ } else if( name.startsWith(TEMP_QUEUE_QUALIFED_PREFIX) ) {
+ return new ActiveMQTempQueue(name.substring(TEMP_QUEUE_QUALIFED_PREFIX.length()));
+ } else if( name.startsWith(TEMP_TOPIC_QUALIFED_PREFIX) ) {
+ return new ActiveMQTempTopic(name.substring(TEMP_TOPIC_QUALIFED_PREFIX.length()));
+ }
+
+ switch(defaultType) {
+ case QUEUE_TYPE:
+ return new ActiveMQQueue(name);
+ case TOPIC_TYPE:
+ return new ActiveMQTopic(name);
+ case TEMP_QUEUE_TYPE:
+ return new ActiveMQTempQueue(name);
+ case TEMP_TOPIC_TYPE:
+ return new ActiveMQTempTopic(name);
+ default:
+ throw new IllegalArgumentException("Invalid default destination type: "+defaultType);
+ }
+ }
+
+ public static ActiveMQDestination transform(Destination dest) throws JMSException {
+ if( dest == null )
+ return null;
+ if( dest instanceof ActiveMQDestination )
+ return (ActiveMQDestination) dest;
+ if( dest instanceof TemporaryQueue )
+ return new ActiveMQTempQueue(((TemporaryQueue)dest).getQueueName());
+ if( dest instanceof TemporaryTopic )
+ return new ActiveMQTempTopic(((TemporaryTopic)dest).getTopicName());
+ if( dest instanceof Queue )
+ return new ActiveMQQueue(((Queue)dest).getQueueName());
+ if( dest instanceof Topic )
+ return new ActiveMQTopic(((Topic)dest).getTopicName());
+ throw new JMSException("Could not transform the destination into a ActiveMQ destination: "+dest);
+ }
+
+ public static int compare(ActiveMQDestination destination, ActiveMQDestination destination2) {
+ if (destination == destination2) {
+ return 0;
+ }
+ if (destination == null) {
+ return -1;
+ }
+ else if (destination2 == null) {
+ return 1;
+ }
+ else {
+ if (destination.isQueue() == destination2.isQueue()) {
+ return destination.getPhysicalName().compareTo(destination2.getPhysicalName());
+ }
+ else {
+ return destination.isQueue() ? -1 : 1;
+ }
+ }
+ }
+
+
public ActiveMQDestination() {
}
@@ -76,6 +142,18 @@
setCompositeDestinations(composites);
}
+ public int compareTo(Object that) {
+ if (that instanceof ActiveMQDestination) {
+ return compare(this, (ActiveMQDestination) that);
+ }
+ if (that == null) {
+ return 1;
+ }
+ else {
+ return getClass().getName().compareTo(that.getClass().getName());
+ }
+ }
+
public boolean isComposite() {
return compositeDestinations!=null;
}
@@ -166,33 +244,6 @@
public ActiveMQDestination createDestination(String name) {
return createDestination(name, getDestinationType());
}
-
- static public ActiveMQDestination createDestination(String name, byte defaultType) {
-
- if( name.startsWith(QUEUE_QUALIFIED_PREFIX) ) {
- return new ActiveMQQueue(name.substring(QUEUE_QUALIFIED_PREFIX.length()));
- } else if( name.startsWith(TOPIC_QUALIFIED_PREFIX) ) {
- return new ActiveMQTopic(name.substring(TOPIC_QUALIFIED_PREFIX.length()));
- } else if( name.startsWith(TEMP_QUEUE_QUALIFED_PREFIX) ) {
- return new ActiveMQTempQueue(name.substring(TEMP_QUEUE_QUALIFED_PREFIX.length()));
- } else if( name.startsWith(TEMP_TOPIC_QUALIFED_PREFIX) ) {
- return new ActiveMQTempTopic(name.substring(TEMP_TOPIC_QUALIFED_PREFIX.length()));
- }
-
- switch(defaultType) {
- case QUEUE_TYPE:
- return new ActiveMQQueue(name);
- case TOPIC_TYPE:
- return new ActiveMQTopic(name);
- case TEMP_QUEUE_TYPE:
- return new ActiveMQTempQueue(name);
- case TEMP_TOPIC_TYPE:
- return new ActiveMQTempTopic(name);
- default:
- throw new IllegalArgumentException("Invalid default destination type: "+defaultType);
- }
- }
-
public String[] getDestinationPaths() {
if( destinationPaths!=null )
@@ -242,23 +293,6 @@
}
return hashValue;
}
-
- public static ActiveMQDestination transform(Destination dest) throws JMSException {
- if( dest == null )
- return null;
- if( dest instanceof ActiveMQDestination )
- return (ActiveMQDestination) dest;
- if( dest instanceof TemporaryQueue )
- return new ActiveMQTempQueue(((TemporaryQueue)dest).getQueueName());
- if( dest instanceof TemporaryTopic )
- return new ActiveMQTempTopic(((TemporaryTopic)dest).getTopicName());
- if( dest instanceof Queue )
- return new ActiveMQQueue(((Queue)dest).getQueueName());
- if( dest instanceof Topic )
- return new ActiveMQTopic(((Topic)dest).getTopicName());
- throw new JMSException("Could not transform the destination into a ActiveMQ destination: "+dest);
- }
-
public String toString() {
return getQualifiedName();
}
Modified: incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/command/ActiveMQDestinationTest.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/command/ActiveMQDestinationTest.java?rev=365883&r1=365882&r2=365883&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/command/ActiveMQDestinationTest.java (original)
+++ incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/command/ActiveMQDestinationTest.java Wed Jan 4 02:31:15 2006
@@ -17,7 +17,13 @@
package org.apache.activemq.command;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
import java.util.Map;
+import java.util.SortedSet;
+import java.util.TreeMap;
+import java.util.TreeSet;
import org.apache.activemq.command.ActiveMQDestination;
import org.apache.activemq.command.ActiveMQQueue;
@@ -62,6 +68,15 @@
assertNotNull(options);
assertEquals("v1", options.get("k1"));
assertEquals("v2", options.get("k2"));
+ }
+
+ public void testSorting() throws Exception {
+ SortedSet set = new TreeSet();
+ ActiveMQDestination[] destinations = { new ActiveMQQueue("A"), new ActiveMQQueue("B"), new ActiveMQTopic("A"), new ActiveMQTopic("B") };
+ List expected = Arrays.asList(destinations);
+ set.addAll(expected);
+ List actual = new ArrayList(set);
+ assertEquals("Sorted order", expected, actual);
}
public static Test suite() {