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) {