Author: davsclaus
Date: Fri Feb 25 07:38:37 2011
New Revision: 1074420

URL: http://svn.apache.org/viewvc?rev=1074420&view=rev
Log:
CAMEL-3718: Fixed OracleAQ not supporting JMSReplyTo and thrown exception on 
accessing.

Modified:
    
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java
    
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
    
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessageHelper.java
    
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java

Modified: 
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java?rev=1074420&r1=1074419&r2=1074420&view=diff
==============================================================================
--- 
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java
 (original)
+++ 
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java
 Fri Feb 25 07:38:37 2011
@@ -317,13 +317,7 @@ public class EndpointMessageListener imp
         // lets send a response back if we can
         Object destination = getReplyToDestination();
         if (destination == null) {
-            try {
-                destination = message.getJMSReplyTo();
-            } catch (JMSException e) {
-                if (LOG.isDebugEnabled()) {
-                    LOG.debug("Cannot read JMSReplyTo header. Will ignore this 
exception.", e);
-                }
-            }
+            destination = JmsMessageHelper.getJMSReplyTo(message);
         }
         return destination;
     }

Modified: 
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java?rev=1074420&r1=1074419&r2=1074420&view=diff
==============================================================================
--- 
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
 (original)
+++ 
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
 Fri Feb 25 07:38:37 2011
@@ -175,18 +175,8 @@ public class JmsBinding {
                 map.put("JMSRedelivered", jmsMessage.getJMSRedelivered());
                 map.put("JMSTimestamp", jmsMessage.getJMSTimestamp());
 
-                // to work around OracleAQ not supporting the JMSReplyTo 
header (CAMEL-2909)
-                try {
-                    map.put("JMSReplyTo", jmsMessage.getJMSReplyTo());
-                } catch (JMSException e) {
-                    LOG.trace("Cannot read JMSReplyTo header. Will ignore this 
exception.", e);
-                }
-                // to work around OracleAQ not supporting the JMSType header 
(CAMEL-2909)
-                try {
-                    map.put("JMSType", jmsMessage.getJMSType());
-                } catch (JMSException e) {
-                    LOG.trace("Cannot read JMSType header. Will ignore this 
exception.", e);
-                }
+                map.put("JMSReplyTo", 
JmsMessageHelper.getJMSReplyTo(jmsMessage));
+                map.put("JMSType", JmsMessageHelper.getJMSType(jmsMessage));
 
                 // this works around a bug in the ActiveMQ property handling
                 map.put("JMSXGroupID", 
jmsMessage.getStringProperty("JMSXGroupID"));
@@ -324,7 +314,8 @@ public class JmsBinding {
                     // if the value is a String we must normalize it first
                     headerValue = normalizeDestinationName((String) 
headerValue);
                 }
-                
jmsMessage.setJMSReplyTo(ExchangeHelper.convertToType(exchange, 
Destination.class, headerValue));
+                Destination replyTo = ExchangeHelper.convertToType(exchange, 
Destination.class, headerValue);
+                JmsMessageHelper.setJMSReplyTo(jmsMessage, replyTo);
             } else if (headerName.equals("JMSType")) {
                 jmsMessage.setJMSType(ExchangeHelper.convertToType(exchange, 
String.class, headerValue));
             } else if (headerName.equals("JMSPriority")) {

Modified: 
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessageHelper.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessageHelper.java?rev=1074420&r1=1074419&r2=1074420&view=diff
==============================================================================
--- 
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessageHelper.java
 (original)
+++ 
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessageHelper.java
 Fri Feb 25 07:38:37 2011
@@ -20,7 +20,7 @@ import java.util.Enumeration;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map.Entry;
-
+import javax.jms.Destination;
 import javax.jms.JMSException;
 import javax.jms.Message;
 
@@ -167,4 +167,51 @@ public final class JmsMessageHelper {
             return destination;
         }
     }
+
+    /**
+     * Sets the JMSReplyTo on the message.
+     *
+     * @param message  the message
+     * @param replyTo  the reply to destination
+     */
+    public static void setJMSReplyTo(Message message, Destination replyTo) {
+        try {
+            message.setJMSReplyTo(replyTo);
+        } catch (Exception e) {
+            // ignore due OracleAQ does not support accessing JMSReplyTo
+        }
+    }
+
+    /**
+     * Gets the JMSReplyTo from the message.
+     *
+     * @param message  the message
+     * @return the reply to, can be <tt>null</tt>
+     */
+    public static Destination getJMSReplyTo(Message message) {
+        try {
+            return message.getJMSReplyTo();
+        } catch (Exception e) {
+            // ignore due OracleAQ does not support accessing JMSReplyTo
+        }
+
+        return null;
+    }
+
+    /**
+     * Gets the JMSType from the message.
+     *
+     * @param message  the message
+     * @return the type, can be <tt>null</tt>
+     */
+    public static String getJMSType(Message message) {
+        try {
+            return message.getJMSType();
+        } catch (Exception e) {
+            // ignore due OracleAQ does not support accessing JMSType
+        }
+
+        return null;
+    }
+
 }

Modified: 
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java?rev=1074420&r1=1074419&r2=1074420&view=diff
==============================================================================
--- 
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java
 (original)
+++ 
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsProducer.java
 Fri Feb 25 07:38:37 2011
@@ -148,7 +148,7 @@ public class JmsProducer extends Default
                 if (replyTo == null) {
                     throw new RuntimeExchangeException("Failed to resolve 
replyTo destination", exchange);
                 }
-                message.setJMSReplyTo(replyTo);
+                JmsMessageHelper.setJMSReplyTo(message, replyTo);
                 replyManager.setReplyToSelectorHeader(in, message);
 
                 String correlationId = determineCorrelationId(message, 
provisionalCorrelationId);
@@ -227,13 +227,13 @@ public class JmsProducer extends Default
                 // there is a JMSReplyTo from the header/endpoint and
                 // we have been told to preserveMessageQos
 
-                Object jmsReplyTo = answer.getJMSReplyTo();
+                Object jmsReplyTo = JmsMessageHelper.getJMSReplyTo(answer);
                 if (endpoint.isDisableReplyTo()) {
                     // honor disable reply to configuration
                     if (LOG.isDebugEnabled()) {
                         LOG.debug("ReplyTo is disabled on endpoint: " + 
endpoint);
                     }
-                    answer.setJMSReplyTo(null);
+                    JmsMessageHelper.setJMSReplyTo(answer, null);
                 } else {
                     // if the binding did not create the reply to then we have 
to try to create it here
                     if (jmsReplyTo == null) {
@@ -296,10 +296,10 @@ public class JmsProducer extends Default
                     if (LOG.isDebugEnabled()) {
                         LOG.debug("Using JMSReplyTo destination: " + replyTo);
                     }
-                    answer.setJMSReplyTo(replyTo);
+                    JmsMessageHelper.setJMSReplyTo(answer, replyTo);
                 } else {
                     // do not use JMSReplyTo
-                    answer.setJMSReplyTo(null);
+                    JmsMessageHelper.setJMSReplyTo(answer, null);
                 }
 
                 return answer;


Reply via email to