Author: dkulp
Date: Fri Jul  8 20:29:19 2011
New Revision: 1144495

URL: http://svn.apache.org/viewvc?rev=1144495&view=rev
Log:
Merged revisions 1137696 via svnmerge from 
https://svn.apache.org/repos/asf/camel/trunk

........
  r1137696 | davsclaus | 2011-06-20 12:44:00 -0400 (Mon, 20 Jun 2011) | 1 line
  
  CAMEL-4123: Created javax.jms.Message should have default delivery mode 
preset. CAMEL-4124: Fixed issue with using preserveMessageQos not preserving 
JMSDeliveryMode under certain curcomstanses.
........

Modified:
    camel/branches/camel-2.7.x/   (props changed)
    
camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
    
camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
    
camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessageHelper.java
    
camel/branches/camel-2.7.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteDeliveryModePreserveQoSTest.java

Propchange: camel/branches/camel-2.7.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jul  8 20:29:19 2011
@@ -1 +1 @@
-/camel/trunk:1083696,1083723-1083724,1084150,1085277,1085543,1085549,1085905,1085909,1086165,1086231,1087005,1087276,1087612,1087620,1087856,1088583,1088916-1088917,1089275,1089348,1090166,1090204,1090564,1090960-1090969,1091082,1091518,1091771,1091799,1092034,1092068,1092577,1092667,1093978,1093980,1093999,1094123,1094147,1094156,1095405,1095469,1095471,1095475-1095476,1096346,1096736,1097761,1097909,1097912,1097978,1098032,1098628,1098630,1099228,1099417,1100711,1100975,1102162,1102177,1102181,1104076,1124497,1127744,1127988,1128315,1128970,1131411,1132961,1134252,1134260,1134404,1134501,1134626,1134681,1134714-1134911,1135223,1135364,1136065,1136290,1138285,1139163,1139749,1140096-1140102,1141783,1142500,1142654,1142721,1143332,1143925,1144248,1144324
+/camel/trunk:1083696,1083723-1083724,1084150,1085277,1085543,1085549,1085905,1085909,1086165,1086231,1087005,1087276,1087612,1087620,1087856,1088583,1088916-1088917,1089275,1089348,1090166,1090204,1090564,1090960-1090969,1091082,1091518,1091771,1091799,1092034,1092068,1092577,1092667,1093978,1093980,1093999,1094123,1094147,1094156,1095405,1095469,1095471,1095475-1095476,1096346,1096736,1097761,1097909,1097912,1097978,1098032,1098628,1098630,1099228,1099417,1100711,1100975,1102162,1102177,1102181,1104076,1124497,1127744,1127988,1128315,1128970,1131411,1132961,1134252,1134260,1134404,1134501,1134626,1134681,1134714-1134911,1135223,1135364,1136065,1136290,1137696,1138285,1139163,1139749,1140096-1140102,1141783,1142500,1142654,1142721,1143332,1143925,1144248,1144324

Propchange: camel/branches/camel-2.7.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: 
camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java?rev=1144495&r1=1144494&r2=1144495&view=diff
==============================================================================
--- 
camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
 (original)
+++ 
camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
 Fri Jul  8 20:29:19 2011
