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