Author: rajith
Date: Mon Apr  1 14:59:57 2013
New Revision: 1463158

URL: http://svn.apache.org/r1463158
Log:
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.

Modified:
    
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java
    
qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java

Modified: 
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java?rev=1463158&r1=1463157&r2=1463158&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java 
(original)
+++ 
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java 
Mon Apr  1 14:59:57 2013
@@ -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 AMQDestina
 
     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();
+        }
     }
 }

Modified: 
qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java?rev=1463158&r1=1463157&r2=1463158&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java
 (original)
+++ 
qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java
 Mon Apr  1 14:59:57 2013
@@ -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 
         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());
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to