diff options
author | Rajith Muditha Attapattu <rajith@apache.org> | 2011-01-20 23:51:09 +0000 |
---|---|---|
committer | Rajith Muditha Attapattu <rajith@apache.org> | 2011-01-20 23:51:09 +0000 |
commit | 02dd3645cbaf22c1a826610ba760d60cadd39bae (patch) | |
tree | f9439d7f4ea873a81e0da7f2dc813febcc79ef98 | |
parent | 888f2f8b812308c32594f8abcca7aefc956b5803 (diff) | |
download | qpid-python-02dd3645cbaf22c1a826610ba760d60cadd39bae.tar.gz |
QPID-3011
Commiting a fix as per the solution outlined in the above JIRA.
A null check is added in the generateDestination method in AbstractAMQMessageDelegate.java where an ExchangeInfo object is created with just the exchange name to allow the destination to be created. The correct information will be querried when a consumer or producer is created with that destination.
If a replyTo address is available then the exchange info for that is querried and updated within the updateExchangeTypeMapping method in AMQMessageDelegate_0_10.java
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1061577 13f79535-47bb-0310-9956-ffa450edef68
2 files changed, 26 insertions, 8 deletions
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java b/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java index 522782a6cf..ed2e96e83b 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java @@ -115,15 +115,28 @@ public class AMQMessageDelegate_0_10 extends AbstractAMQMessageDelegate if (deliveryProps != null) { String exchange = deliveryProps.getExchange(); + checkAndUpdateExchange(exchange,session); + + } + + MessageProperties msgProps = header.get(MessageProperties.class); + if (msgProps != null && msgProps.getReplyTo() != null) + { + String exchange = msgProps.getReplyTo().getExchange(); + checkAndUpdateExchange(exchange,session); + + } + } + + private static void checkAndUpdateExchange(String exchange, org.apache.qpid.transport.Session session) + { + if (exchange != null && !exchangeMapContains(exchange)) + { + Future<ExchangeQueryResult> future = + session.exchangeQuery(exchange.toString()); + ExchangeQueryResult res = future.get(); - if (exchange != null && !exchangeMapContains(exchange)) - { - Future<ExchangeQueryResult> future = - session.exchangeQuery(exchange.toString()); - ExchangeQueryResult res = future.get(); - - updateExchangeType(exchange, res.getType()); - } + updateExchangeType(exchange, res.getType()); } } diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractAMQMessageDelegate.java b/qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractAMQMessageDelegate.java index 6b90bd3ad2..89fbc9722c 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractAMQMessageDelegate.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractAMQMessageDelegate.java @@ -95,6 +95,11 @@ public abstract class AbstractAMQMessageDelegate implements AMQMessageDelegate AMQDestination dest; ExchangeInfo exchangeInfo = _exchangeMap.get(exchange.asString()); + if (exchangeInfo == null) + { + exchangeInfo = new ExchangeInfo(exchange.asString(),"",AMQDestination.UNKNOWN_TYPE); + } + if ("topic".equals(exchangeInfo.exchangeType)) { dest = new AMQTopic(exchange, routingKey, null); |