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