Repository: karaf Updated Branches: refs/heads/master fd135b633 -> f7ee506e8
[KARAF-3430] Add username and password in the generated ActiveMQ connection factory blueprint XML. Add itests about jms feature Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/f7ee506e Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/f7ee506e Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/f7ee506e Branch: refs/heads/master Commit: f7ee506e8f59f2d7cf72791570f00b0f7e538d02 Parents: fd135b6 Author: Jean-Baptiste Onofré <[email protected]> Authored: Fri Jan 2 14:00:17 2015 +0100 Committer: Jean-Baptiste Onofré <[email protected]> Committed: Fri Jan 2 14:00:17 2015 +0100 ---------------------------------------------------------------------- .../java/org/apache/karaf/itests/JaasTest.java | 2 - .../java/org/apache/karaf/itests/JmsTest.java | 52 ++++++++++++++++++++ .../java/org/apache/karaf/jms/JmsMBean.java | 12 +++++ .../java/org/apache/karaf/jms/JmsService.java | 12 +++++ .../apache/karaf/jms/command/CreateCommand.java | 8 ++- .../apache/karaf/jms/internal/JmsMBeanImpl.java | 9 ++++ .../karaf/jms/internal/JmsServiceImpl.java | 7 +++ .../jms/internal/connectionfactory-activemq.xml | 2 + 8 files changed, 101 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/f7ee506e/itests/src/test/java/org/apache/karaf/itests/JaasTest.java ---------------------------------------------------------------------- diff --git a/itests/src/test/java/org/apache/karaf/itests/JaasTest.java b/itests/src/test/java/org/apache/karaf/itests/JaasTest.java index a329899..eb8b656 100644 --- a/itests/src/test/java/org/apache/karaf/itests/JaasTest.java +++ b/itests/src/test/java/org/apache/karaf/itests/JaasTest.java @@ -13,7 +13,6 @@ */ package org.apache.karaf.itests; -import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -32,7 +31,6 @@ import org.junit.runner.RunWith; import org.ops4j.pax.exam.junit.PaxExam; import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy; import org.ops4j.pax.exam.spi.reactors.PerClass; -import org.ops4j.pax.exam.spi.reactors.PerMethod; import org.osgi.framework.BundleContext; http://git-wip-us.apache.org/repos/asf/karaf/blob/f7ee506e/itests/src/test/java/org/apache/karaf/itests/JmsTest.java ---------------------------------------------------------------------- diff --git a/itests/src/test/java/org/apache/karaf/itests/JmsTest.java b/itests/src/test/java/org/apache/karaf/itests/JmsTest.java new file mode 100644 index 0000000..54ad643 --- /dev/null +++ b/itests/src/test/java/org/apache/karaf/itests/JmsTest.java @@ -0,0 +1,52 @@ +/* + * Licensed 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.karaf.itests; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.ops4j.pax.exam.junit.PaxExam; +import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy; +import org.ops4j.pax.exam.spi.reactors.PerClass; + +import java.net.URI; + +@RunWith(PaxExam.class) +@ExamReactorStrategy(PerClass.class) +public class JmsTest extends KarafTestSupport { + + @Before + public void installJmsFeatureAndActiveMQBroker() throws Exception { + installAndAssertFeature("jms"); + featureService.addRepository(new URI("mvn:org.apache.activemq/activemq-karaf/5.10.0/xml/features")); + installAndAssertFeature("activemq-broker-noweb"); + } + + + @Test + public void createActiveMQConnectionFactoryTest() throws Exception { + System.out.println(executeCommand("jms:create -t ActiveMQ -u karaf -p karaf --url tcp://localhost:61616 test")); + // give time to fileinstall to load the blueprint file + Thread.sleep(5000); + String info = executeCommand("jms:info test"); + System.out.println(info); + assertContains("ActiveMQ", info); + assertContains("5.10.0", info); + System.out.println(executeCommand("jms:send test queue message")); + String consumed = executeCommand("jms:consume test queue"); + System.out.println(consumed); + assertContains("1 message", consumed); + } + +} http://git-wip-us.apache.org/repos/asf/karaf/blob/f7ee506e/jms/src/main/java/org/apache/karaf/jms/JmsMBean.java ---------------------------------------------------------------------- diff --git a/jms/src/main/java/org/apache/karaf/jms/JmsMBean.java b/jms/src/main/java/org/apache/karaf/jms/JmsMBean.java index 8540b86..0e7a012 100644 --- a/jms/src/main/java/org/apache/karaf/jms/JmsMBean.java +++ b/jms/src/main/java/org/apache/karaf/jms/JmsMBean.java @@ -45,6 +45,18 @@ public interface JmsMBean { void create(String name, String type, String url) throws MBeanException; /** + * Create a JMS connection factory. + * + * @param name the JMS connection factory name. + * @param type the JMS connection factory type (ActiveMQ or WebsphereMQ). + * @param url the JMS connection factory URL. NB: when type is WebsphereMQ, the URL has the format host/port/queuemanager/channel. + * @param username the JMS connection factory authentication username. + * @param password the JMS connection factory authentication password. + * @throws MBeanException + */ + void create(String name, String type, String url, String username, String password) throws MBeanException; + + /** * Delete a JMS connection factory. * * @param name the JMS connection factory name. http://git-wip-us.apache.org/repos/asf/karaf/blob/f7ee506e/jms/src/main/java/org/apache/karaf/jms/JmsService.java ---------------------------------------------------------------------- diff --git a/jms/src/main/java/org/apache/karaf/jms/JmsService.java b/jms/src/main/java/org/apache/karaf/jms/JmsService.java index 8aa970f..73d9521 100644 --- a/jms/src/main/java/org/apache/karaf/jms/JmsService.java +++ b/jms/src/main/java/org/apache/karaf/jms/JmsService.java @@ -51,6 +51,18 @@ public interface JmsService { void create(String name, String type, String url) throws Exception; /** + * Create a new JMS connection factory. + * + * @param name the JMS connection factory name. + * @param type the JMS connection factory type (ActiveMQ, WebsphereMQ, ...). + * @param url the JMS URL to use. + * @param username the username to use. + * @param password the password to use. + * @throws Exception + */ + void create(String name, String type, String url, String username, String password) throws Exception; + + /** * Delete a JMS connection factory. * * @param name the JMS connection factory name. http://git-wip-us.apache.org/repos/asf/karaf/blob/f7ee506e/jms/src/main/java/org/apache/karaf/jms/command/CreateCommand.java ---------------------------------------------------------------------- diff --git a/jms/src/main/java/org/apache/karaf/jms/command/CreateCommand.java b/jms/src/main/java/org/apache/karaf/jms/command/CreateCommand.java index c2c7eca..fb91416 100644 --- a/jms/src/main/java/org/apache/karaf/jms/command/CreateCommand.java +++ b/jms/src/main/java/org/apache/karaf/jms/command/CreateCommand.java @@ -37,9 +37,15 @@ public class CreateCommand extends JmsCommandSupport { @Option(name = "--url", description = "URL of the JMS broker. For WebsphereMQ type, the URL is hostname/port/queuemanager/channel", required = false, multiValued = false) String url = "tcp://localhost:61616"; + @Option(name = "-u", aliases = { "--username" }, description = "Username to connect to the JMS broker", required = false, multiValued = false) + String username = "karaf"; + + @Option(name = "-p", aliases = { "--password" }, description = "Password to connect to the JMS broker", required = false, multiValued = false) + String password = "karaf"; + @Override public Object execute() throws Exception { - getJmsService().create(name, type, url); + getJmsService().create(name, type, url, username, password); return null; } http://git-wip-us.apache.org/repos/asf/karaf/blob/f7ee506e/jms/src/main/java/org/apache/karaf/jms/internal/JmsMBeanImpl.java ---------------------------------------------------------------------- diff --git a/jms/src/main/java/org/apache/karaf/jms/internal/JmsMBeanImpl.java b/jms/src/main/java/org/apache/karaf/jms/internal/JmsMBeanImpl.java index cc46434..e3b7801 100644 --- a/jms/src/main/java/org/apache/karaf/jms/internal/JmsMBeanImpl.java +++ b/jms/src/main/java/org/apache/karaf/jms/internal/JmsMBeanImpl.java @@ -51,6 +51,15 @@ public class JmsMBeanImpl implements JmsMBean { } @Override + public void create(String name, String type, String url, String username, String password) throws MBeanException { + try { + jmsService.create(name, type, url, username, password); + } catch (Throwable t) { + throw new MBeanException(null, t.getMessage()); + } + } + + @Override public void delete(String name) throws MBeanException { try { jmsService.delete(name); http://git-wip-us.apache.org/repos/asf/karaf/blob/f7ee506e/jms/src/main/java/org/apache/karaf/jms/internal/JmsServiceImpl.java ---------------------------------------------------------------------- diff --git a/jms/src/main/java/org/apache/karaf/jms/internal/JmsServiceImpl.java b/jms/src/main/java/org/apache/karaf/jms/internal/JmsServiceImpl.java index 6aaf70e..b4f394a 100644 --- a/jms/src/main/java/org/apache/karaf/jms/internal/JmsServiceImpl.java +++ b/jms/src/main/java/org/apache/karaf/jms/internal/JmsServiceImpl.java @@ -49,6 +49,11 @@ public class JmsServiceImpl implements JmsService { @Override public void create(String name, String type, String url) throws Exception { + create(name, type, url, null, null); + } + + @Override + public void create(String name, String type, String url, String username, String password) throws Exception { if (!type.equalsIgnoreCase("activemq") && !type.equalsIgnoreCase("webspheremq")) { throw new IllegalArgumentException("JMS connection factory type not known"); } @@ -61,6 +66,8 @@ public class JmsServiceImpl implements JmsService { if (type.equalsIgnoreCase("activemq")) { // activemq properties.put("url", url); + properties.put("username", username); + properties.put("password", password); template = "connectionfactory-activemq.xml"; } else { // webspheremq http://git-wip-us.apache.org/repos/asf/karaf/blob/f7ee506e/jms/src/main/resources/org/apache/karaf/jms/internal/connectionfactory-activemq.xml ---------------------------------------------------------------------- diff --git a/jms/src/main/resources/org/apache/karaf/jms/internal/connectionfactory-activemq.xml b/jms/src/main/resources/org/apache/karaf/jms/internal/connectionfactory-activemq.xml index f0aabbd..5627e73 100644 --- a/jms/src/main/resources/org/apache/karaf/jms/internal/connectionfactory-activemq.xml +++ b/jms/src/main/resources/org/apache/karaf/jms/internal/connectionfactory-activemq.xml @@ -19,6 +19,8 @@ <bean id="activemqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="${url}" /> + <property name="userName" value="${username}" /> + <property name="password" value="${password}" /> </bean> <bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
