qpid-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From raj...@apache.org
Subject svn commit: r1463217 - in /qpid/branches/0.22/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 17:34:48 GMT
Author: rajith
Date: Mon Apr  1 17:34:47 2013
New Revision: 1463217

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

(cherry picked from commit 12f08eee5b5e0d3b77537e66180c74d7ac845ef4)

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

Modified: qpid/branches/0.22/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java?rev=1463217&r1=1463216&r2=1463217&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java
(original)
+++ qpid/branches/0.22/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java
Mon Apr  1 17:34:47 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/branches/0.22/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java?rev=1463217&r1=1463216&r2=1463217&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java
(original)
+++ qpid/branches/0.22/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java
Mon Apr  1 17:34:47 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