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 2007/08/17 18:11:45 UTC
svn commit: r567079 - in /activemq/camel/trunk/components:
camel-activemq/src/test/java/org/apache/camel/component/activemq/
camel-jms/src/main/java/org/apache/camel/component/jms/
Author: jstrachan
Date: Fri Aug 17 09:11:44 2007
New Revision: 567079
URL: http://svn.apache.org/viewvc?view=rev&rev=567079
Log:
added test case and fix for CAMEL-112
Modified:
activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQReplyToHeaderUsingConverterTest.java
activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.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/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQReplyToHeaderUsingConverterTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQReplyToHeaderUsingConverterTest.java?view=diff&rev=567079&r1=567078&r2=567079
==============================================================================
--- activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQReplyToHeaderUsingConverterTest.java (original)
+++ activemq/camel/trunk/components/camel-activemq/src/test/java/org/apache/camel/component/activemq/ActiveMQReplyToHeaderUsingConverterTest.java Fri Aug 17 09:11:44 2007
@@ -20,6 +20,7 @@
import org.apache.camel.CamelContext;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
+import org.apache.camel.Message;
import org.apache.camel.builder.RouteBuilder;
import static org.apache.camel.component.activemq.ActiveMQComponent.activeMQComponent;
import org.apache.camel.component.mock.AssertionClause;
@@ -42,6 +43,7 @@
protected Object expectedBody = "<time>" + new Date() + "</time>";
protected String replyQueueName = "queue://test.my.reply.queue";
protected String correlationID = "ABC-123";
+ protected String groupID = "GROUP-XYZ";
protected String messageType = getClass().getName();
public void testSendingAMessageFromCamelSetsCustomJmsHeaders() throws Exception {
@@ -53,22 +55,30 @@
firstMessage.header("JMSCorrelationID").isEqualTo(correlationID);
firstMessage.header("JMSReplyTo").isEqualTo(ActiveMQConverter.toDestination(replyQueueName));
firstMessage.header("JMSType").isEqualTo(messageType);
+ firstMessage.header("JMSXGroupID").isEqualTo(groupID);
Map<String, Object> headers = new HashMap<String, Object>();
headers.put("cheese", 123);
headers.put("JMSReplyTo", replyQueueName);
headers.put("JMSCorrelationID", correlationID);
headers.put("JMSType", messageType);
+ headers.put("JMSXGroupID", groupID);
template.sendBodyAndHeaders("activemq:test.a", expectedBody, headers);
resultEndpoint.assertIsSatisfied();
List<Exchange> list = resultEndpoint.getReceivedExchanges();
Exchange exchange = list.get(0);
- Object replyTo = exchange.getIn().getHeader("JMSReplyTo");
+ Message in = exchange.getIn();
+ Object replyTo = in.getHeader("JMSReplyTo");
LOG.info("Reply to is: " + replyTo);
Destination destination = assertIsInstanceOf(Destination.class, replyTo);
assertEquals("ReplyTo", replyQueueName, destination.toString());
+
+ assertMessageHeader(in, "cheese", 123);
+ assertMessageHeader(in, "JMSCorrelationID", correlationID);
+ assertMessageHeader(in, "JMSType", messageType);
+ assertMessageHeader(in, "JMSXGroupID", groupID);
}
protected CamelContext createCamelContext() throws Exception {
Modified: activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java?view=diff&rev=567079&r1=567078&r2=567079
==============================================================================
--- activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java (original)
+++ activemq/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java Fri Aug 17 09:11:44 2007
@@ -37,6 +37,7 @@
private Endpoint<E> endpoint;
private Processor processor;
private JmsBinding binding;
+ private boolean eagerLoadingOfProperties;
public EndpointMessageListener(Endpoint<E> endpoint, Processor processor) {
this.endpoint = endpoint;
@@ -50,7 +51,10 @@
LOG.debug(endpoint + " receiving JMS message: " + message);
}
JmsExchange exchange = createExchange(message);
- processor.process((E)exchange);
+ if (eagerLoadingOfProperties) {
+ exchange.getIn().getHeaders();
+ }
+ processor.process(exchange);
} catch (Exception e) {
throw new RuntimeCamelException(e);
@@ -78,5 +82,13 @@
*/
public void setBinding(JmsBinding binding) {
this.binding = binding;
+ }
+
+ public boolean isEagerLoadingOfProperties() {
+ return eagerLoadingOfProperties;
+ }
+
+ public void setEagerLoadingOfProperties(boolean eagerLoadingOfProperties) {
+ this.eagerLoadingOfProperties = eagerLoadingOfProperties;
}
}
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?view=diff&rev=567079&r1=567078&r2=567079
==============================================================================
--- 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 Aug 17 09:11:44 2007
@@ -95,7 +95,7 @@
String headerName = entry.getKey();
Object headerValue = entry.getValue();
- if (headerName.startsWith("JMS")) {
+ if (headerName.startsWith("JMS") && !headerName.startsWith("JMSX")) {
if (headerName.equals("JMSCorrelationID")) {
jmsMessage.setJMSCorrelationID(ExchangeHelper.convertToType(exchange, String.class, 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?view=diff&rev=567079&r1=567078&r2=567079
==============================================================================
--- 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 Aug 17 09:11:44 2007
@@ -122,6 +122,10 @@
map.put("JMSReplyTo", jmsMessage.getJMSReplyTo());
map.put("JMSTimestamp", jmsMessage.getJMSTimestamp());
map.put("JMSType", jmsMessage.getJMSType());
+
+ // TODO this works around a bug in the ActiveMQ property handling
+ map.put("JMSXGroupID", jmsMessage.getStringProperty("JMSXGroupID"));
+
}
catch (JMSException e) {
throw new MessageJMSPropertyAccessException(e);