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"); } }; }