From 2bb385ea8162a76cd7da99643bab451412ef8579 Mon Sep 17 00:00:00 2001 From: Rajith Muditha Attapattu Date: Thu, 20 Jan 2011 23:51:09 +0000 Subject: 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 --- .../client/message/AMQMessageDelegate_0_10.java | 29 ++++++++++++++++------ .../client/message/AbstractAMQMessageDelegate.java | 5 ++++ 2 files changed, 26 insertions(+), 8 deletions(-) (limited to 'java/client') 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 future = + session.exchangeQuery(exchange.toString()); + ExchangeQueryResult res = future.get(); - if (exchange != null && !exchangeMapContains(exchange)) - { - Future 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); -- cgit v1.2.1