You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2013/07/28 14:07:13 UTC
[1/4] git commit: CAMEL-6377: Optimize routing engine for delayer to
avoid wrapping.
Updated Branches:
refs/heads/camel-2.11.x d37b8fa19 -> 51369fbc5
refs/heads/master d3c07055a -> 96270b365
CAMEL-6377: Optimize routing engine for delayer to avoid wrapping.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/357f6deb
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/357f6deb
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/357f6deb
Branch: refs/heads/master
Commit: 357f6deb4f9b4a891b5446e3942ac5b842127fcc
Parents: d3c0705
Author: Claus Ibsen <da...@apache.org>
Authored: Sun Jul 28 10:16:55 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Jul 28 10:16:55 2013 +0200
----------------------------------------------------------------------
.../apache/camel/impl/DefaultCamelContext.java | 7 +----
.../org/apache/camel/model/RouteDefinition.java | 1 -
.../camel/processor/CamelInternalProcessor.java | 30 ++++++++++++++++++++
.../processor/interceptor/DefaultChannel.java | 4 +++
.../processor/interceptor/DelayInterceptor.java | 3 ++
.../camel/processor/interceptor/Delayer.java | 3 ++
.../camel/processor/DelayInterceptorTest.java | 8 ++----
7 files changed, 44 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/357f6deb/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 8a3091f..c7e7851 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -1579,12 +1579,7 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
}
if (getDelayer() != null && getDelayer() > 0) {
- // only add a new delayer if not already configured
- if (Delayer.getDelayer(this) == null) {
- long millis = getDelayer();
- log.info("Delayer is enabled with: {} ms. on CamelContext: {}", millis, getName());
- addInterceptStrategy(new Delayer(millis));
- }
+ log.info("Delayer is enabled with: {} ms. on CamelContext: {}", getDelayer(), getName());
}
// register debugger
http://git-wip-us.apache.org/repos/asf/camel/blob/357f6deb/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
index 9af2d2e..4022b0b 100644
--- a/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
@@ -844,7 +844,6 @@ public class RouteDefinition extends ProcessorDefinition<RouteDefinition> {
routeContext.setDelayer(delayer);
if (delayer > 0) {
log.debug("Delayer is enabled with: {} ms. on route: {}", delayer, getId());
- addInterceptStrategy(new Delayer(delayer));
} else {
log.debug("Delayer is disabled on route: {}", getId());
}
http://git-wip-us.apache.org/repos/asf/camel/blob/357f6deb/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
index b93496e..343eed6 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
@@ -759,4 +759,34 @@ public class CamelInternalProcessor extends DelegateAsyncProcessor {
}
}
+ /**
+ * Advice for delaying
+ */
+ public static class DelayerAdvice implements CamelInternalProcessorAdvice {
+
+ private final long delay;
+
+ public DelayerAdvice(long delay) {
+ this.delay = delay;
+ }
+
+ @Override
+ public Object before(Exchange exchange) throws Exception {
+ try {
+ LOG.trace("Sleeping for: {} millis", delay);
+ Thread.sleep(delay);
+ } catch (InterruptedException e) {
+ LOG.debug("Sleep interrupted");
+ Thread.currentThread().interrupt();
+ throw e;
+ }
+ return null;
+ }
+
+ @Override
+ public void after(Exchange exchange, Object data) throws Exception {
+ // noop
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/camel/blob/357f6deb/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
index 6af5e96..7ebe5b0 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
@@ -278,6 +278,10 @@ public class DefaultChannel extends CamelInternalProcessor implements ModelChann
addAdvice(new StreamCachingAdvice(camelContext.getStreamCachingStrategy()));
}
+ if (routeContext.getDelayer() != null && routeContext.getDelayer() > 0) {
+ addAdvice(new DelayerAdvice(routeContext.getDelayer()));
+ }
+
// sets the delegate to our wrapped output
output = target;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/357f6deb/camel-core/src/main/java/org/apache/camel/processor/interceptor/DelayInterceptor.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DelayInterceptor.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DelayInterceptor.java
index b65a4d8..a5a65a1 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DelayInterceptor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DelayInterceptor.java
@@ -24,7 +24,10 @@ import org.apache.camel.processor.DelayProcessorSupport;
/**
* An interceptor for delaying routes.
+ *
+ * @deprecated no longer in use, will be removed in next Camel release.
*/
+@Deprecated
public class DelayInterceptor extends DelayProcessorSupport {
private final ProcessorDefinition<?> node;
http://git-wip-us.apache.org/repos/asf/camel/blob/357f6deb/camel-core/src/main/java/org/apache/camel/processor/interceptor/Delayer.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/interceptor/Delayer.java b/camel-core/src/main/java/org/apache/camel/processor/interceptor/Delayer.java
index 6e833ad..8e8bf4e 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/interceptor/Delayer.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/interceptor/Delayer.java
@@ -25,7 +25,10 @@ import org.apache.camel.spi.InterceptStrategy;
/**
* An interceptor strategy for delaying routes.
+ *
+ * @deprecated no longer in use, will be removed in next Camel release.
*/
+@Deprecated
public class Delayer implements InterceptStrategy {
private volatile boolean enabled = true;
http://git-wip-us.apache.org/repos/asf/camel/blob/357f6deb/camel-core/src/test/java/org/apache/camel/processor/DelayInterceptorTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/processor/DelayInterceptorTest.java b/camel-core/src/test/java/org/apache/camel/processor/DelayInterceptorTest.java
index cc2ef09..1ea6eea 100644
--- a/camel-core/src/test/java/org/apache/camel/processor/DelayInterceptorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/processor/DelayInterceptorTest.java
@@ -20,7 +20,6 @@ import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.processor.interceptor.Delayer;
/**
* Delay interceptor unit test.
@@ -50,11 +49,10 @@ public class DelayInterceptorTest extends ContextTestSupport {
return new RouteBuilder() {
// START SNIPPET: e1
public void configure() throws Exception {
- // add the delay interceptor to delay each step 200 millis
- getContext().addInterceptStrategy(new Delayer(200));
-
+ // configure delayer for each step 200 millis
+ getContext().setDelayer(200L);
+
// regular routes here
- // END SNIPPET: e1
from("direct:start").
process(new Processor() {
[3/4] git commit: CAMEL-6583: Added option includeAllJMSXProperties
to camel-jms.
Posted by da...@apache.org.
CAMEL-6583: Added option includeAllJMSXProperties to camel-jms.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/96270b36
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/96270b36
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/96270b36
Branch: refs/heads/master
Commit: 96270b365572bd2194b3d9551b422e15b3a69299
Parents: 9433bf1
Author: Claus Ibsen <da...@apache.org>
Authored: Sun Jul 28 14:05:52 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Jul 28 14:05:52 2013 +0200
----------------------------------------------------------------------
.../apache/camel/component/jms/JmsBinding.java | 4 +-
.../camel/component/jms/JmsComponent.java | 16 ++++-
.../camel/component/jms/JmsConfiguration.java | 16 +++++
.../apache/camel/component/jms/JmsEndpoint.java | 12 +++-
.../component/jms/JmsHeaderFilterStrategy.java | 8 ++-
.../component/jms/JmsHeaderFilteringTest.java | 19 ++++--
.../jms/JmsIncludeAllJMSXPropertiesTest.java | 71 ++++++++++++++++++++
.../jms/JmsNotIncludeAllJMSXPropertiesTest.java | 71 ++++++++++++++++++++
8 files changed, 206 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/96270b36/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
index 4fca604..ed666df 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
@@ -77,7 +77,7 @@ public class JmsBinding {
public JmsBinding() {
this.endpoint = null;
- headerFilterStrategy = new JmsHeaderFilterStrategy();
+ headerFilterStrategy = new JmsHeaderFilterStrategy(false);
jmsKeyFormatStrategy = new DefaultJmsKeyFormatStrategy();
}
@@ -86,7 +86,7 @@ public class JmsBinding {
if (endpoint.getHeaderFilterStrategy() != null) {
headerFilterStrategy = endpoint.getHeaderFilterStrategy();
} else {
- headerFilterStrategy = new JmsHeaderFilterStrategy();
+ headerFilterStrategy = new JmsHeaderFilterStrategy(endpoint.isIncludeAllJMSXProperties());
}
if (endpoint.getJmsKeyFormatStrategy() != null) {
jmsKeyFormatStrategy = endpoint.getJmsKeyFormatStrategy();
http://git-wip-us.apache.org/repos/asf/camel/blob/96270b36/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
index b31d504..2576946 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
@@ -53,7 +53,7 @@ public class JmsComponent extends UriEndpointComponent implements ApplicationCon
private JmsConfiguration configuration;
private ApplicationContext applicationContext;
private QueueBrowseStrategy queueBrowseStrategy;
- private HeaderFilterStrategy headerFilterStrategy = new JmsHeaderFilterStrategy();
+ private HeaderFilterStrategy headerFilterStrategy;
private ExecutorService asyncStartStopExecutorService;
private MessageListenerContainerFactory messageListenerContainerFactory;
@@ -382,7 +382,11 @@ public class JmsComponent extends UriEndpointComponent implements ApplicationCon
public void setIncludeSentJMSMessageID(boolean includeSentJMSMessageID) {
getConfiguration().setIncludeSentJMSMessageID(includeSentJMSMessageID);
}
-
+
+ public void setIncludeAllJMSXProperties(boolean includeAllJMSXProperties) {
+ getConfiguration().setIncludeAllJMSXProperties(includeAllJMSXProperties);
+ }
+
public void setDefaultTaskExecutorType(DefaultTaskExecutorType type) {
getConfiguration().setDefaultTaskExecutorType(type);
}
@@ -427,6 +431,14 @@ public class JmsComponent extends UriEndpointComponent implements ApplicationCon
// Implementation methods
// -------------------------------------------------------------------------
+
+ @Override
+ protected void doStart() throws Exception {
+ if (headerFilterStrategy == null) {
+ headerFilterStrategy = new JmsHeaderFilterStrategy(getConfiguration().isIncludeAllJMSXProperties());
+ }
+ }
+
@Override
protected void doShutdown() throws Exception {
if (asyncStartStopExecutorService != null) {
http://git-wip-us.apache.org/repos/asf/camel/blob/96270b36/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
index ae22f94..1ae25fa 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
@@ -191,6 +191,8 @@ public class JmsConfiguration implements Cloneable {
@UriParam
private boolean includeSentJMSMessageID;
private DefaultTaskExecutorType defaultTaskExecutorType;
+ @UriParam
+ private boolean includeAllJMSXProperties;
public JmsConfiguration() {
}
@@ -1379,4 +1381,18 @@ public class JmsConfiguration implements Cloneable {
public void setDefaultTaskExecutorType(DefaultTaskExecutorType defaultTaskExecutorType) {
this.defaultTaskExecutorType = defaultTaskExecutorType;
}
+
+ public boolean isIncludeAllJMSXProperties() {
+ return includeAllJMSXProperties;
+ }
+
+ /**
+ * Whether to include all <tt>JMSX</tt> properties as Camel headers when binding from JMS to Camel Message.
+ * <p/>
+ * By default a number of properties is excluded accordingly to the table of JMS properties in the JMS 1.1 spec,
+ * on page 39.
+ */
+ public void setIncludeAllJMSXProperties(boolean includeAllJMSXProperties) {
+ this.includeAllJMSXProperties = includeAllJMSXProperties;
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/96270b36/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
index d941af7..0b1741a 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
@@ -313,7 +313,7 @@ public class JmsEndpoint extends DefaultEndpoint implements HeaderFilterStrategy
public HeaderFilterStrategy getHeaderFilterStrategy() {
if (headerFilterStrategy == null) {
- headerFilterStrategy = new JmsHeaderFilterStrategy();
+ headerFilterStrategy = new JmsHeaderFilterStrategy(isIncludeAllJMSXProperties());
}
return headerFilterStrategy;
}
@@ -1083,6 +1083,16 @@ public class JmsEndpoint extends DefaultEndpoint implements HeaderFilterStrategy
}
@ManagedAttribute
+ public boolean isIncludeAllJMSXProperties() {
+ return configuration.isIncludeAllJMSXProperties();
+ }
+
+ @ManagedAttribute
+ public void setIncludeAllJMSXProperties(boolean includeAllJMSXProperties) {
+ configuration.setIncludeAllJMSXProperties(includeAllJMSXProperties);
+ }
+
+ @ManagedAttribute
public DefaultTaskExecutorType getDefaultTaskExecutorType() {
return configuration.getDefaultTaskExecutorType();
}
http://git-wip-us.apache.org/repos/asf/camel/blob/96270b36/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsHeaderFilterStrategy.java
----------------------------------------------------------------------
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsHeaderFilterStrategy.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsHeaderFilterStrategy.java
index 9f65159..12c7f04 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsHeaderFilterStrategy.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsHeaderFilterStrategy.java
@@ -24,7 +24,13 @@ import org.apache.camel.impl.DefaultHeaderFilterStrategy;
public class JmsHeaderFilterStrategy extends DefaultHeaderFilterStrategy {
public JmsHeaderFilterStrategy() {
- initialize();
+ this(false);
+ }
+
+ public JmsHeaderFilterStrategy(boolean includeAllJMSXProperties) {
+ if (!includeAllJMSXProperties) {
+ initialize();
+ }
}
protected void initialize() {
http://git-wip-us.apache.org/repos/asf/camel/blob/96270b36/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringTest.java
index 8ab24fe..fa7dc4f 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringTest.java
@@ -59,6 +59,7 @@ public class JmsHeaderFilteringTest extends CamelTestSupport {
exchange.getIn().setHeader("org.apache.camel.test.jms", 20000);
exchange.getIn().setHeader("testheader", 1020);
exchange.getIn().setHeader("anotherheader", 1030);
+ exchange.getIn().setHeader("JMSXAppID", "myApp");
}
});
@@ -75,13 +76,15 @@ public class JmsHeaderFilteringTest extends CamelTestSupport {
ConnectionFactory connectionFactory = CamelJmsTestHelper.createConnectionFactory();
camelContext.addComponent(componentName, jmsComponentAutoAcknowledge(connectionFactory));
- // add "testheader" to in filter set
JmsComponent component = camelContext.getComponent(componentName, JmsComponent.class);
- ((DefaultHeaderFilterStrategy)component.getHeaderFilterStrategy()).getInFilter().add("testheader");
- // add "anotherheader" to out filter set
- ((DefaultHeaderFilterStrategy)component.getHeaderFilterStrategy()).getOutFilter().add("anotherheader");
+
+ JmsHeaderFilterStrategy filter = new JmsHeaderFilterStrategy();
+ filter.getInFilter().add("testheader");
+ filter.getOutFilter().add("anotherheader");
// add a regular expression pattern filter, notice that dots are encoded to '_DOT_' in jms headers
- ((DefaultHeaderFilterStrategy)component.getHeaderFilterStrategy()).setInFilterPattern(IN_FILTER_PATTERN);
+ filter.setInFilterPattern(IN_FILTER_PATTERN);
+
+ component.setHeaderFilterStrategy(filter);
return camelContext;
}
@@ -116,6 +119,9 @@ public class JmsHeaderFilteringTest extends CamelTestSupport {
// like testheader, org.apache.camel.test.jms will be filtered by the "in" filter
assertEquals(20000, message.getJmsMessage().getObjectProperty("org_DOT_apache_DOT_camel_DOT_test_DOT_jms"));
+ // should be filtered by default
+ assertNull(message.getJmsMessage().getStringProperty("JMSXAppID"));
+
latch.countDown();
}
@@ -137,6 +143,9 @@ public class JmsHeaderFilteringTest extends CamelTestSupport {
// filtered out by "in" filter
assertNull(exchange.getIn().getHeader("org_DOT_apache_DOT_camel_DOT_test_DOT_jms"));
+ // should be filtered by default
+ assertNull(exchange.getIn().getHeader("JMSXAppID"));
+
latch.countDown();
}
http://git-wip-us.apache.org/repos/asf/camel/blob/96270b36/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsIncludeAllJMSXPropertiesTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsIncludeAllJMSXPropertiesTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsIncludeAllJMSXPropertiesTest.java
new file mode 100644
index 0000000..bd11175
--- /dev/null
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsIncludeAllJMSXPropertiesTest.java
@@ -0,0 +1,71 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.jms;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.jms.ConnectionFactory;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
+
+/**
+ *
+ * @version
+ */
+public class JmsIncludeAllJMSXPropertiesTest extends CamelTestSupport {
+
+ @Test
+ public void testIncludeAll() throws Exception {
+ getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
+ getMockEndpoint("mock:result").expectedHeaderReceived("foo", "bar");
+ getMockEndpoint("mock:result").expectedHeaderReceived("JMSXUserID", "Donald");
+ getMockEndpoint("mock:result").expectedHeaderReceived("JMSXAppID", "MyApp");
+
+ Map headers = new HashMap();
+ headers.put("foo", "bar");
+ headers.put("JMSXUserID", "Donald");
+ headers.put("JMSXAppID", "MyApp");
+
+ template.sendBodyAndHeaders("activemq:queue:in", "Hello World", headers);
+
+ assertMockEndpointsSatisfied();
+ }
+
+ protected CamelContext createCamelContext() throws Exception {
+ CamelContext camelContext = super.createCamelContext();
+ ConnectionFactory connectionFactory = CamelJmsTestHelper.createConnectionFactory();
+ JmsComponent jms = jmsComponentAutoAcknowledge(connectionFactory);
+ jms.setIncludeAllJMSXProperties(true);
+ camelContext.addComponent("activemq", jms);
+ return camelContext;
+ }
+
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ public void configure() throws Exception {
+ from("activemq:queue:in")
+ .to("mock:result");
+ }
+ };
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/96270b36/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsNotIncludeAllJMSXPropertiesTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsNotIncludeAllJMSXPropertiesTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsNotIncludeAllJMSXPropertiesTest.java
new file mode 100644
index 0000000..4bb8695
--- /dev/null
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsNotIncludeAllJMSXPropertiesTest.java
@@ -0,0 +1,71 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.jms;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.jms.ConnectionFactory;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
+
+/**
+ *
+ * @version
+ */
+public class JmsNotIncludeAllJMSXPropertiesTest extends CamelTestSupport {
+
+ @Test
+ public void testNotIncludeAll() throws Exception {
+ getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
+ getMockEndpoint("mock:result").expectedHeaderReceived("foo", "bar");
+ getMockEndpoint("mock:result").expectedHeaderReceived("JMSXUserID", null);
+ getMockEndpoint("mock:result").expectedHeaderReceived("JMSXAppID", null);
+
+ Map headers = new HashMap();
+ headers.put("foo", "bar");
+ headers.put("JMSXUserID", "Donald");
+ headers.put("JMSXAppID", "MyApp");
+
+ template.sendBodyAndHeaders("activemq:queue:in", "Hello World", headers);
+
+ assertMockEndpointsSatisfied();
+ }
+
+ protected CamelContext createCamelContext() throws Exception {
+ CamelContext camelContext = super.createCamelContext();
+ ConnectionFactory connectionFactory = CamelJmsTestHelper.createConnectionFactory();
+ JmsComponent jms = jmsComponentAutoAcknowledge(connectionFactory);
+ jms.setIncludeAllJMSXProperties(false);
+ camelContext.addComponent("activemq", jms);
+ return camelContext;
+ }
+
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ public void configure() throws Exception {
+ from("activemq:queue:in")
+ .to("mock:result");
+ }
+ };
+ }
+
+}
[2/4] git commit: CAMEL-6581: Changing destination using JMX on
SendProcessor not longer supported, to aid optimizing routing engine.
Posted by da...@apache.org.
CAMEL-6581: Changing destination using JMX on SendProcessor not longer supported, to aid optimizing routing engine.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/9433bf13
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9433bf13
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9433bf13
Branch: refs/heads/master
Commit: 9433bf1347544f9acad8b0c2a74e4e480de20dc7
Parents: 357f6de
Author: Claus Ibsen <da...@apache.org>
Authored: Sun Jul 28 10:42:27 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Jul 28 10:42:27 2013 +0200
----------------------------------------------------------------------
.../mbean/ManagedSendProcessorMBean.java | 4 ++++
.../management/mbean/ManagedSendProcessor.java | 4 +---
.../apache/camel/processor/SendProcessor.java | 9 ++++-----
.../management/ManagedSendProcessorTest.java | 21 --------------------
4 files changed, 9 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/9433bf13/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java
index e35e468..a99a49f 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedSendProcessorMBean.java
@@ -23,7 +23,11 @@ public interface ManagedSendProcessorMBean extends ManagedProcessorMBean {
@ManagedAttribute(description = "Destination as Endpoint URI")
String getDestination();
+ /**
+ * @deprecated no longer in use. Will be removed in a future Camel release.
+ */
@ManagedAttribute(description = "Destination as Endpoint URI")
+ @Deprecated
void setDestination(String uri);
@ManagedAttribute(description = "Message Exchange Pattern")
http://git-wip-us.apache.org/repos/asf/camel/blob/9433bf13/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendProcessor.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendProcessor.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendProcessor.java
index 43688e8..668d963 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedSendProcessor.java
@@ -17,7 +17,6 @@
package org.apache.camel.management.mbean;
import org.apache.camel.CamelContext;
-import org.apache.camel.Endpoint;
import org.apache.camel.api.management.ManagedResource;
import org.apache.camel.api.management.mbean.ManagedSendProcessorMBean;
import org.apache.camel.model.ProcessorDefinition;
@@ -44,8 +43,7 @@ public class ManagedSendProcessor extends ManagedProcessor implements ManagedSen
}
public void setDestination(String uri) {
- Endpoint endpoint = getContext().getEndpoint(uri);
- processor.setDestination(endpoint);
+ // noop
}
public String getMessageExchangePattern() {
http://git-wip-us.apache.org/repos/asf/camel/blob/9433bf13/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
index 56f1f6e..c197aa5 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/SendProcessor.java
@@ -66,12 +66,11 @@ public class SendProcessor extends ServiceSupport implements AsyncProcessor, Tra
return "sendTo(" + destination + (pattern != null ? " " + pattern : "") + ")";
}
+ /**
+ * @deprecated not longer supported.
+ */
+ @Deprecated
public void setDestination(Endpoint destination) {
- this.destination = destination;
- // destination changed so purge the cache
- if (producerCache != null) {
- producerCache.purge();
- }
}
public String getTraceLabel() {
http://git-wip-us.apache.org/repos/asf/camel/blob/9433bf13/camel-core/src/test/java/org/apache/camel/management/ManagedSendProcessorTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedSendProcessorTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedSendProcessorTest.java
index 3f01465..6113790 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedSendProcessorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedSendProcessorTest.java
@@ -16,7 +16,6 @@
*/
package org.apache.camel.management;
-import javax.management.Attribute;
import javax.management.MBeanServer;
import javax.management.ObjectName;
@@ -60,26 +59,6 @@ public class ManagedSendProcessorTest extends ManagementTestSupport {
String pattern = (String) mbeanServer.getAttribute(on, "MessageExchangePattern");
assertNull(pattern);
-
- // we must stop it to change the destination
- mbeanServer.invoke(on, "stop", null, null);
-
- // send it somewhere else
- mbeanServer.setAttribute(on, new Attribute("Destination", "direct:foo"));
-
- // start it
- mbeanServer.invoke(on, "start", null, null);
-
- // prepare mocks
- result.reset();
- result.expectedMessageCount(0);
- foo.reset();
- foo.expectedMessageCount(1);
-
- // send in another message that should be sent to mock:foo
- template.sendBody("direct:start", "Bye World");
-
- assertMockEndpointsSatisfied();
}
@Override
[4/4] git commit: CAMEL-6583: Added option includeAllJMSXProperties
to camel-jms.
Posted by da...@apache.org.
CAMEL-6583: Added option includeAllJMSXProperties to camel-jms.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/51369fbc
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/51369fbc
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/51369fbc
Branch: refs/heads/camel-2.11.x
Commit: 51369fbc5bdb5d4787666cfb3c6f735e0753d20f
Parents: d37b8fa
Author: Claus Ibsen <da...@apache.org>
Authored: Sun Jul 28 14:05:52 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Jul 28 14:06:51 2013 +0200
----------------------------------------------------------------------
.../apache/camel/component/jms/JmsBinding.java | 4 +-
.../camel/component/jms/JmsComponent.java | 16 ++++-
.../camel/component/jms/JmsConfiguration.java | 16 +++++
.../apache/camel/component/jms/JmsEndpoint.java | 12 +++-
.../component/jms/JmsHeaderFilterStrategy.java | 8 ++-
.../component/jms/JmsHeaderFilteringTest.java | 19 ++++--
.../jms/JmsIncludeAllJMSXPropertiesTest.java | 71 ++++++++++++++++++++
.../jms/JmsNotIncludeAllJMSXPropertiesTest.java | 71 ++++++++++++++++++++
8 files changed, 206 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/51369fbc/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
index 4fca604..ed666df 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsBinding.java
@@ -77,7 +77,7 @@ public class JmsBinding {
public JmsBinding() {
this.endpoint = null;
- headerFilterStrategy = new JmsHeaderFilterStrategy();
+ headerFilterStrategy = new JmsHeaderFilterStrategy(false);
jmsKeyFormatStrategy = new DefaultJmsKeyFormatStrategy();
}
@@ -86,7 +86,7 @@ public class JmsBinding {
if (endpoint.getHeaderFilterStrategy() != null) {
headerFilterStrategy = endpoint.getHeaderFilterStrategy();
} else {
- headerFilterStrategy = new JmsHeaderFilterStrategy();
+ headerFilterStrategy = new JmsHeaderFilterStrategy(endpoint.isIncludeAllJMSXProperties());
}
if (endpoint.getJmsKeyFormatStrategy() != null) {
jmsKeyFormatStrategy = endpoint.getJmsKeyFormatStrategy();
http://git-wip-us.apache.org/repos/asf/camel/blob/51369fbc/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
index a8e0fc6..b85a075 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java
@@ -53,7 +53,7 @@ public class JmsComponent extends DefaultComponent implements ApplicationContext
private JmsConfiguration configuration;
private ApplicationContext applicationContext;
private QueueBrowseStrategy queueBrowseStrategy;
- private HeaderFilterStrategy headerFilterStrategy = new JmsHeaderFilterStrategy();
+ private HeaderFilterStrategy headerFilterStrategy;
private ExecutorService asyncStartStopExecutorService;
private MessageListenerContainerFactory messageListenerContainerFactory;
@@ -380,7 +380,11 @@ public class JmsComponent extends DefaultComponent implements ApplicationContext
public void setIncludeSentJMSMessageID(boolean includeSentJMSMessageID) {
getConfiguration().setIncludeSentJMSMessageID(includeSentJMSMessageID);
}
-
+
+ public void setIncludeAllJMSXProperties(boolean includeAllJMSXProperties) {
+ getConfiguration().setIncludeAllJMSXProperties(includeAllJMSXProperties);
+ }
+
public void setDefaultTaskExecutorType(DefaultTaskExecutorType type) {
getConfiguration().setDefaultTaskExecutorType(type);
}
@@ -425,6 +429,14 @@ public class JmsComponent extends DefaultComponent implements ApplicationContext
// Implementation methods
// -------------------------------------------------------------------------
+
+ @Override
+ protected void doStart() throws Exception {
+ if (headerFilterStrategy == null) {
+ headerFilterStrategy = new JmsHeaderFilterStrategy(getConfiguration().isIncludeAllJMSXProperties());
+ }
+ }
+
@Override
protected void doShutdown() throws Exception {
if (asyncStartStopExecutorService != null) {
http://git-wip-us.apache.org/repos/asf/camel/blob/51369fbc/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
index 838fc52..349bef0 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
@@ -138,6 +138,8 @@ public class JmsConfiguration implements Cloneable {
private MessageListenerContainerFactory messageListenerContainerFactory;
private boolean includeSentJMSMessageID;
private DefaultTaskExecutorType defaultTaskExecutorType;
+ @UriParam
+ private boolean includeAllJMSXProperties;
public JmsConfiguration() {
}
@@ -1326,4 +1328,18 @@ public class JmsConfiguration implements Cloneable {
public void setDefaultTaskExecutorType(DefaultTaskExecutorType defaultTaskExecutorType) {
this.defaultTaskExecutorType = defaultTaskExecutorType;
}
+
+ public boolean isIncludeAllJMSXProperties() {
+ return includeAllJMSXProperties;
+ }
+
+ /**
+ * Whether to include all <tt>JMSX</tt> properties as Camel headers when binding from JMS to Camel Message.
+ * <p/>
+ * By default a number of properties is excluded accordingly to the table of JMS properties in the JMS 1.1 spec,
+ * on page 39.
+ */
+ public void setIncludeAllJMSXProperties(boolean includeAllJMSXProperties) {
+ this.includeAllJMSXProperties = includeAllJMSXProperties;
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/51369fbc/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
index df53ef8..45828f4 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
@@ -305,7 +305,7 @@ public class JmsEndpoint extends DefaultEndpoint implements HeaderFilterStrategy
public HeaderFilterStrategy getHeaderFilterStrategy() {
if (headerFilterStrategy == null) {
- headerFilterStrategy = new JmsHeaderFilterStrategy();
+ headerFilterStrategy = new JmsHeaderFilterStrategy(isIncludeAllJMSXProperties());
}
return headerFilterStrategy;
}
@@ -1075,6 +1075,16 @@ public class JmsEndpoint extends DefaultEndpoint implements HeaderFilterStrategy
}
@ManagedAttribute
+ public boolean isIncludeAllJMSXProperties() {
+ return configuration.isIncludeAllJMSXProperties();
+ }
+
+ @ManagedAttribute
+ public void setIncludeAllJMSXProperties(boolean includeAllJMSXProperties) {
+ configuration.setIncludeAllJMSXProperties(includeAllJMSXProperties);
+ }
+
+ @ManagedAttribute
public DefaultTaskExecutorType getDefaultTaskExecutorType() {
return configuration.getDefaultTaskExecutorType();
}
http://git-wip-us.apache.org/repos/asf/camel/blob/51369fbc/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsHeaderFilterStrategy.java
----------------------------------------------------------------------
diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsHeaderFilterStrategy.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsHeaderFilterStrategy.java
index 9f65159..12c7f04 100644
--- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsHeaderFilterStrategy.java
+++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsHeaderFilterStrategy.java
@@ -24,7 +24,13 @@ import org.apache.camel.impl.DefaultHeaderFilterStrategy;
public class JmsHeaderFilterStrategy extends DefaultHeaderFilterStrategy {
public JmsHeaderFilterStrategy() {
- initialize();
+ this(false);
+ }
+
+ public JmsHeaderFilterStrategy(boolean includeAllJMSXProperties) {
+ if (!includeAllJMSXProperties) {
+ initialize();
+ }
}
protected void initialize() {
http://git-wip-us.apache.org/repos/asf/camel/blob/51369fbc/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringTest.java
index 8ab24fe..fa7dc4f 100644
--- a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringTest.java
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsHeaderFilteringTest.java
@@ -59,6 +59,7 @@ public class JmsHeaderFilteringTest extends CamelTestSupport {
exchange.getIn().setHeader("org.apache.camel.test.jms", 20000);
exchange.getIn().setHeader("testheader", 1020);
exchange.getIn().setHeader("anotherheader", 1030);
+ exchange.getIn().setHeader("JMSXAppID", "myApp");
}
});
@@ -75,13 +76,15 @@ public class JmsHeaderFilteringTest extends CamelTestSupport {
ConnectionFactory connectionFactory = CamelJmsTestHelper.createConnectionFactory();
camelContext.addComponent(componentName, jmsComponentAutoAcknowledge(connectionFactory));
- // add "testheader" to in filter set
JmsComponent component = camelContext.getComponent(componentName, JmsComponent.class);
- ((DefaultHeaderFilterStrategy)component.getHeaderFilterStrategy()).getInFilter().add("testheader");
- // add "anotherheader" to out filter set
- ((DefaultHeaderFilterStrategy)component.getHeaderFilterStrategy()).getOutFilter().add("anotherheader");
+
+ JmsHeaderFilterStrategy filter = new JmsHeaderFilterStrategy();
+ filter.getInFilter().add("testheader");
+ filter.getOutFilter().add("anotherheader");
// add a regular expression pattern filter, notice that dots are encoded to '_DOT_' in jms headers
- ((DefaultHeaderFilterStrategy)component.getHeaderFilterStrategy()).setInFilterPattern(IN_FILTER_PATTERN);
+ filter.setInFilterPattern(IN_FILTER_PATTERN);
+
+ component.setHeaderFilterStrategy(filter);
return camelContext;
}
@@ -116,6 +119,9 @@ public class JmsHeaderFilteringTest extends CamelTestSupport {
// like testheader, org.apache.camel.test.jms will be filtered by the "in" filter
assertEquals(20000, message.getJmsMessage().getObjectProperty("org_DOT_apache_DOT_camel_DOT_test_DOT_jms"));
+ // should be filtered by default
+ assertNull(message.getJmsMessage().getStringProperty("JMSXAppID"));
+
latch.countDown();
}
@@ -137,6 +143,9 @@ public class JmsHeaderFilteringTest extends CamelTestSupport {
// filtered out by "in" filter
assertNull(exchange.getIn().getHeader("org_DOT_apache_DOT_camel_DOT_test_DOT_jms"));
+ // should be filtered by default
+ assertNull(exchange.getIn().getHeader("JMSXAppID"));
+
latch.countDown();
}
http://git-wip-us.apache.org/repos/asf/camel/blob/51369fbc/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsIncludeAllJMSXPropertiesTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsIncludeAllJMSXPropertiesTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsIncludeAllJMSXPropertiesTest.java
new file mode 100644
index 0000000..bd11175
--- /dev/null
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsIncludeAllJMSXPropertiesTest.java
@@ -0,0 +1,71 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.jms;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.jms.ConnectionFactory;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
+
+/**
+ *
+ * @version
+ */
+public class JmsIncludeAllJMSXPropertiesTest extends CamelTestSupport {
+
+ @Test
+ public void testIncludeAll() throws Exception {
+ getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
+ getMockEndpoint("mock:result").expectedHeaderReceived("foo", "bar");
+ getMockEndpoint("mock:result").expectedHeaderReceived("JMSXUserID", "Donald");
+ getMockEndpoint("mock:result").expectedHeaderReceived("JMSXAppID", "MyApp");
+
+ Map headers = new HashMap();
+ headers.put("foo", "bar");
+ headers.put("JMSXUserID", "Donald");
+ headers.put("JMSXAppID", "MyApp");
+
+ template.sendBodyAndHeaders("activemq:queue:in", "Hello World", headers);
+
+ assertMockEndpointsSatisfied();
+ }
+
+ protected CamelContext createCamelContext() throws Exception {
+ CamelContext camelContext = super.createCamelContext();
+ ConnectionFactory connectionFactory = CamelJmsTestHelper.createConnectionFactory();
+ JmsComponent jms = jmsComponentAutoAcknowledge(connectionFactory);
+ jms.setIncludeAllJMSXProperties(true);
+ camelContext.addComponent("activemq", jms);
+ return camelContext;
+ }
+
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ public void configure() throws Exception {
+ from("activemq:queue:in")
+ .to("mock:result");
+ }
+ };
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/51369fbc/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsNotIncludeAllJMSXPropertiesTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsNotIncludeAllJMSXPropertiesTest.java b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsNotIncludeAllJMSXPropertiesTest.java
new file mode 100644
index 0000000..4bb8695
--- /dev/null
+++ b/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsNotIncludeAllJMSXPropertiesTest.java
@@ -0,0 +1,71 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.jms;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.jms.ConnectionFactory;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+import static org.apache.camel.component.jms.JmsComponent.jmsComponentAutoAcknowledge;
+
+/**
+ *
+ * @version
+ */
+public class JmsNotIncludeAllJMSXPropertiesTest extends CamelTestSupport {
+
+ @Test
+ public void testNotIncludeAll() throws Exception {
+ getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
+ getMockEndpoint("mock:result").expectedHeaderReceived("foo", "bar");
+ getMockEndpoint("mock:result").expectedHeaderReceived("JMSXUserID", null);
+ getMockEndpoint("mock:result").expectedHeaderReceived("JMSXAppID", null);
+
+ Map headers = new HashMap();
+ headers.put("foo", "bar");
+ headers.put("JMSXUserID", "Donald");
+ headers.put("JMSXAppID", "MyApp");
+
+ template.sendBodyAndHeaders("activemq:queue:in", "Hello World", headers);
+
+ assertMockEndpointsSatisfied();
+ }
+
+ protected CamelContext createCamelContext() throws Exception {
+ CamelContext camelContext = super.createCamelContext();
+ ConnectionFactory connectionFactory = CamelJmsTestHelper.createConnectionFactory();
+ JmsComponent jms = jmsComponentAutoAcknowledge(connectionFactory);
+ jms.setIncludeAllJMSXProperties(false);
+ camelContext.addComponent("activemq", jms);
+ return camelContext;
+ }
+
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ public void configure() throws Exception {
+ from("activemq:queue:in")
+ .to("mock:result");
+ }
+ };
+ }
+
+}