You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2011/12/22 23:41:57 UTC

svn commit: r1222502 - /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueUnbindHandler.java

Author: kwall
Date: Thu Dec 22 22:41:57 2011
New Revision: 1222502

URL: http://svn.apache.org/viewvc?rev=1222502&view=rev
Log:
QPID-3707: Fix ClassCastException when processing QueueUnbind for 0-9-1 protocol.

Modified:
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueUnbindHandler.java

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueUnbindHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueUnbindHandler.java?rev=1222502&r1=1222501&r2=1222502&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueUnbindHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueUnbindHandler.java Thu Dec 22 22:41:57 2011
@@ -25,8 +25,10 @@ import org.apache.qpid.AMQException;
 import org.apache.qpid.framing.AMQMethodBody;
 import org.apache.qpid.framing.AMQShortString;
 import org.apache.qpid.framing.FieldTable;
+import org.apache.qpid.framing.MethodRegistry;
 import org.apache.qpid.framing.QueueUnbindBody;
 import org.apache.qpid.framing.amqp_0_9.MethodRegistry_0_9;
+import org.apache.qpid.framing.amqp_0_91.MethodRegistry_0_91;
 import org.apache.qpid.protocol.AMQConstant;
 import org.apache.qpid.server.AMQChannel;
 import org.apache.qpid.server.exchange.Exchange;
@@ -62,7 +64,7 @@ public class QueueUnbindHandler implemen
 
 
         final AMQQueue queue;
-        final AMQShortString routingKey;               
+        final AMQShortString routingKey;
 
         if (body.getQueue() == null)
         {
@@ -114,10 +116,21 @@ public class QueueUnbindHandler implemen
             _log.info("Binding queue " + queue + " to exchange " + exch + " with routing key " + routingKey);
         }
 
-        MethodRegistry_0_9 methodRegistry = (MethodRegistry_0_9) session.getMethodRegistry();
-        AMQMethodBody responseBody = methodRegistry.createQueueUnbindOkBody();
+        final MethodRegistry registry = session.getMethodRegistry();
+        final AMQMethodBody responseBody;
+        if (registry instanceof MethodRegistry_0_9)
+        {
+            responseBody = ((MethodRegistry_0_9)registry).createQueueUnbindOkBody();
+        }
+        else if (registry instanceof MethodRegistry_0_91)
+        {
+            responseBody = ((MethodRegistry_0_91)registry).createQueueUnbindOkBody();
+        }
+        else
+        {
+            // 0-8 does not support QueueUnbind
+            throw new AMQException(AMQConstant.COMMAND_INVALID, "QueueUnbind not present in AMQP version: " + session.getProtocolVersion(), null);
+        }
         session.writeFrame(responseBody.generateFrame(channelId));
-
-
     }
 }



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org