diff options
Diffstat (limited to 'java')
| -rw-r--r-- | java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java | 29 | ||||
| -rw-r--r-- | java/client/src/main/java/org/apache/qpid/client/message/AbstractAMQMessageDelegate.java | 5 |
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); |
