summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2012-02-21 10:21:28 +0000
committerRobert Godfrey <rgodfrey@apache.org>2012-02-21 10:21:28 +0000
commitf1e33526dcfc6d09d5ca4814465ec3efb2392bdc (patch)
tree98bdf1efdb87137334c566aa0f2837bf8e67c517
parentef8d5c15e983e9d23af43eb216c7aa45c06c8206 (diff)
downloadqpid-python-f1e33526dcfc6d09d5ca4814465ec3efb2392bdc.tar.gz
QPID-3597 : Python Headers Exchange tests fail against Java Broker (Java Broker incorrectly tries to turn 0-10 arguments into 0-9 field table)
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1291694 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/broker-plugins/extras/src/main/java/org/apache/qpid/extras/exchanges/example/TestExchange.java5
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/qmf/ManagementExchange.java5
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java3
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java42
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java1
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java5
-rw-r--r--qpid/java/test-profiles/python_tests/Java010PythonExcludes1
7 files changed, 28 insertions, 34 deletions
diff --git a/qpid/java/broker-plugins/extras/src/main/java/org/apache/qpid/extras/exchanges/example/TestExchange.java b/qpid/java/broker-plugins/extras/src/main/java/org/apache/qpid/extras/exchanges/example/TestExchange.java
index ace30b9b89..cf79924f3d 100644
--- a/qpid/java/broker-plugins/extras/src/main/java/org/apache/qpid/extras/exchanges/example/TestExchange.java
+++ b/qpid/java/broker-plugins/extras/src/main/java/org/apache/qpid/extras/exchanges/example/TestExchange.java
@@ -80,6 +80,11 @@ public class TestExchange implements Exchange
return false;
}
+ public boolean isBound(String bindingKey, Map<String, Object> arguments, AMQQueue queue)
+ {
+ return false;
+ }
+
public boolean isBound(String bindingKey)
{
return false;
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/qmf/ManagementExchange.java b/qpid/java/broker/src/main/java/org/apache/qpid/qmf/ManagementExchange.java
index 1a098d0446..2d6f7e0946 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/qmf/ManagementExchange.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/qmf/ManagementExchange.java
@@ -410,6 +410,11 @@ public class ManagementExchange implements Exchange, QMFService.Listener
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.
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java
index c3ae15f09c..0bcfc3a3da 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java
@@ -35,6 +35,7 @@ import org.apache.qpid.server.virtualhost.VirtualHost;
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 ExchangeReferrer, ExchangeConfig
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);
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java
index 0886ae2ae0..b6f5f973f4 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java
@@ -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()
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java
index 504d9f9411..6d55f31ebc 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java
@@ -38,7 +38,6 @@ import org.apache.qpid.server.protocol.AMQProtocolSession;
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>
{
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
index 2ee6f31af7..629597f40b 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
@@ -747,10 +747,7 @@ public class ServerSessionDelegate extends SessionDelegate
}
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
{
diff --git a/qpid/java/test-profiles/python_tests/Java010PythonExcludes b/qpid/java/test-profiles/python_tests/Java010PythonExcludes
index 038b43598d..91a04cc4d2 100644
--- a/qpid/java/test-profiles/python_tests/Java010PythonExcludes
+++ b/qpid/java/test-profiles/python_tests/Java010PythonExcludes
@@ -78,7 +78,6 @@ qpid_tests.broker_0_10.alternate_exchange.AlternateExchangeTests.test_add_altern
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