summaryrefslogtreecommitdiff
path: root/java/client
diff options
context:
space:
mode:
authorRajith Muditha Attapattu <rajith@apache.org>2013-04-01 14:59:57 +0000
committerRajith Muditha Attapattu <rajith@apache.org>2013-04-01 14:59:57 +0000
commitff033e9eda4c071b4a9f34af0e5d68df91914af4 (patch)
treead6ccaf2bcd7f68340b9a6383eac272157879578 /java/client
parent564712340591fc3755237d60ac4c598be6c92a9f (diff)
downloadqpid-python-ff033e9eda4c071b4a9f34af0e5d68df91914af4.tar.gz
QPID-3769 Modified the equals and hashcode methods in AMQTopic to fall
back to AMQDestination for address strings. For BURL the existing impl will continue to work. Added AMQAnyDestination to the tests. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1463158 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/client')
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/AMQTopic.java19
-rw-r--r--java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java22
2 files changed, 36 insertions, 5 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java b/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java
index 51b6c7e478..96cd209447 100644
--- a/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java
+++ b/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/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java b/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java
index e034fa5b3f..f46623ad3b 100644
--- a/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java
+++ b/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());
}
}