You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2008/05/02 18:54:04 UTC

svn commit: r652815 - in /activemq/camel/trunk: camel-core/src/main/java/org/apache/camel/impl/ components/camel-jms/src/main/java/org/apache/camel/component/jms/

Author: jstrachan
Date: Fri May  2 09:54:04 2008
New Revision: 652815

URL: http://svn.apache.org/viewvc?rev=652815&view=rev
Log:
added patch which causes SetHeaderTest to fail in activemq-core

Modified:
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
    activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
    activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java?rev=652815&r1=652814&r2=652815&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultMessage.java Fri May  2 09:54:04 2008
@@ -174,4 +174,11 @@
     public void setAttachments(Map<String, DataHandler> attachments) {
         this.attachments = attachments;
     }
+
+    /**
+     * Returns true if the headers have been mutated in some way
+     */
+    protected boolean hasPopulatedHeaders() {
+        return headers != null;
+    }
 }

Modified: activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java?rev=652815&r1=652814&r2=652815&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java (original)
+++ activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java Fri May  2 09:54:04 2008
@@ -128,7 +128,9 @@
         boolean alwaysCopy = (endpoint != null) ? endpoint.getConfiguration().isAlwaysCopyMessage() : false;
         if (!alwaysCopy && camelMessage instanceof JmsMessage) {
             JmsMessage jmsMessage = (JmsMessage)camelMessage;
-            answer = jmsMessage.getJmsMessage();
+            if (! jmsMessage.shouldCreateNewMessage()) {
+                answer = jmsMessage.getJmsMessage();
+            }
         }
         if (answer == null) {
             answer = createJmsMessage(camelMessage.getBody(), session, exchange.getContext());
@@ -154,29 +156,33 @@
             String headerName = entry.getKey();
             Object headerValue = entry.getValue();
 
-            if (headerName.startsWith("JMS") && !headerName.startsWith("JMSX")) {
-                if (headerName.equals("JMSCorrelationID")) {
-                    jmsMessage.setJMSCorrelationID(ExchangeHelper.convertToType(exchange, String.class,
-                                                                                headerValue));
-                } else if (headerName.equals("JMSCorrelationID")) {
-                    jmsMessage.setJMSCorrelationID(ExchangeHelper.convertToType(exchange, String.class,
-                                                                                headerValue));
-                } else if (headerName.equals("JMSReplyTo")) {
-                    jmsMessage.setJMSReplyTo(ExchangeHelper.convertToType(exchange, Destination.class,
-                                                                          headerValue));
-                } else if (headerName.equals("JMSType")) {
-                    jmsMessage.setJMSType(ExchangeHelper.convertToType(exchange, String.class, headerValue));
-                } else if (LOG.isDebugEnabled()) {
-                    // The following properties are set by the MessageProducer
-                    // JMSDeliveryMode, JMSDestination, JMSExpiration,
-                    // JMSPriority,
-                    // The following are set on the underlying JMS provider
-                    // JMSMessageID, JMSTimestamp, JMSRedelivered
-                    LOG.debug("Ignoring JMS header: " + headerName + " with value: " + headerValue);
-                }
-            } else if (shouldOutputHeader(in, headerName, headerValue)) {
-                jmsMessage.setObjectProperty(headerName, headerValue);
+            appendJmsProperty(jmsMessage, exchange, in, headerName, headerValue);
+        }
+    }
+
+    public void appendJmsProperty(Message jmsMessage, Exchange exchange, org.apache.camel.Message in, String headerName, Object headerValue) throws JMSException {
+        if (headerName.startsWith("JMS") && !headerName.startsWith("JMSX")) {
+            if (headerName.equals("JMSCorrelationID")) {
+                jmsMessage.setJMSCorrelationID(ExchangeHelper.convertToType(exchange, String.class,
+                                                                            headerValue));
+            } else if (headerName.equals("JMSCorrelationID")) {
+                jmsMessage.setJMSCorrelationID(ExchangeHelper.convertToType(exchange, String.class,
+                                                                            headerValue));
+            } else if (headerName.equals("JMSReplyTo")) {
+                jmsMessage.setJMSReplyTo(ExchangeHelper.convertToType(exchange, Destination.class,
+                                                                      headerValue));
+            } else if (headerName.equals("JMSType")) {
+                jmsMessage.setJMSType(ExchangeHelper.convertToType(exchange, String.class, headerValue));
+            } else if (LOG.isDebugEnabled()) {
+                // The following properties are set by the MessageProducer
+                // JMSDeliveryMode, JMSDestination, JMSExpiration,
+                // JMSPriority,
+                // The following are set on the underlying JMS provider
+                // JMSMessageID, JMSTimestamp, JMSRedelivered
+                LOG.debug("Ignoring JMS header: " + headerName + " with value: " + headerValue);
             }
+        } else if (shouldOutputHeader(in, headerName, headerValue)) {
+            jmsMessage.setObjectProperty(headerName, headerValue);
         }
     }
 

Modified: activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java?rev=652815&r1=652814&r2=652815&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java (original)
+++ activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessage.java Fri May  2 09:54:04 2008
@@ -133,6 +133,13 @@
         return new JmsMessage();
     }
 
+    /**
+     * Returns true if a new JMS message instance should be created to send to the next component
+     */
+    public boolean shouldCreateNewMessage() {
+        return super.hasPopulatedHeaders();
+    }
+
     @Override
     protected Object createBody() {
         if (jmsMessage != null) {