You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2011/09/14 10:32:56 UTC

svn commit: r1170474 - in /activemq/trunk/activemq-core/src: main/java/org/apache/activemq/command/ main/java/org/apache/activemq/transport/stomp/ test/java/org/apache/activemq/transport/stomp/

Author: gtully
Date: Wed Sep 14 08:32:56 2011
New Revision: 1170474

URL: http://svn.apache.org/viewvc?rev=1170474&view=rev
Log:
https://issues.apache.org/jira/browse/AMQ-3496 - make use of the org.apache.activemq.command.UnresolvedDestinationTransformer to provide a default value for an unqualified destinations string for a stomp replyTo header

Modified:
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/DefaultUnresolvedDestinationTransformer.java
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/UnresolvedDestinationTransformer.java
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/stomp/LegacyFrameTranslator.java
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/stomp/StompTest.java

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/DefaultUnresolvedDestinationTransformer.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/DefaultUnresolvedDestinationTransformer.java?rev=1170474&r1=1170473&r2=1170474&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/DefaultUnresolvedDestinationTransformer.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/DefaultUnresolvedDestinationTransformer.java Wed Sep 14 08:32:56 2011
@@ -48,4 +48,9 @@ public class DefaultUnresolvedDestinatio
             throw new JMSException("Unresolvable destination: "  + e.getMessage() + ": " + dest);
         }
     }
+
+    @Override
+    public ActiveMQDestination transform(String dest) throws JMSException {
+        return new ActiveMQQueue(dest);
+    }
 }

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/UnresolvedDestinationTransformer.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/UnresolvedDestinationTransformer.java?rev=1170474&r1=1170473&r2=1170474&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/UnresolvedDestinationTransformer.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/UnresolvedDestinationTransformer.java Wed Sep 14 08:32:56 2011
@@ -22,5 +22,5 @@ import javax.jms.JMSException;
 public interface UnresolvedDestinationTransformer {
 
     public ActiveMQDestination transform(Destination dest) throws JMSException;
-
+    public ActiveMQDestination transform(String dest) throws JMSException;
 }

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/stomp/LegacyFrameTranslator.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/stomp/LegacyFrameTranslator.java?rev=1170474&r1=1170473&r2=1170474&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/stomp/LegacyFrameTranslator.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/transport/stomp/LegacyFrameTranslator.java Wed Sep 14 08:32:56 2011
@@ -187,6 +187,15 @@ public class LegacyFrameTranslator imple
         } else if (name.startsWith("/temp-topic/")) {
             return converter.createTempTopic(name);
         } else {
+            try {
+                ActiveMQDestination fallback = ActiveMQDestination.getUnresolvableDestinationTransformer().transform(name);
+                if (fallback != null) {
+                    return fallback;
+                }
+            } catch (JMSException e) {
+                 throw new ProtocolException("Illegal destination name: [" + name + "] -- ActiveMQ STOMP destinations "
+                                        + "must begin with one of: /queue/ /topic/ /temp-queue/ /temp-topic/", false, e);
+            }
             throw new ProtocolException("Illegal destination name: [" + name + "] -- ActiveMQ STOMP destinations "
                                         + "must begin with one of: /queue/ /topic/ /temp-queue/ /temp-topic/");
         }

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/stomp/StompTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/stomp/StompTest.java?rev=1170474&r1=1170473&r2=1170474&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/stomp/StompTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/stomp/StompTest.java Wed Sep 14 08:32:56 2011
@@ -1529,6 +1529,22 @@ public class StompTest extends Combinati
         assertEquals(stompMessage.getHeaders().get(Stomp.Headers.Message.ORIGINAL_DESTINATION), "/queue/" + getQueueName());
     }
 
+    public void testDefaultJMSReplyToDest() throws Exception {
+        stompConnection.connect("system", "manager");
+
+        HashMap<String, String> headers = new HashMap<String, String>();
+        long timestamp = System.currentTimeMillis();
+        headers.put(Stomp.Headers.Send.REPLY_TO, "JustAString");
+        headers.put(Stomp.Headers.Send.PERSISTENT, "true");
+
+        stompConnection.send("/queue/" + getQueueName(), "msg-with-reply-to", null, headers);
+
+        stompConnection.subscribe("/queue/" + getQueueName());
+        StompFrame stompMessage = stompConnection.receive(1000);
+        assertNotNull(stompMessage);
+        assertEquals(""  + stompMessage, stompMessage.getHeaders().get(Stomp.Headers.Send.REPLY_TO), "/queue/" + "JustAString");
+    }
+
     public void testPersistent() throws Exception {
         stompConnection.connect("system", "manager");