You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ra...@apache.org on 2013/04/01 16:59:58 UTC

svn commit: r1463158 - in /qpid/trunk/qpid/java/client/src: main/java/org/apache/qpid/client/AMQTopic.java test/java/org/apache/qpid/client/AMQDestinationTest.java

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: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org