You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2018/05/01 11:43:10 UTC
qpid-jms-amqp-0-x git commit: QPID-8141: [JMS AMQP 0-x] Return
resolved destination from Session#createQueue/Session#createTopic if one
exists
Repository: qpid-jms-amqp-0-x
Updated Branches:
refs/heads/master 4ef8f7a4e -> e6657e12d
QPID-8141: [JMS AMQP 0-x] Return resolved destination from Session#createQueue/Session#createTopic if one exists
Project: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/commit/e6657e12
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/tree/e6657e12
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/diff/e6657e12
Branch: refs/heads/master
Commit: e6657e12d7d99956a08d58181c7dd57e9521eb24
Parents: 4ef8f7a
Author: Alex Rudyy <or...@apache.org>
Authored: Tue May 1 11:55:10 2018 +0100
Committer: Alex Rudyy <or...@apache.org>
Committed: Tue May 1 12:05:06 2018 +0100
----------------------------------------------------------------------
.../java/org/apache/qpid/client/AMQSession.java | 55 +++++++++++---------
1 file changed, 31 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/blob/e6657e12/client/src/main/java/org/apache/qpid/client/AMQSession.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/qpid/client/AMQSession.java b/client/src/main/java/org/apache/qpid/client/AMQSession.java
index cba764e..8d10dd9 100644
--- a/client/src/main/java/org/apache/qpid/client/AMQSession.java
+++ b/client/src/main/java/org/apache/qpid/client/AMQSession.java
@@ -676,32 +676,39 @@ public abstract class AMQSession<C extends BasicMessageConsumer, P extends Basic
boolean isResolved(final AMQDestination dest)
{
- if (!_resolvedDestinations.contains(dest))
- {
- return false;
- }
+ return _resolvedDestinations.contains(dest);
+ }
- if (dest.getAddressType() == AMQDestination.QUEUE_TYPE)
+ private <T extends AMQDestination> T getResolvedOfSameClassOrRemoveResolved(final T destination, Class<T> destinationClass)
+ {
+ if (isResolved(destination))
{
- // verify legacy fields are set
- return dest.getQueueName() != null
- && dest.getQueueName().equals(dest.getAddressName())
- && dest.getExchangeName() != null
- && dest.getExchangeClass() != null
- && dest.getRoutingKey() != null;
+ AMQDestination resolved = getResolved(destination);
+ if (resolved != null && destinationClass.isInstance(resolved))
+ {
+ return (T) resolved;
+ }
+ else
+ {
+ setUnresolved(destination);
+ }
}
- else if (dest.getAddressType() == AMQDestination.TOPIC_TYPE)
+ return destination;
+ }
+
+ private AMQDestination getResolved(AMQDestination destination)
+ {
+ for(AMQDestination resolved : _resolvedDestinations)
{
- // verify legacy fields are set
- return dest.getExchangeName() != null
- && dest.getExchangeName().equals(dest.getAddressName())
- && dest.getExchangeClass() != null
- && (dest.getSubject() == null
- || (dest.getSubject() != null && dest.getSubject().equals(dest.getRoutingKey())));
+ if (resolved.equals(destination))
+ {
+ return resolved;
+ }
}
- return false;
+ return null;
}
+
public abstract int resolveAddressType(AMQDestination dest) throws QpidException;
protected abstract void acknowledgeImpl() throws JMSException;
@@ -1336,14 +1343,13 @@ public abstract class AMQSession<C extends BasicMessageConsumer, P extends Basic
}
else
{
- AMQQueue queue = new AMQQueue(queueName);
- return queue;
+ return getResolvedOfSameClassOrRemoveResolved(new AMQQueue(queueName), AMQQueue.class);
}
}
else
{
- return new AMQQueue(queueName);
+ return getResolvedOfSameClassOrRemoveResolved(new AMQQueue(queueName), AMQQueue.class);
}
}
catch (URISyntaxException urlse)
@@ -1641,12 +1647,13 @@ public abstract class AMQSession<C extends BasicMessageConsumer, P extends Basic
}
else
{
- return new AMQTopic("ADDR:" + getDefaultTopicExchangeName() + "/" + topicName);
+ AMQTopic topic = new AMQTopic("ADDR:" + getDefaultTopicExchangeName() + "/" + topicName);
+ return getResolvedOfSameClassOrRemoveResolved(topic, AMQTopic.class);
}
}
else
{
- return new AMQTopic(topicName);
+ return getResolvedOfSameClassOrRemoveResolved(new AMQTopic(topicName), AMQTopic.class);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org