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
commit2bb385ea8162a76cd7da99643bab451412ef8579 (patch)
tree85669c4d6cfeef688b371099c8e1cb9f6788b1d7
parentf89731ae3ec246a09a53f6eaa0c8506199321fd2 (diff)
downloadqpid-python-2bb385ea8162a76cd7da99643bab451412ef8579.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/qpid@1061577 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java29
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/message/AbstractAMQMessageDelegate.java5
2 files changed, 26 insertions, 8 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java b/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java
index 522782a6cf..ed2e96e83b 100644
--- a/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java
+++ b/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/java/client/src/main/java/org/apache/qpid/client/message/AbstractAMQMessageDelegate.java b/java/client/src/main/java/org/apache/qpid/client/message/AbstractAMQMessageDelegate.java
index 6b90bd3ad2..89fbc9722c 100644
--- a/java/client/src/main/java/org/apache/qpid/client/message/AbstractAMQMessageDelegate.java
+++ b/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);