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">

Reply via email to