summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRajith Muditha Attapattu <rajith@apache.org>2011-01-20 23:51:09 +0000
committerRajith Muditha Attapattu <rajith@apache.org>2011-01-20 23:51:09 +0000
commit02dd3645cbaf22c1a826610ba760d60cadd39bae (patch)
treef9439d7f4ea873a81e0da7f2dc813febcc79ef98
parent888f2f8b812308c32594f8abcca7aefc956b5803 (diff)
downloadqpid-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
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java29
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractAMQMessageDelegate.java5
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);