diff options
Diffstat (limited to 'qpid/java')
| -rw-r--r-- | qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java | 19 | ||||
| -rw-r--r-- | qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java | 22 |
2 files changed, 36 insertions, 5 deletions
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java index 51b6c7e478..96cd209447 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java @@ -20,6 +20,7 @@ */ package org.apache.qpid.client; +import org.apache.qpid.client.AMQDestination.DestSyntax; import org.apache.qpid.exchange.ExchangeDefaults; import org.apache.qpid.framing.AMQShortString; import org.apache.qpid.messaging.Address; @@ -216,13 +217,27 @@ public class AMQTopic extends AMQDestination implements Topic public boolean equals(Object o) { - return (o instanceof AMQTopic) + if (getDestSyntax() == DestSyntax.ADDR) + { + return super.equals(o); + } + else + { + return (o instanceof AMQTopic) && ((AMQTopic)o).getExchangeName().equals(getExchangeName()) && ((AMQTopic)o).getRoutingKey().equals(getRoutingKey()); + } } public int hashCode() { - return getExchangeName().hashCode() + getRoutingKey().hashCode(); + if (getDestSyntax() == DestSyntax.ADDR) + { + return super.hashCode(); + } + else + { + return getExchangeName().hashCode() + getRoutingKey().hashCode(); + } } } diff --git a/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java b/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java index e034fa5b3f..f46623ad3b 100644 --- a/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java +++ b/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java @@ -24,12 +24,12 @@ import junit.framework.TestCase; public class AMQDestinationTest extends TestCase { - public void testEqaulsAndHashCodeForAddressBasedDestinations() throws Exception + public void testEqualsAndHashCodeForAddressBasedDestinations() throws Exception { AMQDestination dest = new AMQQueue("ADDR:Foo; {node :{type:queue}}"); AMQDestination dest1 = new AMQTopic("ADDR:Foo; {node :{type:topic}}"); - AMQDestination dest2 = new AMQQueue( - "ADDR:Foo; {create:always,node :{type:queue}}"); + AMQDestination dest10 = new AMQTopic("ADDR:Foo; {node :{type:topic}, link:{name:my-topic}}"); + AMQDestination dest2 = new AMQQueue("ADDR:Foo; {create:always,node :{type:queue}}"); String bUrl = "BURL:direct://amq.direct/test-route/Foo?routingkey='Foo'"; AMQDestination dest3 = new AMQQueue(bUrl); @@ -37,14 +37,30 @@ public class AMQDestinationTest extends TestCase assertFalse(dest.equals(dest1)); assertTrue(dest.equals(dest2)); assertFalse(dest.equals(dest3)); + assertTrue(dest1.equals(dest10)); assertTrue(dest.hashCode() == dest.hashCode()); assertTrue(dest.hashCode() != dest1.hashCode()); assertTrue(dest.hashCode() == dest2.hashCode()); assertTrue(dest.hashCode() != dest3.hashCode()); + assertTrue(dest1.hashCode() == dest10.hashCode()); AMQDestination dest4 = new AMQQueue("ADDR:Foo/Bar; {node :{type:queue}}"); AMQDestination dest5 = new AMQQueue("ADDR:Foo/Bar2; {node :{type:queue}}"); + assertFalse(dest4.equals(dest5)); assertTrue(dest4.hashCode() != dest5.hashCode()); + + AMQDestination dest6 = new AMQAnyDestination("ADDR:Foo; {node :{type:queue}}"); + AMQDestination dest7 = new AMQAnyDestination("ADDR:Foo; {create: always, node :{type:queue}, link:{capacity: 10}}"); + AMQDestination dest8 = new AMQAnyDestination("ADDR:Foo; {create: always, link:{capacity: 10}}"); + AMQDestination dest9 = new AMQAnyDestination("ADDR:Foo/bar"); + assertTrue(dest6.equals(dest7)); + assertFalse(dest6.equals(dest8)); //dest8 type unknown, could be a topic + assertFalse(dest7.equals(dest8)); //dest8 type unknown, could be a topic + assertFalse(dest6.equals(dest9)); + assertTrue(dest6.hashCode() == dest7.hashCode()); + assertTrue(dest6.hashCode() != dest8.hashCode()); + assertTrue(dest7.hashCode() != dest8.hashCode()); + assertTrue(dest6.hashCode() != dest9.hashCode()); } } |
