You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by js...@apache.org on 2006/01/10 20:14:08 UTC

svn commit: r367741 - in /incubator/activemq/trunk/activemq-core/src: main/java/org/apache/activemq/command/ActiveMQMessage.java main/java/org/apache/activemq/command/MessageId.java test/java/org/apache/activemq/command/ActiveMQMessageTest.java

Author: jstrachan
Date: Tue Jan 10 11:14:01 2006
New Revision: 367741

URL: http://svn.apache.org/viewcvs?rev=367741&view=rev
Log:
fix to allow a foreign JMS message ID to be set on an ActiveMQMessage

Modified:
    incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ActiveMQMessage.java
    incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/MessageId.java
    incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/command/ActiveMQMessageTest.java

Modified: incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ActiveMQMessage.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ActiveMQMessage.java?rev=367741&r1=367740&r2=367741&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ActiveMQMessage.java (original)
+++ incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ActiveMQMessage.java Tue Jan 10 11:14:01 2006
@@ -114,8 +114,13 @@
             try {
                 MessageId id = new MessageId(value);
                 this.setMessageId(id);
-            } catch (Throwable e) {
-                throw JMSExceptionSupport.create("Invalid message id '" + value + "', reason: " + e.getMessage(), e);
+            }
+            catch (NumberFormatException e) {
+                // we must be some foreign JMS provider or strange user-supplied String
+                // so lets set the IDs to be 1
+                MessageId id = new MessageId();
+                id.setTextView(value);
+                this.setMessageId(messageId);
             }
         } else {
             this.setMessageId(null);

Modified: incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/MessageId.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/MessageId.java?rev=367741&r1=367740&r2=367741&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/MessageId.java (original)
+++ incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/MessageId.java Tue Jan 10 11:14:01 2006
@@ -42,7 +42,7 @@
     }
 
     public MessageId(String messageKey) {
-        setMessageKey(messageKey);
+        setValue(messageKey);
     }
     
     public MessageId(String producerId, long producerSequenceId) {
@@ -54,17 +54,28 @@
         this.producerSequenceId = producerSequenceId;        
     }
     
-    public void setMessageKey(String messageKey) {
+    /**
+     * Sets the value as a String
+     */
+    public void setValue(String messageKey) {
         key = messageKey;
-        // Parse off the sequenceId
-        int p = messageKey.lastIndexOf(":");
-        if( p >= 0 ) {
-            producerSequenceId = Long.parseLong(messageKey.substring(p+1));
-            messageKey = messageKey.substring(0,p);
-        }
-        producerId = new ProducerId(messageKey);
+            // Parse off the sequenceId
+            int p = messageKey.lastIndexOf(":");
+            if( p >= 0 ) {
+                producerSequenceId = Long.parseLong(messageKey.substring(p+1));
+                messageKey = messageKey.substring(0,p);
+            }
+            producerId = new ProducerId(messageKey);
     }
     
+    /**
+     * Sets the transient text view of the message which will be ignored
+     * if the message is marshaled on a transport; so is only for in-JVM changes
+     * to accommodate foreign JMS message IDs
+     */
+    public void setTextView(String key) {
+        this.key = key;
+    }
 
     public byte getDataStructureType() {
         return DATA_STRUCTURE_TYPE;

Modified: incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/command/ActiveMQMessageTest.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/command/ActiveMQMessageTest.java?rev=367741&r1=367740&r2=367741&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/command/ActiveMQMessageTest.java (original)
+++ incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/command/ActiveMQMessageTest.java Tue Jan 10 11:14:01 2006
@@ -129,6 +129,11 @@
         assertTrue(test);
     }
 
+    public void testSetToForeignJMSID() throws Exception {
+        ActiveMQMessage msg = new ActiveMQMessage();
+        msg.setJMSMessageID("ID:EMS-SERVER.8B443C380083:429");
+        
+    }
     /*
      * Class to test for boolean equals(Object)
      */