Author: davsclaus Date: Sat Aug 13 08:44:06 2011 New Revision: 1157348 URL: http://svn.apache.org/viewvc?rev=1157348&view=rev Log: CAMEL-4329: Fixed issue with custom connection factory and also username password in endpoint uri.
Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java 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=1157348&r1=1157347&r2=1157348&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 Sat Aug 13 08:44:06 2011 @@ -406,6 +406,12 @@ public class JmsComponent extends Defaul } } + // resolve any custom connection factory first + ConnectionFactory cf = resolveAndRemoveReferenceParameter(parameters, "connectionFactory", ConnectionFactory.class); + if (cf != null) { + endpoint.getConfiguration().setConnectionFactory(cf); + } + String selector = getAndRemoveParameter(parameters, "selector", String.class); if (selector != null) { endpoint.setSelector(selector); @@ -413,7 +419,7 @@ public class JmsComponent extends Defaul String username = getAndRemoveParameter(parameters, "username", String.class); String password = getAndRemoveParameter(parameters, "password", String.class); if (username != null && password != null) { - ConnectionFactory cf = endpoint.getConfiguration().getConnectionFactory(); + cf = endpoint.getConfiguration().getConnectionFactory(); UserCredentialsConnectionFactoryAdapter ucfa = new UserCredentialsConnectionFactoryAdapter(); ucfa.setTargetConnectionFactory(cf); ucfa.setPassword(password); Modified: camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java?rev=1157348&r1=1157347&r2=1157348&view=diff ============================================================================== --- camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java (original) +++ camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsEndpointConfigurationTest.java Sat Aug 13 08:44:06 2011 @@ -21,11 +21,13 @@ import javax.jms.DeliveryMode; import javax.jms.ExceptionListener; import javax.jms.JMSException; +import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.Producer; import org.apache.camel.ResolveEndpointFailedException; +import org.apache.camel.impl.JndiRegistry; import org.apache.camel.processor.CamelLogger; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; @@ -45,6 +47,8 @@ import static org.apache.camel.component */ public class JmsEndpointConfigurationTest extends CamelTestSupport { + private ConnectionFactory cf = new ActiveMQConnectionFactory("vm:myBroker"); + private Processor dummyProcessor = new Processor() { public void process(Exchange exchange) throws Exception { log.info("Received: " + exchange); @@ -73,6 +77,15 @@ public class JmsEndpointConfigurationTes } @Test + public void testSetConnectionFactoryAndUsernameAndPassword() throws Exception { + JmsEndpoint endpoint = (JmsEndpoint) resolveMandatoryEndpoint("jms:topic:Foo.Bar?connectionFactory=#myConnectionFactory&username=James&password=ABC"); + ConnectionFactory cf = endpoint.getConfiguration().getConnectionFactory(); + assertNotNull("The connectionFactory should not be null", cf); + assertTrue("The connectionFactory should be the instance of UserCredentialsConnectionFactoryAdapter", + cf instanceof UserCredentialsConnectionFactoryAdapter); + } + + @Test public void testNotSetUsernameOrPassword() { try { resolveMandatoryEndpoint("jms:topic:Foo.Bar?username=James"); @@ -469,4 +482,13 @@ public class JmsEndpointConfigurationTes return camelContext; } + + @Override + protected JndiRegistry createRegistry() throws Exception { + JndiRegistry jndi = super.createRegistry(); + jndi.bind("myConnectionFactory", cf); + return jndi; + } + + }