qpid-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From raj...@apache.org
Subject 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
Date Mon, 01 Apr 2013 14:59:58 GMT
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


Mime
View raw message