@@ -418,7 +418,10 @@ public class JmsBinding {
         if (LOG.isTraceEnabled()) {
             LOG.trace("Using JmsMessageType: " + Object);
         }
-        return session.createObjectMessage(cause);
+        Message answer = session.createObjectMessage(cause);
+        // ensure default delivery mode is used by default
+        answer.setJMSDeliveryMode(Message.DEFAULT_DELIVERY_MODE);
+        return answer;
     }
 
     protected Message createJmsMessage(Exchange exchange, Object body, 
Map<String, Object> headers, Session session, CamelContext context) throws 
JMSException {
@@ -430,7 +433,10 @@ public class JmsBinding {
                 LOG.trace("Option transferExchange=true so we use 
JmsMessageType: Object");
             }
             Serializable holder = DefaultExchangeHolder.marshal(exchange);
-            return session.createObjectMessage(holder);
+            Message answer = session.createObjectMessage(holder);
+            // ensure default delivery mode is used by default
+            answer.setJMSDeliveryMode(Message.DEFAULT_DELIVERY_MODE);
+            return answer;
         }
 
         // use a custom message converter
@@ -456,7 +462,10 @@ public class JmsBinding {
             if (LOG.isTraceEnabled()) {
                 LOG.trace("Using JmsMessageType: " + type);
             }
-            return createJmsMessageForType(exchange, body, headers, session, 
context, type);
+            Message answer = createJmsMessageForType(exchange, body, headers, 
session, context, type);
+            // ensure default delivery mode is used by default
+            answer.setJMSDeliveryMode(Message.DEFAULT_DELIVERY_MODE);
+            return answer;
         }
 
         // warn if the body could not be mapped
@@ -469,7 +478,10 @@ public class JmsBinding {
         }
 
         // return a default message
-        return session.createMessage();
+        Message answer = session.createMessage();
+        // ensure default delivery mode is used by default
+        answer.setJMSDeliveryMode(Message.DEFAULT_DELIVERY_MODE);
+        return answer;
     }
 
     /**

Modified: 
camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java?rev=1144495&r1=1144494&r2=1144495&view=diff
==============================================================================
--- 
camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
 (original)
+++ 
camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
 Fri Jul  8 20:29:19 2011
@@ -241,7 +241,8 @@ public class JmsConfiguration implements
                     // remove the temporary property
                     JmsMessageHelper.removeJmsProperty(message, 
JmsConstants.JMS_DELIVERY_MODE);
                 } else {
-                    deliveryMode = this.getDeliveryMode();
+                    // use the existing delivery mode from the message
+                    deliveryMode = message.getJMSDeliveryMode();
                 }
 
                 // need to log just before so the message is 100% correct when 
logged

Modified: 
camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessageHelper.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessageHelper.java?rev=1144495&r1=1144494&r2=1144495&view=diff
==============================================================================
--- 
camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessageHelper.java
 (original)
+++ 
camel/branches/camel-2.7.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsMessageHelper.java
 Fri Jul  8 20:29:19 2011
@@ -214,4 +214,44 @@ public final class JmsMessageHelper {
         return null;
     }
 
+    /**
+     * Sets the JMSDeliveryMode on the message.
+     *
+     * @param exchange the exchange
+     * @param message  the message
+     * @param deliveryMode  the delivery mode, either as a String or integer
+     * @throws javax.jms.JMSException is thrown if error setting the delivery 
mode
+     */
+    public static void setJMSDeliveryMode(Exchange exchange, Message message, 
Object deliveryMode) throws JMSException {
+        Integer mode = null;
+
+        if (deliveryMode instanceof String) {
+            String s = (String) deliveryMode;
+            if ("PERSISTENT".equalsIgnoreCase(s)) {
+                mode = DeliveryMode.PERSISTENT;
+            } else if ("NON_PERSISTENT".equalsIgnoreCase(s)) {
+                mode = DeliveryMode.NON_PERSISTENT;
+            } else {
+                // it may be a number in the String so try that
+                Integer value = ExchangeHelper.convertToType(exchange, 
Integer.class, deliveryMode);
+                if (value != null) {
+                    mode = value;
+                } else {
+                    throw new IllegalArgumentException("Unknown delivery mode 
with value: " + deliveryMode);
+                }
+            }
+        } else {
+            // fallback and try to convert to a number
+            Integer value = ExchangeHelper.convertToType(exchange, 
Integer.class, deliveryMode);
+            if (value != null) {
+                mode = value;
+            }
+        }
+
+        if (mode != null) {
+            message.setJMSDeliveryMode(mode);
+            message.setIntProperty(JmsConstants.JMS_DELIVERY_MODE, mode);
+        }
+    }
+
 }

Modified: 
camel/branches/camel-2.7.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteDeliveryModePreserveQoSTest.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.7.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteDeliveryModePreserveQoSTest.java?rev=1144495&r1=1144494&r2=1144495&view=diff
==============================================================================
--- 
camel/branches/camel-2.7.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteDeliveryModePreserveQoSTest.java
 (original)
+++ 
camel/branches/camel-2.7.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRouteDeliveryModePreserveQoSTest.java
 Fri Jul  8 20:29:19 2011
@@ -90,10 +90,10 @@ public class JmsRouteDeliveryModePreserv
             @Override
             public void configure() throws Exception {
                 from("activemq:queue:foo")
-                    .to("log:foo")
                     .to("activemq:queue:bar?preserveMessageQos=true");
 
-                from("activemq:queue:bar").to("mock:bar");
+                from("activemq:queue:bar")
+                    .to("mock:bar");
             }
         };
     }


Reply via email to