diff --git a/Plugins/CorvusEbMS/src/main/java/hk/hku/cecid/ebms/spa/client/jms/MessageListenerJMSClient.java b/Plugins/CorvusEbMS/src/main/java/hk/hku/cecid/ebms/spa/client/jms/MessageListenerJMSClient.java index 688df86..d1eec12 100755 --- a/Plugins/CorvusEbMS/src/main/java/hk/hku/cecid/ebms/spa/client/jms/MessageListenerJMSClient.java +++ b/Plugins/CorvusEbMS/src/main/java/hk/hku/cecid/ebms/spa/client/jms/MessageListenerJMSClient.java @@ -25,7 +25,6 @@ import javax.xml.soap.SOAPException; import javax.xml.soap.SOAPMessage; -import org.apache.activemq.ActiveMQConnectionFactory; public class MessageListenerJMSClient extends EbmsEventListener { @@ -49,10 +48,7 @@ public class MessageListenerJMSClient extends EbmsEventListener { @Override public void init() { - connectionFactory = new ActiveMQConnectionFactory(getConnectionUrl()); - ((ActiveMQConnectionFactory)connectionFactory).setUserName(getUsername()); - ((ActiveMQConnectionFactory)connectionFactory).setPassword(getPassword()); - + connectionFactory = buildConnectionFactory(); } @Override @@ -169,6 +165,26 @@ public String getQueueName() { return getParameters().getProperty("queueName"); } + protected ConnectionFactory buildConnectionFactory() { + try { + String connectionFactoryUrl = getConnectionUrl(); + Class connectionFactoryClass = getConnectionFactoryClass(); + ConnectionFactory cf = (ConnectionFactory)connectionFactoryClass.getConstructor(String.class).newInstance(new Object[]{connectionFactoryUrl}); + return cf; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + protected Class getConnectionFactoryClass() throws ClassNotFoundException { + return Class.forName(getConnectionFactoryClassName()); + } + + protected String getConnectionFactoryClassName() { + return getParameters().getProperty("connectionFactory"); + } + protected String getConnectionUrl() { return getParameters().getProperty("connectionUrl"); } diff --git a/Plugins/CorvusEbMS/src/test/java/hk/hku/cecid/ebms/spa/client/jms/MessageListenerJMSClientTest.java b/Plugins/CorvusEbMS/src/test/java/hk/hku/cecid/ebms/spa/client/jms/MessageListenerJMSClientTest.java index e2c7587..7017012 100644 --- a/Plugins/CorvusEbMS/src/test/java/hk/hku/cecid/ebms/spa/client/jms/MessageListenerJMSClientTest.java +++ b/Plugins/CorvusEbMS/src/test/java/hk/hku/cecid/ebms/spa/client/jms/MessageListenerJMSClientTest.java @@ -59,8 +59,8 @@ public static void tearDownClass() throws Exception { public void setUp() throws JMSException { instance = spy(new MessageListenerJMSClient()); - - + + doReturn("org.apache.activemq.ActiveMQConnectionFactory").when(instance).getConnectionFactoryClassName(); doReturn("vm://mdh?broker.persistent=false").when(instance).getConnectionUrl(); doReturn("testQueue").when(instance).getQueueName(); doReturn(null).when(instance).getUsername(); diff --git a/Plugins/CorvusJMS/src/main/java/org/jentrata/spa/jms/module/JMSComponent.java b/Plugins/CorvusJMS/src/main/java/org/jentrata/spa/jms/module/JMSComponent.java index e997953..613b3ef 100644 --- a/Plugins/CorvusJMS/src/main/java/org/jentrata/spa/jms/module/JMSComponent.java +++ b/Plugins/CorvusJMS/src/main/java/org/jentrata/spa/jms/module/JMSComponent.java @@ -11,7 +11,6 @@ import javax.jms.ConnectionFactory; -import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.camel.CamelContext; import org.apache.camel.ConsumerTemplate; import org.apache.camel.Exchange; @@ -59,17 +58,25 @@ public ConsumerTemplate getConsumer() { } protected ConnectionFactory buildConnectionFactory() { - String connectionFactoryUrl = getConnectionFactoryUrl(); - ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(connectionFactoryUrl); - cf.setUserName(getUsername()); - cf.setPassword(getPassword()); - return cf; + try { + String connectionFactoryUrl = getConnectionFactoryUrl(); + Class connectionFactoryClass = getConnectionFactoryClass(); + ConnectionFactory cf = (ConnectionFactory)connectionFactoryClass.getConstructor(String.class).newInstance(new Object[]{connectionFactoryUrl}); + return cf; + } catch (Exception e) { + e.printStackTrace(); + return null; + } } - + + protected Class getConnectionFactoryClass() throws ClassNotFoundException { + return Class.forName(getParameters().getProperty("connectionFactory")); + } + protected String getConnectionFactoryUrl() { return getParameters().getProperty("connectionFactoryUrl"); } - + protected String getErrorUri() { return getParameters().getProperty("errorUri",getId() + ":queue:DLQ"); } diff --git a/Plugins/CorvusJMS/src/main/resources/org.jentrata.jms/conf/org/jentrata/spa/jms/conf/jms.module.internal.xml b/Plugins/CorvusJMS/src/main/resources/org.jentrata.jms/conf/org/jentrata/spa/jms/conf/jms.module.internal.xml index 9aae07c..3f1565b 100755 --- a/Plugins/CorvusJMS/src/main/resources/org.jentrata.jms/conf/org/jentrata/spa/jms/conf/jms.module.internal.xml +++ b/Plugins/CorvusJMS/src/main/resources/org.jentrata.jms/conf/org/jentrata/spa/jms/conf/jms.module.internal.xml @@ -23,6 +23,7 @@ + diff --git a/Plugins/CorvusJMS/src/test/resources/modules/jms-test-module.xml b/Plugins/CorvusJMS/src/test/resources/modules/jms-test-module.xml index 4a50ec9..1102176 100644 --- a/Plugins/CorvusJMS/src/test/resources/modules/jms-test-module.xml +++ b/Plugins/CorvusJMS/src/test/resources/modules/jms-test-module.xml @@ -2,7 +2,8 @@ org.jentrata.spa.jms.module.JMSComponent - + + \ No newline at end of file