summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java19
-rw-r--r--qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java22
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());
}
}