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