activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From clebertsuco...@apache.org
Subject [06/52] [abbrv] [partial] activemq-artemis git commit: ARTEMIS-127 Adding activemq unit test module to Artemis
Date Tue, 09 Jun 2015 16:36:37 GMT
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/60979268/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/ConfigTest.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/ConfigTest.java b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/ConfigTest.java
new file mode 100644
index 0000000..82b5ebe
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/ConfigTest.java
@@ -0,0 +1,457 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.activemq.config;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.File;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
+import java.util.List;
+
+import javax.jms.JMSException;
+import javax.jms.MessageConsumer;
+import javax.jms.Session;
+import javax.jms.Topic;
+import javax.sql.DataSource;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.broker.TransportConnector;
+import org.apache.activemq.broker.region.policy.FixedSizedSubscriptionRecoveryPolicy;
+import org.apache.activemq.broker.region.policy.LastImageSubscriptionRecoveryPolicy;
+import org.apache.activemq.broker.region.policy.NoSubscriptionRecoveryPolicy;
+import org.apache.activemq.broker.region.policy.RoundRobinDispatchPolicy;
+import org.apache.activemq.broker.region.policy.SimpleDispatchPolicy;
+import org.apache.activemq.broker.region.policy.StrictOrderDispatchPolicy;
+import org.apache.activemq.broker.region.policy.SubscriptionRecoveryPolicy;
+import org.apache.activemq.broker.region.policy.TimedSubscriptionRecoveryPolicy;
+import org.apache.activemq.command.ActiveMQTopic;
+import org.apache.activemq.network.NetworkConnector;
+import org.apache.activemq.store.PersistenceAdapter;
+import org.apache.activemq.store.jdbc.DefaultDatabaseLocker;
+import org.apache.activemq.store.jdbc.JDBCPersistenceAdapter;
+import org.apache.activemq.store.jdbc.adapter.TransactDatabaseLocker;
+import org.apache.activemq.store.journal.JournalPersistenceAdapter;
+import org.apache.activemq.store.memory.MemoryPersistenceAdapter;
+import org.apache.activemq.transport.tcp.TcpTransportServer;
+import org.apache.activemq.usage.SystemUsage;
+import org.apache.activemq.xbean.BrokerFactoryBean;
+import org.jmock.Expectations;
+import org.jmock.Mockery;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.core.io.Resource;
+
+public class ConfigTest {
+
+    protected static final String JOURNAL_ROOT = "target/test-data/";
+    protected static final String DERBY_ROOT = "target/test-data/";
+    protected static final String CONF_ROOT = "src/test/resources/org/apache/activemq/config/sample-conf/";
+    private static final Logger LOG = LoggerFactory.getLogger(ConfigTest.class);
+
+    static {
+        System.setProperty("javax.net.ssl.trustStore", "src/test/resources/client.keystore");
+        System.setProperty("javax.net.ssl.trustStorePassword", "password");
+        System.setProperty("javax.net.ssl.trustStoreType", "jks");
+        System.setProperty("javax.net.ssl.keyStore", "src/test/resources/server.keystore");
+        System.setProperty("javax.net.ssl.keyStorePassword", "password");
+        System.setProperty("javax.net.ssl.keyStoreType", "jks");
+    }
+
+    /*
+     * IMPORTANT NOTE: Assertions checking for the existence of the derby
+     * directory will fail if the first derby directory is not created under
+     * target/test-data/. The test in unable to change the derby root directory
+     * for succeeding creation. It uses the first created directory as the root.
+     */
+
+    /*
+     * This tests creating a journal persistence adapter using the persistence
+     * adapter factory bean
+     */
+    @Test
+    public void testJournaledJDBCConfig() throws Exception {
+
+        File journalFile = new File(JOURNAL_ROOT + "testJournaledJDBCConfig/journal");
+        recursiveDelete(journalFile);
+
+        File derbyFile = new File(DERBY_ROOT + "testJournaledJDBCConfig/derbydb"); // Default
+        recursiveDelete(derbyFile);
+
+        BrokerService broker;
+        broker = createBroker(new FileSystemResource(CONF_ROOT + "journaledjdbc-example.xml"));
+        try {
+            assertEquals("Broker Config Error (brokerName)", "brokerJournaledJDBCConfigTest", broker.getBrokerName());
+
+            PersistenceAdapter adapter = broker.getPersistenceAdapter();
+
+            assertTrue("Should have created a journal persistence adapter", adapter instanceof JournalPersistenceAdapter);
+            assertTrue("Should have created a derby directory at " + derbyFile.getAbsolutePath(), derbyFile.exists());
+            assertTrue("Should have created a journal directory at " + journalFile.getAbsolutePath(), journalFile.exists());
+
+            // Check persistence factory configurations
+            broker.getPersistenceAdapter();
+
+            assertTrue(broker.getSystemUsage().getStoreUsage().getStore() instanceof JournalPersistenceAdapter);
+
+            LOG.info("Success");
+        } finally {
+            if (broker != null) {
+                broker.stop();
+            }
+        }
+    }
+
+    @Test
+    public void testJdbcLockConfigOverride() throws Exception {
+
+        JDBCPersistenceAdapter adapter = new JDBCPersistenceAdapter();
+        Mockery context = new Mockery();
+        final DataSource dataSource = context.mock(DataSource.class);
+        final Connection connection = context.mock(Connection.class);
+        final DatabaseMetaData metadata = context.mock(DatabaseMetaData.class);
+        final ResultSet result = context.mock(ResultSet.class);
+        adapter.setDataSource(dataSource);
+        adapter.setCreateTablesOnStartup(false);
+
+        context.checking(new Expectations() {{
+            allowing(dataSource).getConnection();
+            will(returnValue(connection));
+            allowing(connection).getMetaData();
+            will(returnValue(metadata));
+            allowing(connection);
+            allowing(metadata).getDriverName();
+            will(returnValue("Microsoft_SQL_Server_2005_jdbc_driver"));
+            allowing(result).next();
+            will(returnValue(true));
+        }});
+
+        adapter.start();
+        assertTrue("has the locker override", adapter.getLocker() instanceof TransactDatabaseLocker);
+        adapter.stop();
+    }
+
+    public void testJdbcLockConfigDefault() throws Exception {
+
+        JDBCPersistenceAdapter adapter = new JDBCPersistenceAdapter();
+        Mockery context = new Mockery();
+        final DataSource dataSource = context.mock(DataSource.class);
+        final Connection connection = context.mock(Connection.class);
+        final DatabaseMetaData metadata = context.mock(DatabaseMetaData.class);
+        final ResultSet result = context.mock(ResultSet.class);
+        adapter.setDataSource(dataSource);
+        adapter.setCreateTablesOnStartup(false);
+
+        context.checking(new Expectations() {{
+            allowing(dataSource).getConnection();
+            will(returnValue(connection));
+            allowing(connection).getMetaData();
+            will(returnValue(metadata));
+            allowing(connection);
+            allowing(metadata).getDriverName();
+            will(returnValue("Some_Unknown_driver"));
+            allowing(result).next();
+            will(returnValue(true));
+        }});
+
+        adapter.start();
+        assertEquals("has the default locker", adapter.getLocker().getClass(), DefaultDatabaseLocker.class);
+        adapter.stop();
+    }
+
+    /*
+     * This tests configuring the different broker properties using
+     * xbeans-spring
+     */
+    @Test
+    public void testBrokerConfig() throws Exception {
+        ActiveMQTopic dest;
+        BrokerService broker;
+
+        File journalFile = new File(JOURNAL_ROOT);
+        recursiveDelete(journalFile);
+
+        // Create broker from resource
+        // System.out.print("Creating broker... ");
+        broker = createBroker("org/apache/activemq/config/example.xml");
+        LOG.info("Success");
+
+        try {
+            // Check broker configuration
+            // System.out.print("Checking broker configurations... ");
+            assertEquals("Broker Config Error (brokerName)", "brokerConfigTest", broker.getBrokerName());
+            assertEquals("Broker Config Error (populateJMSXUserID)", false, broker.isPopulateJMSXUserID());
+            assertEquals("Broker Config Error (useLoggingForShutdownErrors)", true, broker.isUseLoggingForShutdownErrors());
+            assertEquals("Broker Config Error (useJmx)", true, broker.isUseJmx());
+            assertEquals("Broker Config Error (persistent)", false, broker.isPersistent());
+            assertEquals("Broker Config Error (useShutdownHook)", false, broker.isUseShutdownHook());
+            assertEquals("Broker Config Error (deleteAllMessagesOnStartup)", true, broker.isDeleteAllMessagesOnStartup());
+            LOG.info("Success");
+
+            // Check specific vm transport
+            // System.out.print("Checking vm connector... ");
+            assertEquals("Should have a specific VM Connector", "vm://javacoola", broker.getVmConnectorURI().toString());
+            LOG.info("Success");
+
+            // Check transport connectors list
+            // System.out.print("Checking transport connectors... ");
+            List<TransportConnector> connectors = broker.getTransportConnectors();
+            assertTrue("Should have created at least 3 connectors", connectors.size() >= 3);
+            assertTrue("1st connector should be TcpTransportServer", connectors.get(0).getServer() instanceof TcpTransportServer);
+            assertTrue("2nd connector should be TcpTransportServer", connectors.get(1).getServer() instanceof TcpTransportServer);
+            assertTrue("3rd connector should be TcpTransportServer", connectors.get(2).getServer() instanceof TcpTransportServer);
+
+            // Check network connectors
+            // System.out.print("Checking network connectors... ");
+            List<NetworkConnector> networkConnectors = broker.getNetworkConnectors();
+            assertEquals("Should have a single network connector", 1, networkConnectors.size());
+            LOG.info("Success");
+
+            // Check dispatch policy configuration
+            // System.out.print("Checking dispatch policies... ");
+
+            dest = new ActiveMQTopic("Topic.SimpleDispatch");
+            assertTrue("Should have a simple dispatch policy for " + dest.getTopicName(),
+                    broker.getDestinationPolicy().getEntryFor(dest).getDispatchPolicy() instanceof SimpleDispatchPolicy);
+
+            dest = new ActiveMQTopic("Topic.RoundRobinDispatch");
+            assertTrue("Should have a round robin dispatch policy for " + dest.getTopicName(),
+                    broker.getDestinationPolicy().getEntryFor(dest).getDispatchPolicy() instanceof RoundRobinDispatchPolicy);
+
+            dest = new ActiveMQTopic("Topic.StrictOrderDispatch");
+            assertTrue("Should have a strict order dispatch policy for " + dest.getTopicName(),
+                    broker.getDestinationPolicy().getEntryFor(dest).getDispatchPolicy() instanceof StrictOrderDispatchPolicy);
+            LOG.info("Success");
+
+            // Check subscription policy configuration
+            // System.out.print("Checking subscription recovery policies... ");
+            SubscriptionRecoveryPolicy subsPolicy;
+
+            dest = new ActiveMQTopic("Topic.FixedSizedSubs");
+            subsPolicy = broker.getDestinationPolicy().getEntryFor(dest).getSubscriptionRecoveryPolicy();
+            assertTrue("Should have a fixed sized subscription recovery policy for " + dest.getTopicName(), subsPolicy instanceof FixedSizedSubscriptionRecoveryPolicy);
+            assertEquals("FixedSizedSubsPolicy Config Error (maximumSize)", 2000000, ((FixedSizedSubscriptionRecoveryPolicy) subsPolicy).getMaximumSize());
+            assertEquals("FixedSizedSubsPolicy Config Error (useSharedBuffer)", false, ((FixedSizedSubscriptionRecoveryPolicy) subsPolicy).isUseSharedBuffer());
+
+            dest = new ActiveMQTopic("Topic.LastImageSubs");
+            subsPolicy = broker.getDestinationPolicy().getEntryFor(dest).getSubscriptionRecoveryPolicy();
+            assertTrue("Should have a last image subscription recovery policy for " + dest.getTopicName(), subsPolicy instanceof LastImageSubscriptionRecoveryPolicy);
+
+            dest = new ActiveMQTopic("Topic.NoSubs");
+            subsPolicy = broker.getDestinationPolicy().getEntryFor(dest).getSubscriptionRecoveryPolicy();
+            assertTrue("Should have no subscription recovery policy for " + dest.getTopicName(), subsPolicy instanceof NoSubscriptionRecoveryPolicy);
+
+            dest = new ActiveMQTopic("Topic.TimedSubs");
+            subsPolicy = broker.getDestinationPolicy().getEntryFor(dest).getSubscriptionRecoveryPolicy();
+            assertTrue("Should have a timed subscription recovery policy for " + dest.getTopicName(), subsPolicy instanceof TimedSubscriptionRecoveryPolicy);
+            assertEquals("TimedSubsPolicy Config Error (recoverDuration)", 25000, ((TimedSubscriptionRecoveryPolicy) subsPolicy).getRecoverDuration());
+            LOG.info("Success");
+
+            // Check usage manager
+            // System.out.print("Checking memory manager configurations... ");
+            SystemUsage systemUsage = broker.getSystemUsage();
+            assertTrue("Should have a SystemUsage", systemUsage != null);
+            assertEquals("SystemUsage Config Error (MemoryUsage.limit)", 1024 * 1024 * 10, systemUsage.getMemoryUsage().getLimit());
+            assertEquals("SystemUsage Config Error (MemoryUsage.percentUsageMinDelta)", 20, systemUsage.getMemoryUsage().getPercentUsageMinDelta());
+            assertEquals("SystemUsage Config Error (TempUsage.limit)", 1024 * 1024 * 100, systemUsage.getTempUsage().getLimit());
+            assertEquals("SystemUsage Config Error (StoreUsage.limit)", 1024 * 1024 * 1024, systemUsage.getStoreUsage().getLimit());
+            assertEquals("SystemUsage Config Error (StoreUsage.name)", "foo", systemUsage.getStoreUsage().getName());
+
+            assertNotNull(systemUsage.getStoreUsage().getStore());
+            assertTrue(systemUsage.getStoreUsage().getStore() instanceof MemoryPersistenceAdapter);
+
+            LOG.info("Success");
+
+        } finally {
+            if (broker != null) {
+                broker.stop();
+            }
+        }
+    }
+
+    /*
+     * This tests creating a journal persistence adapter using xbeans-spring
+     */
+    @Test
+    public void testJournalConfig() throws Exception {
+        File journalFile = new File(JOURNAL_ROOT + "testJournalConfig/journal");
+        recursiveDelete(journalFile);
+
+        BrokerService broker;
+        broker = createBroker(new FileSystemResource(CONF_ROOT + "journal-example.xml"));
+        try {
+            assertEquals("Broker Config Error (brokerName)", "brokerJournalConfigTest", broker.getBrokerName());
+
+            PersistenceAdapter adapter = broker.getPersistenceAdapter();
+
+            assertTrue("Should have created a journal persistence adapter", adapter instanceof JournalPersistenceAdapter);
+            assertTrue("Should have created a journal directory at " + journalFile.getAbsolutePath(), journalFile.exists());
+
+            LOG.info("Success");
+        } finally {
+            if (broker != null) {
+                broker.stop();
+            }
+        }
+    }
+
+    /*
+     * This tests creating a memory persistence adapter using xbeans-spring
+     */
+    @Test
+    public void testMemoryConfig() throws Exception {
+        File journalFile = new File(JOURNAL_ROOT + "testMemoryConfig");
+        recursiveDelete(journalFile);
+
+        File derbyFile = new File(DERBY_ROOT + "testMemoryConfig");
+        recursiveDelete(derbyFile);
+
+        BrokerService broker;
+        broker = createBroker(new FileSystemResource(CONF_ROOT + "memory-example.xml"));
+
+        try {
+            assertEquals("Broker Config Error (brokerName)", "brokerMemoryConfigTest", broker.getBrokerName());
+
+            PersistenceAdapter adapter = broker.getPersistenceAdapter();
+
+            assertTrue("Should have created a memory persistence adapter", adapter instanceof MemoryPersistenceAdapter);
+            assertTrue("Should have not created a derby directory at " + derbyFile.getAbsolutePath(), !derbyFile.exists());
+            assertTrue("Should have not created a journal directory at " + journalFile.getAbsolutePath(), !journalFile.exists());
+
+            LOG.info("Success");
+        } finally {
+            if (broker != null) {
+                broker.stop();
+            }
+        }
+    }
+
+    @Test
+    public void testConnectorConfig() throws Exception {
+
+        File journalFile = new File(JOURNAL_ROOT + "testMemoryConfig");
+        recursiveDelete(journalFile);
+
+        File derbyFile = new File(DERBY_ROOT + "testMemoryConfig");
+        recursiveDelete(derbyFile);
+
+        final int MAX_PRODUCERS = 5;
+        final int MAX_CONSUMERS = 10;
+
+        BrokerService broker = createBroker(new FileSystemResource(CONF_ROOT + "connector-properties.xml"));
+        broker.start();
+        try {
+
+            assertEquals(broker.getTransportConnectorByScheme("tcp").getMaximumProducersAllowedPerConnection(), MAX_PRODUCERS);
+            assertEquals(broker.getTransportConnectorByScheme("tcp").getMaximumConsumersAllowedPerConnection(), MAX_CONSUMERS);
+
+            ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61631");
+            javax.jms.Connection connection = activeMQConnectionFactory.createConnection();
+            connection.start();
+            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            Topic topic = session.createTopic("test.foo");
+
+            for (int i = 0; i < MAX_PRODUCERS; i++) {
+                session.createProducer(topic);
+            }
+
+            try {
+                session.createProducer(topic);
+                fail("Should have got an exception on exceeding MAX_PRODUCERS");
+            } catch (JMSException expected) {
+            }
+
+            try {
+                for (int i = 0; i < (MAX_CONSUMERS + 1); i++) {
+                    MessageConsumer consumer = session.createConsumer(topic);
+                    assertNotNull(consumer);
+                }
+                fail("Should have caught an exception");
+            } catch (JMSException e) {
+            }
+
+            LOG.info("Success");
+        } finally {
+            if (broker != null) {
+                broker.stop();
+            }
+        }
+    }
+
+    @Test
+    public void testXmlConfigHelper() throws Exception {
+        BrokerService broker;
+
+        broker = createBroker(new FileSystemResource(CONF_ROOT + "memory-example.xml"));
+        try {
+            assertEquals("Broker Config Error (brokerName)", "brokerMemoryConfigTest", broker.getBrokerName());
+        } finally {
+            if (broker != null) {
+                broker.stop();
+            }
+        }
+
+        broker = createBroker("org/apache/activemq/config/config.xml");
+        try {
+            assertEquals("Broker Config Error (brokerName)", "brokerXmlConfigHelper", broker.getBrokerName());
+        } finally {
+            if (broker != null) {
+                broker.stop();
+            }
+        }
+    }
+
+    /*
+     * TODO: Create additional tests for forwarding bridges
+     */
+
+    protected static void recursiveDelete(File file) {
+        if (file.isDirectory()) {
+            File[] files = file.listFiles();
+            for (int i = 0; i < files.length; i++) {
+                recursiveDelete(files[i]);
+            }
+        }
+        file.delete();
+    }
+
+    protected BrokerService createBroker(String resource) throws Exception {
+        return createBroker(new ClassPathResource(resource));
+    }
+
+    protected BrokerService createBroker(Resource resource) throws Exception {
+        BrokerFactoryBean factory = new BrokerFactoryBean(resource);
+        factory.afterPropertiesSet();
+
+        BrokerService broker = factory.getBroker();
+
+        assertTrue("Should have a broker!", broker != null);
+
+        // Broker is already started by default when using the XML file
+        // broker.start();
+
+        return broker;
+    }
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/60979268/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/ConfigUsingDestinationOptions.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/ConfigUsingDestinationOptions.java b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/ConfigUsingDestinationOptions.java
new file mode 100644
index 0000000..704e408
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/ConfigUsingDestinationOptions.java
@@ -0,0 +1,72 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.activemq.config;
+
+import javax.jms.Connection;
+import javax.jms.InvalidSelectorException;
+import javax.jms.JMSException;
+import javax.jms.Session;
+
+import junit.framework.TestCase;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.ActiveMQMessageConsumer;
+import org.apache.activemq.command.ActiveMQQueue;
+
+public class ConfigUsingDestinationOptions extends TestCase {
+    public void testValidSelectorConfig() throws JMSException {
+        ActiveMQQueue queue = new ActiveMQQueue("TEST.FOO?consumer.selector=test=1");
+
+        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
+        Connection conn = factory.createConnection();
+        Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+        ActiveMQMessageConsumer cons;
+        // JMS selector should be priority
+        cons = (ActiveMQMessageConsumer) sess.createConsumer(queue, "test=2");
+        assertEquals("test=2", cons.getMessageSelector());
+
+        // Test setting using JMS destinations
+        cons = (ActiveMQMessageConsumer) sess.createConsumer(queue);
+        assertEquals("test=1", cons.getMessageSelector());
+    }
+
+    public void testInvalidSelectorConfig() throws JMSException {
+        ActiveMQQueue queue = new ActiveMQQueue("TEST.FOO?consumer.selector=test||1");
+
+        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
+        Connection conn = factory.createConnection();
+        Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+        ActiveMQMessageConsumer cons;
+        // JMS selector should be priority
+        try {
+            cons = (ActiveMQMessageConsumer) sess.createConsumer(queue, "test||1");
+            fail("Selector should be invalid" + cons);
+        } catch (InvalidSelectorException e) {
+
+        }
+
+        // Test setting using JMS destinations
+        try {
+            cons = (ActiveMQMessageConsumer) sess.createConsumer(queue);
+            fail("Selector should be invalid" + cons);
+        } catch (InvalidSelectorException e) {
+
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/60979268/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/JDBCConfigTest.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/JDBCConfigTest.java b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/JDBCConfigTest.java
new file mode 100644
index 0000000..e13f53d
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/JDBCConfigTest.java
@@ -0,0 +1,102 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.activemq.config;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.store.PersistenceAdapter;
+import org.apache.activemq.store.jdbc.JDBCPersistenceAdapter;
+import org.apache.activemq.wireformat.ObjectStreamWireFormat;
+import org.apache.activemq.xbean.BrokerFactoryBean;
+import org.apache.derby.jdbc.EmbeddedDataSource;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.core.io.Resource;
+
+public class JDBCConfigTest {
+
+    protected static final String JOURNAL_ROOT = "target/test-data/";
+    protected static final String DERBY_ROOT = "target/test-data/";
+    protected static final String CONF_ROOT = "src/test/resources/org/apache/activemq/config/sample-conf/";
+    private static final Logger LOG = LoggerFactory.getLogger(JDBCConfigTest.class);
+
+    /*
+     * This tests creating a jdbc persistence adapter using xbeans-spring
+     */
+    @Test
+    public void testJdbcConfig() throws Exception {
+        File journalFile = new File(JOURNAL_ROOT + "testJDBCConfig/journal");
+        recursiveDelete(journalFile);
+
+        File derbyFile = new File(DERBY_ROOT + "testJDBCConfig/derbydb"); // Default
+        recursiveDelete(derbyFile);
+
+        BrokerService broker;
+        broker = createBroker(new FileSystemResource(CONF_ROOT + "jdbc-example.xml"));
+        try {
+            assertEquals("Broker Config Error (brokerName)", "brokerJdbcConfigTest", broker.getBrokerName());
+
+            PersistenceAdapter adapter = broker.getPersistenceAdapter();
+
+            assertTrue("Should have created a jdbc persistence adapter", adapter instanceof JDBCPersistenceAdapter);
+            assertEquals("JDBC Adapter Config Error (cleanupPeriod)", 60000, ((JDBCPersistenceAdapter) adapter).getCleanupPeriod());
+            assertTrue("Should have created an EmbeddedDataSource", ((JDBCPersistenceAdapter) adapter).getDataSource() instanceof EmbeddedDataSource);
+            assertTrue("Should have created a DefaultWireFormat", ((JDBCPersistenceAdapter) adapter).getWireFormat() instanceof ObjectStreamWireFormat);
+
+            LOG.info("Success");
+        } finally {
+            if (broker != null) {
+                broker.stop();
+            }
+        }
+    }
+
+    protected static void recursiveDelete(File file) {
+        if (file.isDirectory()) {
+            File[] files = file.listFiles();
+            for (int i = 0; i < files.length; i++) {
+                recursiveDelete(files[i]);
+            }
+        }
+        file.delete();
+    }
+
+    protected BrokerService createBroker(String resource) throws Exception {
+        return createBroker(new ClassPathResource(resource));
+    }
+
+    protected BrokerService createBroker(Resource resource) throws Exception {
+        BrokerFactoryBean factory = new BrokerFactoryBean(resource);
+        factory.afterPropertiesSet();
+
+        BrokerService broker = factory.getBroker();
+
+        assertTrue("Should have a broker!", broker != null);
+
+        // Broker is already started by default when using the XML file
+        // broker.start();
+
+        return broker;
+    }
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/60979268/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/broker.properties
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/broker.properties b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/broker.properties
new file mode 100644
index 0000000..921671f
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/broker.properties
@@ -0,0 +1,21 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You 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.
+## ---------------------------------------------------------------------------
+# START SNIPPET: example
+useJmx = false
+persistent = false
+brokerName = Cheese
+# END SNIPPET: example
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/60979268/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/config.xml
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/config.xml b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/config.xml
new file mode 100644
index 0000000..9ec13ff
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/config.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+-->
+<beans
+  xmlns="http://www.springframework.org/schema/beans"
+  xmlns:amq="http://activemq.apache.org/schema/core"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
+
+  <broker brokerName="brokerXmlConfigHelper" persistent="false" useShutdownHook="false" deleteAllMessagesOnStartup="true" xmlns="http://activemq.apache.org/schema/core">
+    <transportConnectors>
+      <transportConnector uri="tcp://localhost:61638"/>
+    </transportConnectors>
+  </broker>
+
+</beans>

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/60979268/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/example.xml
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/example.xml b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/example.xml
new file mode 100644
index 0000000..0a7a686
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/example.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+-->
+<beans
+  xmlns="http://www.springframework.org/schema/beans"
+  xmlns:amq="http://activemq.apache.org/schema/core"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
+  
+    <!-- normal ActiveMQ XML config which is less verbose & can be validated -->
+    <amq:broker brokerName="brokerConfigTest" populateJMSXUserID="false"
+        useLoggingForShutdownErrors="true" useJmx="true"
+        persistent="false" vmConnectorURI="vm://javacoola"
+        useShutdownHook="false" deleteAllMessagesOnStartup="true">
+
+        <!--
+        || NOTE this config file is used for unit testing the configuration mechanism
+        || it is not necessarily a good example of a config file! :)
+        -->
+        <amq:destinationPolicy>
+            <amq:policyMap>
+                <amq:policyEntries>
+
+                    <amq:policyEntry topic="Topic.SimpleDispatch">
+                        <amq:dispatchPolicy><amq:simpleDispatchPolicy /></amq:dispatchPolicy>
+                    </amq:policyEntry>
+
+                    <amq:policyEntry topic="Topic.RoundRobinDispatch">
+                        <amq:dispatchPolicy><amq:roundRobinDispatchPolicy /></amq:dispatchPolicy>
+                    </amq:policyEntry>
+
+                    <amq:policyEntry topic="Topic.StrictOrderDispatch">
+                        <amq:dispatchPolicy><amq:strictOrderDispatchPolicy /></amq:dispatchPolicy>
+                    </amq:policyEntry>
+
+                    <amq:policyEntry topic="Topic.FixedSizedSubs">
+                        <amq:subscriptionRecoveryPolicy>
+                            <amq:fixedSizedSubscriptionRecoveryPolicy maximumSize="2000000" useSharedBuffer="false"/>
+                        </amq:subscriptionRecoveryPolicy>
+                    </amq:policyEntry>
+
+                    <amq:policyEntry topic="Topic.LastImageSubs">
+                        <amq:subscriptionRecoveryPolicy><amq:lastImageSubscriptionRecoveryPolicy/></amq:subscriptionRecoveryPolicy>
+                    </amq:policyEntry>
+
+                    <amq:policyEntry topic="Topic.NoSubs">
+                        <amq:subscriptionRecoveryPolicy><amq:noSubscriptionRecoveryPolicy/></amq:subscriptionRecoveryPolicy>
+                    </amq:policyEntry>
+
+                    <amq:policyEntry topic="Topic.TimedSubs">
+                        <amq:subscriptionRecoveryPolicy><amq:timedSubscriptionRecoveryPolicy recoverDuration="25000"/></amq:subscriptionRecoveryPolicy>
+                    </amq:policyEntry>
+
+                </amq:policyEntries>
+            </amq:policyMap>
+        </amq:destinationPolicy>
+
+        <amq:networkConnectors>
+            <amq:networkConnector uri="static://(tcp://localhost:61616)"/>
+        </amq:networkConnectors>
+
+        <amq:persistenceAdapter>
+            <amq:memoryPersistenceAdapter createTransactionStore="true"/>
+        </amq:persistenceAdapter>
+
+        <amq:systemUsage>
+            <amq:systemUsage>
+	            <amq:memoryUsage>
+    	            <amq:memoryUsage limit="10 mb" percentUsageMinDelta="20"/>
+	            </amq:memoryUsage>
+	            <amq:storeUsage>
+    	            <amq:storeUsage limit="1 gb" name="foo"/>
+	            </amq:storeUsage>
+	            <amq:tempUsage>
+    	            <amq:tempUsage limit="100 mb"/>
+	            </amq:tempUsage>
+            </amq:systemUsage>
+        </amq:systemUsage>
+
+        <amq:transportConnectors>
+            <amq:transportConnector uri="tcp://localhost:61635"/>
+            <amq:transportConnector uri="tcp://localhost:61636"/>
+            <amq:transportConnector uri="tcp://localhost:61637"/>
+        </amq:transportConnectors>
+
+
+    </amq:broker>
+
+</beans>

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/60979268/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/connector-properties.xml
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/connector-properties.xml b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/connector-properties.xml
new file mode 100644
index 0000000..23f065d
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/connector-properties.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+-->
+
+<beans 
+  xmlns="http://www.springframework.org/schema/beans" 
+  xmlns:amq="http://activemq.apache.org/schema/core"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
+
+    <amq:broker brokerName="brokerConnectorTest" persistent="false" useShutdownHook="false" deleteAllMessagesOnStartup="true">
+
+        <amq:persistenceAdapter>
+            <amq:memoryPersistenceAdapter createTransactionStore = "false"/>
+        </amq:persistenceAdapter>
+
+        <amq:transportConnectors>
+                <amq:transportConnector uri="tcp://localhost:61631" maximumProducersAllowedPerConnection="5"  maximumConsumersAllowedPerConnection="10"/>
+        </amq:transportConnectors>
+
+    </amq:broker>
+</beans>

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/60979268/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/jdbc-example.xml
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/jdbc-example.xml b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/jdbc-example.xml
new file mode 100644
index 0000000..bbd98ea
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/jdbc-example.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+-->
+<beans
+  xmlns="http://www.springframework.org/schema/beans"
+  xmlns:amq="http://activemq.apache.org/schema/core"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
+
+    <amq:broker brokerName="brokerJdbcConfigTest" persistent="true" useShutdownHook="false" deleteAllMessagesOnStartup="true">
+
+        <amq:persistenceAdapter>
+            <amq:jdbcPersistenceAdapter>
+                <property name="cleanupPeriod" value="60000"/>
+                <property name="dataSource" ref="embedded-ds"/>
+                <property name="wireFormat">
+                    <bean id="myWireFormat" class="org.apache.activemq.wireformat.ObjectStreamWireFormat"/>
+                </property>
+            </amq:jdbcPersistenceAdapter>
+        </amq:persistenceAdapter>
+
+        <amq:transportConnectors>
+            <amq:transportConnector uri="tcp://localhost:61635"/>
+        </amq:transportConnectors>
+
+    </amq:broker>
+
+    <!-- ==================================================================== -->
+    <!-- JDBC DataSource Configurations -->
+    <!-- ==================================================================== -->
+
+    <!-- The Datasource that will be used by the Broker -->
+    <bean id="embedded-ds" class="org.apache.derby.jdbc.EmbeddedDataSource">
+        <property name="databaseName" value="testJdbcConfig"/>
+        <property name="createDatabase" value="create"/>
+    </bean>
+</beans>

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/60979268/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/journal-example.xml
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/journal-example.xml b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/journal-example.xml
new file mode 100644
index 0000000..2a79308
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/journal-example.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+-->
+<beans 
+  xmlns="http://www.springframework.org/schema/beans" 
+  xmlns:amq="http://activemq.apache.org/schema/core"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
+
+    <amq:broker brokerName="brokerJournalConfigTest" persistent="true" useShutdownHook="false" deleteAllMessagesOnStartup="true">
+
+        <amq:persistenceAdapter>
+            <amq:journalPersistenceAdapter>
+                <amq:journal>
+                    <ref bean="myJournalImpl"/>
+                </amq:journal>
+
+                <amq:persistenceAdapter>
+                    <amq:memoryPersistenceAdapter createTransactionStore="true"/>
+                </amq:persistenceAdapter>
+
+                <amq:taskRunnerFactory>
+                    <bean id="myTaskRunnerFactory" class="org.apache.activemq.thread.TaskRunnerFactory"/>
+                </amq:taskRunnerFactory>
+            </amq:journalPersistenceAdapter>
+        </amq:persistenceAdapter>
+
+        <amq:transportConnectors>
+            <amq:transportConnector uri="tcp://localhost:61635"/>
+        </amq:transportConnectors>
+
+    </amq:broker>
+
+    <!-- The journal implementation that will be used -->
+    <bean id="myJournalImpl" class="org.apache.activeio.journal.active.JournalImpl">
+        <constructor-arg index="0">
+            <bean id="myFile" class="java.io.File">
+                <constructor-arg index="0">
+                    <value>target/test-data/testJournalConfig/journal</value>
+                </constructor-arg>
+            </bean>
+        </constructor-arg>
+    </bean>
+
+</beans>

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/60979268/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/journaledjdbc-example.xml
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/journaledjdbc-example.xml b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/journaledjdbc-example.xml
new file mode 100644
index 0000000..4a6a0db
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/journaledjdbc-example.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+-->
+
+<beans
+  xmlns="http://www.springframework.org/schema/beans"
+  xmlns:amq="http://activemq.apache.org/schema/core"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
+
+    <amq:broker brokerName="brokerJournaledJDBCConfigTest" persistent="true" useShutdownHook="false" deleteAllMessagesOnStartup="true">
+	
+	    <amq:persistenceFactory>
+           <amq:journalPersistenceAdapterFactory journalLogFiles="4" journalLogFileSize="32768" dataDirectory="target/test-data/testJournaledJDBCConfig" />
+        </amq:persistenceFactory>
+        <amq:transportConnectors>
+            <amq:transportConnector uri="tcp://localhost:61635"/>
+        </amq:transportConnectors>
+
+    </amq:broker>
+</beans>

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/60979268/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/memory-example.xml
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/memory-example.xml b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/memory-example.xml
new file mode 100644
index 0000000..10b38a8
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/sample-conf/memory-example.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+-->
+
+<beans 
+  xmlns="http://www.springframework.org/schema/beans" 
+  xmlns:amq="http://activemq.apache.org/schema/core"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
+
+    <amq:broker brokerName="brokerMemoryConfigTest" persistent="false" useShutdownHook="false" deleteAllMessagesOnStartup="true">
+
+        <amq:persistenceAdapter>
+            <amq:memoryPersistenceAdapter createTransactionStore = "true"/>
+        </amq:persistenceAdapter>
+
+        <amq:transportConnectors>
+            <amq:transportConnector uri="tcp://localhost:61635"/>
+        </amq:transportConnectors>
+
+    </amq:broker>
+</beans>

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/60979268/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/spring-test.xml
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/spring-test.xml b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/spring-test.xml
new file mode 100644
index 0000000..0e2f145
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/config/spring-test.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+-->
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+
+<beans>
+  <bean id="wireFormat" class="org.apache.activemq.io.impl.DefaultWireFormat"/>
+
+  <bean id="transport" factory-method="newInstance" class="org.apache.activemq.transport.TransportServerChannelProvider">
+    <constructor-arg index="0">
+      <bean class="org.apache.activemq.io.impl.DefaultWireFormat"/>
+      <!---
+      <ref bean="wireFormat"/>
+    -->
+    </constructor-arg>
+    <constructor-arg index="1">
+      <value>vm://localhost</value>
+    </constructor-arg>
+  </bean>
+
+</beans>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/60979268/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/AMQ3410Test.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/AMQ3410Test.java b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/AMQ3410Test.java
new file mode 100644
index 0000000..dadff34
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/AMQ3410Test.java
@@ -0,0 +1,186 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.activemq.console.command;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.console.CommandContext;
+import org.apache.activemq.console.formatter.CommandShellOutputFormatter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.support.AbstractApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class AMQ3410Test extends TestCase {
+	@SuppressWarnings("unused")
+	private static final Logger LOG = LoggerFactory
+			.getLogger(PurgeCommandTest.class);
+	private static final Collection<String> DEFAULT_OPTIONS = Arrays
+			.asList(new String[] { "--amqurl", "tcp://localhost:61616", });
+
+	private static final Collection<String> DEFAULT_TOKENS = Arrays
+			.asList(new String[] { "FOO.QUEUE" });
+
+	protected AbstractApplicationContext context;
+
+	protected void setUp() throws Exception {
+		super.setUp();
+
+		context = createApplicationContext();
+
+	}
+
+	protected AbstractApplicationContext createApplicationContext() {
+		return new ClassPathXmlApplicationContext("org/apache/activemq/console/command/activemq.xml");
+	}
+
+	protected void tearDown() throws Exception {
+		BrokerService broker = (BrokerService) context.getBean("localbroker");
+		broker.stop();
+		broker = (BrokerService) context.getBean("default");
+		broker.stop();
+		super.tearDown();
+	}
+
+	public void testNoFactorySet() throws Exception {
+		AmqBrowseCommand command = new AmqBrowseCommand();
+		CommandContext context = new CommandContext();
+
+		context.setFormatter(new CommandShellOutputFormatter(System.out));
+
+		command.setCommandContext(context);
+
+		List<String> tokens = new ArrayList<String>();
+		tokens.addAll(DEFAULT_OPTIONS);
+		tokens.addAll(DEFAULT_TOKENS);
+
+		command.execute(tokens);
+		assertNotNull(command.getConnectionFactory());
+		assertTrue(command.getConnectionFactory() instanceof ActiveMQConnectionFactory);
+	}
+
+	public void testFactorySet() throws Exception {
+		AmqBrowseCommand command = new AmqBrowseCommand();
+		CommandContext context = new CommandContext();
+
+		context.setFormatter(new CommandShellOutputFormatter(System.out));
+
+		command.setCommandContext(context);
+
+		List<String> tokens = new ArrayList<String>();
+		tokens.addAll(DEFAULT_OPTIONS);
+		tokens.add("--factory");
+		tokens.add(DummyConnectionFactory.class.getCanonicalName());
+		tokens.addAll(DEFAULT_TOKENS);
+
+		command.execute(tokens);
+
+		assertNotNull(command.getConnectionFactory());
+		assertTrue("wrong instance returned: "
+				+ command.getConnectionFactory().getClass().getName(), command
+				.getConnectionFactory() instanceof DummyConnectionFactory);
+	}
+
+	public void testFactorySetWrong1() throws Exception {
+		AmqBrowseCommand command = new AmqBrowseCommand();
+		CommandContext context = new CommandContext();
+
+		context.setFormatter(new CommandShellOutputFormatter(System.out));
+
+		command.setCommandContext(context);
+
+		List<String> tokens = new ArrayList<String>();
+		tokens.addAll(DEFAULT_OPTIONS);
+		tokens.add("--factory");
+		tokens
+				.add("org.apache.activemq.console.command.TestAMQ3410.DoesntExistFactory");
+		tokens.addAll(DEFAULT_TOKENS);
+
+		try {
+		command.execute(tokens);
+		} catch (Throwable cause) {
+			while (null != cause) {
+				if (cause instanceof java.lang.ClassNotFoundException)
+					return;
+				cause = cause.getCause();
+	}
+		}
+		assertFalse("No exception caught", true);
+	}
+
+	public void testFactorySetWrong2() throws Exception {
+		AmqBrowseCommand command = new AmqBrowseCommand();
+		CommandContext context = new CommandContext();
+
+		context.setFormatter(new CommandShellOutputFormatter(System.out));
+
+		command.setCommandContext(context);
+
+		List<String> tokens = new ArrayList<String>();
+		tokens.addAll(DEFAULT_OPTIONS);
+		tokens.add("--factory");
+		tokens.add(InvalidConnectionFactory.class.getCanonicalName());
+		tokens.addAll(DEFAULT_TOKENS);
+
+		try {
+			command.execute(tokens);
+		} catch (Throwable e) {
+			Throwable cause = e;
+			while (null != cause) {
+				if (cause instanceof java.lang.NoSuchMethodException)
+					return;
+				cause = cause.getCause();
+			}
+			assertFalse(e.toString(), true);
+		}
+		assertFalse("No exception caught", true);
+	}
+
+	public void testFactorySetWrong3() throws Exception {
+		AmqBrowseCommand command = new AmqBrowseCommand();
+		CommandContext context = new CommandContext();
+
+		context.setFormatter(new CommandShellOutputFormatter(System.out));
+
+		command.setCommandContext(context);
+
+		List<String> tokens = new ArrayList<String>();
+		tokens.addAll(DEFAULT_OPTIONS);
+		tokens.add("--factory");
+		tokens.add("java.lang.Object");
+		tokens.addAll(DEFAULT_TOKENS);
+
+		try {
+		command.execute(tokens);
+		} catch (Throwable cause) {
+			while (null != cause) {
+				if (cause instanceof java.lang.NoSuchMethodException)
+					return;
+				cause = cause.getCause();
+	}
+		}
+		assertFalse(true);
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/60979268/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/AMQ3411Test.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/AMQ3411Test.java b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/AMQ3411Test.java
new file mode 100644
index 0000000..8930b2c
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/AMQ3411Test.java
@@ -0,0 +1,197 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.activemq.console.command;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.console.CommandContext;
+import org.apache.activemq.console.formatter.CommandShellOutputFormatter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.support.AbstractApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class AMQ3411Test extends TestCase {
+	@SuppressWarnings("unused")
+	private static final Logger LOG = LoggerFactory
+			.getLogger(AMQ3411Test.class);
+	private static final Collection<String> DEFAULT_OPTIONS = Arrays
+			.asList(new String[] { "--amqurl", "tcp://localhost:61616", });
+
+	private static final Collection<String> DEFAULT_TOKENS = Arrays
+			.asList(new String[] { "FOO.QUEUE" });
+	protected AbstractApplicationContext context;
+	protected static final String origPassword = "ABCDEFG";
+
+	protected void setUp() throws Exception {
+		super.setUp();
+
+		context = createApplicationContext();
+
+	}
+
+	protected AbstractApplicationContext createApplicationContext() {
+		return new ClassPathXmlApplicationContext("org/apache/activemq/console/command/activemq.xml");
+	}
+
+	protected void tearDown() throws Exception {
+		BrokerService broker = (BrokerService) context.getBean("localbroker");
+		broker.stop();
+		broker = (BrokerService) context.getBean("default");
+		broker.stop();
+		super.tearDown();
+	}
+
+	public void testNoFactorySet() throws Exception {
+		AmqBrowseCommand command = new AmqBrowseCommand();
+		CommandContext context = new CommandContext();
+
+		context.setFormatter(new CommandShellOutputFormatter(System.out));
+
+		command.setCommandContext(context);
+
+		List<String> tokens = new ArrayList<String>();
+		tokens.addAll(DEFAULT_OPTIONS);
+		tokens.addAll(DEFAULT_TOKENS);
+
+		command.execute(tokens);
+
+		assertNotNull(command.getPasswordFactory());
+		assertTrue(command.getPasswordFactory() instanceof DefaultPasswordFactory);
+		assertNull(command.getPassword());
+	}
+
+	public void testUsernamePasswordSet() throws Exception {
+		AmqBrowseCommand command = new AmqBrowseCommand();
+		CommandContext context = new CommandContext();
+
+		String username = "user";
+		String password = "password";
+
+		context.setFormatter(new CommandShellOutputFormatter(System.out));
+
+		command.setCommandContext(context);
+
+		List<String> tokens = new ArrayList<String>();
+		tokens.addAll(DEFAULT_OPTIONS);
+		tokens.add("--password");
+		tokens.add(password);
+
+		tokens.add("--user");
+		tokens.add(username);
+		tokens.addAll(DEFAULT_TOKENS);
+
+		command.execute(tokens);
+
+		assertNotNull(command.getPasswordFactory());
+		assertTrue(command.getPasswordFactory() instanceof DefaultPasswordFactory);
+		assertEquals(password, command.getPassword());
+		assertEquals(username, command.getUsername());
+	}
+
+	public void testFactorySet() throws Exception {
+		AmqBrowseCommand command = new AmqBrowseCommand();
+		CommandContext context = new CommandContext();
+
+		context.setFormatter(new CommandShellOutputFormatter(System.out));
+
+		command.setCommandContext(context);
+
+		List<String> tokens = new ArrayList<String>();
+		tokens.addAll(DEFAULT_OPTIONS);
+		tokens.add("--passwordFactory");
+		tokens.add(LowercasingPasswordFactory.class.getCanonicalName());
+		tokens.add("--password");
+		tokens.add(origPassword);
+		tokens.addAll(DEFAULT_TOKENS);
+
+		command.execute(tokens);
+		assertNotNull(command.getPasswordFactory());
+		assertTrue(command.getPasswordFactory() instanceof LowercasingPasswordFactory);
+
+		// validate that the factory is indeed being used for the password.
+		assertEquals(origPassword.toLowerCase(), command.getPassword());
+	}
+
+	public void testFactorySetWrong1() throws Exception {
+		AmqBrowseCommand command = new AmqBrowseCommand();
+		CommandContext context = new CommandContext();
+
+		context.setFormatter(new CommandShellOutputFormatter(System.out));
+
+		command.setCommandContext(context);
+
+		List<String> tokens = new ArrayList<String>();
+		tokens.addAll(DEFAULT_OPTIONS);
+		tokens.add("--passwordFactory");
+		tokens
+				.add("org.apache.activemq.console.command.TestAMQ3411.DoesntExistFactory");
+		tokens.add("--password");
+		tokens.add(origPassword);
+
+		tokens.addAll(DEFAULT_TOKENS);
+
+		try {
+			command.execute(tokens);
+		} catch (Throwable e) {
+			Throwable cause = e;
+			while (null != cause) {
+				if (cause instanceof java.lang.ClassNotFoundException)
+					return;
+				cause = cause.getCause();
+			}
+			assertFalse(e.toString(), true);
+		}
+		assertFalse("No exception caught", true);
+	}
+
+	public void testFactorySetWrong2() throws Exception {
+		AmqBrowseCommand command = new AmqBrowseCommand();
+		CommandContext context = new CommandContext();
+
+		context.setFormatter(new CommandShellOutputFormatter(System.out));
+
+		command.setCommandContext(context);
+
+		List<String> tokens = new ArrayList<String>();
+		tokens.addAll(DEFAULT_OPTIONS);
+		tokens.add("--passwordFactory");
+		tokens.add("java.lang.Object");
+		tokens.add("--password");
+		tokens.add(origPassword);
+		tokens.addAll(DEFAULT_TOKENS);
+
+		try {
+			command.execute(tokens);
+		} catch (Throwable e) {
+			Throwable cause = e;
+			while (null != cause) {
+				if (cause instanceof java.lang.ClassCastException)
+					return;
+				cause = cause.getCause();
+			}
+			assertFalse(e.toString(), true);
+		}
+		assertFalse("No exception caught", true);
+	}
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/60979268/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/DummyConnectionFactory.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/DummyConnectionFactory.java b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/DummyConnectionFactory.java
new file mode 100644
index 0000000..03f9fc5
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/DummyConnectionFactory.java
@@ -0,0 +1,44 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.activemq.console.command;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+
+import java.net.URI;
+
+public class DummyConnectionFactory extends ActiveMQConnectionFactory {
+	public DummyConnectionFactory() {
+		super();
+	}
+
+	public DummyConnectionFactory(String userName, String password, String brokerURL) {
+		super(userName, password, brokerURL);
+	}
+
+	public DummyConnectionFactory(String userName, String password, URI brokerURL) {
+		super(userName, password, brokerURL);
+	}
+
+	public DummyConnectionFactory(String brokerURL) {
+		super(brokerURL);
+	}
+
+	public DummyConnectionFactory(URI brokerURL) {
+		super(brokerURL);
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/60979268/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/InvalidConnectionFactory.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/InvalidConnectionFactory.java b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/InvalidConnectionFactory.java
new file mode 100644
index 0000000..fa57684
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/InvalidConnectionFactory.java
@@ -0,0 +1,23 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.activemq.console.command;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+
+public class InvalidConnectionFactory extends ActiveMQConnectionFactory {
+
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/60979268/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/LowercasingPasswordFactory.java
----------------------------------------------------------------------
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/LowercasingPasswordFactory.java b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/LowercasingPasswordFactory.java
new file mode 100644
index 0000000..a0f9b05
--- /dev/null
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/console/command/LowercasingPasswordFactory.java
@@ -0,0 +1,25 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.activemq.console.command;
+
+public class LowercasingPasswordFactory implements PasswordFactory {
+	@Override
+	public String getPassword(String password) {
+		return password.toLowerCase();
+	}
+
+}


Mime
View raw message