Author: janstey Date: Tue Oct 2 19:01:09 2012 New Revision: 1393097 URL: http://svn.apache.org/viewvc?rev=1393097&view=rev Log: CAMEL-5676 - Allow for custom listener container in camel-jms
Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/ConsumerType.java camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSimpleRequestCustomReplyToTest.java Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/ConsumerType.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/ConsumerType.java?rev=1393097&r1=1393096&r2=1393097&view=diff ============================================================================== --- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/ConsumerType.java (original) +++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/ConsumerType.java Tue Oct 2 19:01:09 2012 @@ -20,5 +20,5 @@ package org.apache.camel.component.jms; * @version */ public enum ConsumerType { - Simple, Default + Simple, Default, Custom } Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java?rev=1393097&r1=1393096&r2=1393097&view=diff ============================================================================== --- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java (original) +++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java Tue Oct 2 19:01:09 2012 @@ -35,6 +35,7 @@ import org.springframework.core.task.Tas import org.springframework.jms.connection.JmsTransactionManager; import org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter; import org.springframework.jms.core.JmsOperations; +import org.springframework.jms.listener.AbstractMessageListenerContainer; import org.springframework.jms.support.converter.MessageConverter; import org.springframework.jms.support.destination.DestinationResolver; import org.springframework.transaction.PlatformTransactionManager; @@ -496,7 +497,14 @@ public class JmsComponent extends Defaul endpoint.setJmsKeyFormatStrategy(resolveAndRemoveReferenceParameter( parameters, KEY_FORMAT_STRATEGY_PARAM, JmsKeyFormatStrategy.class)); } - + + // remove the listener from the registry because we cannot reuse it for a 2nd endpoint + AbstractMessageListenerContainer customMessageListenerContainer = resolveAndRemoveReferenceParameter( + parameters, "customMessageListenerContainerRef", AbstractMessageListenerContainer.class); + if (customMessageListenerContainer != null) { + endpoint.setCustomMessageListenerContainer(customMessageListenerContainer); + } + setProperties(endpoint.getConfiguration(), parameters); endpoint.setHeaderFilterStrategy(getHeaderFilterStrategy()); Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java?rev=1393097&r1=1393096&r2=1393097&view=diff ============================================================================== --- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java (original) +++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java Tue Oct 2 19:01:09 2012 @@ -135,6 +135,7 @@ public class JmsConfiguration implements // the cacheLevelName of reply manager private String replyToCacheLevelName; private boolean allowNullBody = true; + private AbstractMessageListenerContainer customMessageListenerContainer; public JmsConfiguration() { } @@ -383,6 +384,8 @@ public class JmsConfiguration implements return new SimpleJmsMessageListenerContainer(endpoint); case Default: return new DefaultJmsMessageListenerContainer(endpoint); + case Custom: + return getCustomMessageListenerContainer(); default: throw new IllegalArgumentException("Unknown consumer type: " + consumerType); } @@ -1277,4 +1280,13 @@ public class JmsConfiguration implements public void setAllowNullBody(boolean allowNullBody) { this.allowNullBody = allowNullBody; } + + public AbstractMessageListenerContainer getCustomMessageListenerContainer() { + return customMessageListenerContainer; + } + + public void setCustomMessageListenerContainer( + AbstractMessageListenerContainer customMessageListenerContainer) { + this.customMessageListenerContainer = customMessageListenerContainer; + } } Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java?rev=1393097&r1=1393096&r2=1393097&view=diff ============================================================================== --- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java (original) +++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java Tue Oct 2 19:01:09 2012 @@ -1040,6 +1040,16 @@ public class JmsEndpoint extends Default public void setAllowNullBody(boolean allowNullBody) { configuration.setAllowNullBody(allowNullBody); } + + public AbstractMessageListenerContainer getCustomMessageListenerContainer() { + return configuration.getCustomMessageListenerContainer(); + } + + public void setCustomMessageListenerContainer( + AbstractMessageListenerContainer customMessageListenerContainer) { + configuration.setCustomMessageListenerContainer(customMessageListenerContainer); + configuration.setConsumerType(ConsumerType.Custom); + } @ManagedAttribute public String getReplyToType() { Modified: camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSimpleRequestCustomReplyToTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSimpleRequestCustomReplyToTest.java?rev=1393097&r1=1393096&r2=1393097&view=diff ============================================================================== --- camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSimpleRequestCustomReplyToTest.java (original) +++ camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSimpleRequestCustomReplyToTest.java Tue Oct 2 19:01:09 2012 @@ -48,7 +48,7 @@ public class JmsSimpleRequestCustomReply @Test public void testRequetCustomReplyTo() throws Exception { // use another thread to send the late reply to simulate that we do it later, not - // from the origianl route anyway + // from the original route anyway Thread sender = new Thread(new SendLateReply()); sender.start();