Author: rgodfrey
Date: Tue Feb 21 10:21:28 2012
New Revision: 1291694

URL: http://svn.apache.org/viewvc?rev=1291694&view=rev
Log:
QPID-3597 : Python Headers Exchange tests fail against Java Broker (Java Broker 
incorrectly tries to turn 0-10 arguments into 0-9 field table)

Modified:
    
qpid/trunk/qpid/java/broker-plugins/extras/src/main/java/org/apache/qpid/extras/exchanges/example/TestExchange.java
    
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/ManagementExchange.java
    
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java
    
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java
    
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java
    
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
    qpid/trunk/qpid/java/test-profiles/python_tests/Java010PythonExcludes

Modified: 
qpid/trunk/qpid/java/broker-plugins/extras/src/main/java/org/apache/qpid/extras/exchanges/example/TestExchange.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/extras/src/main/java/org/apache/qpid/extras/exchanges/example/TestExchange.java?rev=1291694&r1=1291693&r2=1291694&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/extras/src/main/java/org/apache/qpid/extras/exchanges/example/TestExchange.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/extras/src/main/java/org/apache/qpid/extras/exchanges/example/TestExchange.java
 Tue Feb 21 10:21:28 2012
@@ -80,6 +80,11 @@ public class TestExchange implements Exc
         return false;
     }
 
+    public boolean isBound(String bindingKey, Map<String, Object> arguments, 
AMQQueue queue)
+    {
+        return false;
+    }
+
     public boolean isBound(String bindingKey)
     {
         return false;

Modified: 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/ManagementExchange.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/ManagementExchange.java?rev=1291694&r1=1291693&r2=1291694&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/ManagementExchange.java
 (original)
+++ 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/ManagementExchange.java
 Tue Feb 21 10:21:28 2012
@@ -410,6 +410,11 @@ public class ManagementExchange implemen
         return queues;
     }
 
+    public boolean isBound(String bindingKey, Map<String, Object> arguments, 
AMQQueue queue)
+    {
+        return false;  //TODO
+    }
+
     public boolean isBound(AMQShortString routingKey, FieldTable arguments, 
AMQQueue queue)
     {
         return false;  //To change body of implemented methods use File | 
Settings | File Templates.

Modified: 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java?rev=1291694&r1=1291693&r2=1291694&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java
 (original)
+++ 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java
 Tue Feb 21 10:21:28 2012
@@ -35,6 +35,7 @@ import org.apache.qpid.server.virtualhos
 import javax.management.JMException;
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 
 public interface Exchange extends ExchangeReferrer, ExchangeConfig
 {
@@ -111,6 +112,8 @@ public interface Exchange extends Exchan
 
     boolean isBound(String bindingKey, AMQQueue queue);
 
+    public boolean isBound(String bindingKey, Map<String,Object> arguments, 
AMQQueue queue);
+
     boolean isBound(String bindingKey);
 
     void addCloseTask(Task task);

Modified: 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java?rev=1291694&r1=1291693&r2=1291694&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java
 (original)
+++ 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java
 Tue Feb 21 10:21:28 2012
@@ -39,7 +39,7 @@ class HeadersBinding
 {
     private static final Logger _logger = 
Logger.getLogger(HeadersBinding.class);
 
-    private final FieldTable _mappings;
+    private final Map<String,Object> _mappings;
     private final Binding _binding;
     private final Set<String> required = new HashSet<String>();
     private final Map<String,Object> matches = new HashMap<String,Object>();
@@ -58,7 +58,7 @@ class HeadersBinding
         _binding = binding;
         if(_binding !=null)
         {
-            _mappings = 
FieldTable.convertToFieldTable(_binding.getArguments());
+            _mappings = _binding.getArguments();
             initMappings();
         }
         else
@@ -69,37 +69,23 @@ class HeadersBinding
     
     private void initMappings()
     {
-        _mappings.processOverElements(new 
FieldTable.FieldTableElementProcessor()
+        for(Map.Entry<String, Object> entry : _mappings.entrySet())
         {
-
-            public boolean processElement(String propertyName, AMQTypedValue 
value)
+            String propertyName = entry.getKey();
+            Object value = entry.getValue();
+            if (isSpecial(propertyName))
             {
-                if (isSpecial(propertyName))
-                {
-                    processSpecial(propertyName, value.getValue());
-                }
-                else if (value.getValue() == null || 
value.getValue().equals(""))
-                {
-                    required.add(propertyName);
-                }
-                else
-                {
-                    matches.put(propertyName,value.getValue());
-                }
-
-                return true;
+                processSpecial(propertyName, value);
             }
-
-            public Object getResult()
+            else if (value == null || value.equals(""))
             {
-                return null;
+                required.add(propertyName);
             }
-        });
-    }
-
-    protected FieldTable getMappings()
-    {
-        return _mappings;
+            else
+            {
+                matches.put(propertyName,value);
+            }
+        }
     }
     
     public Binding getBinding()

Modified: 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java?rev=1291694&r1=1291693&r2=1291694&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java
 (original)
+++ 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java
 Tue Feb 21 10:21:28 2012
@@ -38,7 +38,6 @@ import org.apache.qpid.server.protocol.A
 import org.apache.qpid.server.state.AMQStateManager;
 import org.apache.qpid.server.state.StateAwareMethodListener;
 import org.apache.qpid.server.virtualhost.VirtualHost;
-import org.apache.qpid.transport.ExecutionErrorCode;
 
 public class ExchangeDeclareHandler implements 
StateAwareMethodListener<ExchangeDeclareBody>
 {

Modified: 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java?rev=1291694&r1=1291693&r2=1291694&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
 (original)
+++ 
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
 Tue Feb 21 10:21:28 2012
@@ -747,10 +747,7 @@ public class ServerSessionDelegate exten
             }
             else
             {
-                AMQShortString routingKey = new 
AMQShortString(method.getBindingKey());
-                FieldTable fieldTable = 
FieldTable.convertToFieldTable(method.getArguments());
-
-                if (!exchange.isBound(routingKey, fieldTable, queue))
+                if (!exchange.isBound(method.getBindingKey(), 
method.getArguments(), queue))
                 {
                     try
                     {

Modified: qpid/trunk/qpid/java/test-profiles/python_tests/Java010PythonExcludes
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/test-profiles/python_tests/Java010PythonExcludes?rev=1291694&r1=1291693&r2=1291694&view=diff
==============================================================================
--- qpid/trunk/qpid/java/test-profiles/python_tests/Java010PythonExcludes 
(original)
+++ qpid/trunk/qpid/java/test-profiles/python_tests/Java010PythonExcludes Tue 
Feb 21 10:21:28 2012
@@ -78,7 +78,6 @@ qpid_tests.broker_0_10.alternate_exchang
 
qpid_tests.broker_0_10.new_api.GeneralTests.test_qpid_3481_acquired_to_alt_exchange
 
 #QPID-3597 Headers exchange issues
-qpid_tests.broker_0_10.exchange.HeadersExchangeTests.*
 qpid_tests.broker_0_10.queue.QueueTests.test_unbind_headers
 qpid_tests.broker_0_10.exchange.RecommendedTypesRuleTests.testHeaders
 qpid_tests.broker_0_10.exchange.RequiredInstancesRuleTests.testAmqMatch



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

Reply via email to