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 2010/04/28 01:57:15 UTC

svn commit: r938727 - /qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java

Author: rajith
Date: Tue Apr 27 23:57:14 2010
New Revision: 938727

URL: http://svn.apache.org/viewvc?rev=938727&view=rev
Log:
QPID-2496
1. Added comments to explain how the address is handled
2. Now the subscription queue is created only when the destination is used by a consumer.
3. Removed unnessacery logic in createSubscriptionQueue method

Modified:
    qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java

Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java?rev=938727&r1=938726&r2=938727&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java Tue Apr 27 23:57:14 2010
@@ -24,6 +24,7 @@ import static org.apache.qpid.transport.
 
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -1119,6 +1120,18 @@ public class AMQSession_0_10 extends AMQ
         return match;
     }
 
+    /**
+     * 1. Try to resolve the address type (queue or exchange)
+     * 2. if type == queue, 
+     *       2.1 verify queue exists or create if create == true
+     *       2.2 If not throw exception
+     *       
+     * 3. if type == exchange,
+     *       3.1 verify exchange exists or create if create == true
+     *       3.2 if not throw exception
+     *       3.3 if exchange exists (or created) create subscription queue.
+     */
+    
     @SuppressWarnings("deprecation")
     public void handleAddressBasedDestination(AMQDestination dest, 
                                               boolean isConsumer,
@@ -1159,7 +1172,7 @@ public class AMQSession_0_10 extends AMQ
                 {                    
                     setLegacyFiledsForTopicType(dest);
                     verifySubject(dest);
-                    createSubscriptionQueue(dest);
+                    if (isConsumer) {createSubscriptionQueue(dest);}
                     break;
                 }
                 else if(createNode)
@@ -1171,7 +1184,7 @@ public class AMQSession_0_10 extends AMQ
                             dest.getTargetNode().getAlternateExchange(),
                             dest.getTargetNode().getDeclareArgs(),
                             false);        
-                    createSubscriptionQueue(dest);
+                    if (isConsumer) {createSubscriptionQueue(dest);}
                     break;
                 }
             }
@@ -1232,29 +1245,18 @@ public class AMQSession_0_10 extends AMQ
     
     private void createSubscriptionQueue(AMQDestination dest) throws AMQException
     {
-        if (dest.getSourceNode() != null)
-        {
-            QueueNode node = (QueueNode)dest.getSourceNode();
-            if (dest.getQueueName() == null || !isQueueExist(dest,node,true))
-            {
-                // can name : my-queue be used in x-declare?
-                // if so set it to dest queue name
-                // if (dest.getQueueName() == null) { dest.setName(node.getName()) }
-                send0_10QueueDeclare(dest,null,false,false);
-            }
-            node.addBinding(new Binding(dest.getAddressName(),
-                                        dest.getQueueName(),// should have one by now
-                                        dest.getSubject(),
-                                        node.getDeclareArgs()));
-        }
-        else
+        QueueNode node = (QueueNode)dest.getSourceNode();  // source node is never null
+        if (dest.getQueueName() == null || !isQueueExist(dest,node,true))
         {
+            // can name : my-queue be used in x-declare?
+            // if so set it to dest queue name
+            // if (dest.getQueueName() == null) { dest.setName(node.getName()) }
             send0_10QueueDeclare(dest,null,false,false);
-            dest.getTargetNode().addBinding(new Binding(dest.getAddressName(),
-                                                        null,
-                                                        dest.getSubject(),
-                                                        null));
-        }        
+        }
+        node.addBinding(new Binding(dest.getAddressName(),
+                                    dest.getQueueName(),// should have one by now
+                                    dest.getSubject(),
+                                    Collections.<String,Object>emptyMap()));
     }
     
     private void setLegacyFiledsForQueueType(AMQDestination dest)



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