http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ef98044/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/jms/jndi/ObjectFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/jms/jndi/ObjectFactoryTest.java
 
b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/jms/jndi/ObjectFactoryTest.java
new file mode 100644
index 0000000..9ceebfd
--- /dev/null
+++ 
b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/jms/jndi/ObjectFactoryTest.java
@@ -0,0 +1,138 @@
+/**
+ * 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.artemis.tests.unit.jms.jndi;
+
+import static org.junit.Assert.assertEquals;
+
+import javax.naming.Reference;
+
+import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
+import org.apache.activemq.artemis.jms.client.ActiveMQDestination;
+import org.apache.activemq.artemis.jndi.JNDIReferenceFactory;
+import org.apache.activemq.artemis.utils.RandomUtil;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class ObjectFactoryTest {
+
+   @Test(timeout = 1000)
+   public void testConnectionFactory() throws Exception {
+      // Create sample connection factory
+      ActiveMQConnectionFactory factory = new 
ActiveMQConnectionFactory("vm://0");
+
+      String clientID = RandomUtil.randomString();
+      String user = RandomUtil.randomString();
+      String password = RandomUtil.randomString();
+      long clientFailureCheckPeriod = RandomUtil.randomPositiveLong();
+      long connectionTTL = RandomUtil.randomPositiveLong();
+      long callTimeout = RandomUtil.randomPositiveLong();
+      int minLargeMessageSize = RandomUtil.randomPositiveInt();
+      int consumerWindowSize = RandomUtil.randomPositiveInt();
+      int consumerMaxRate = RandomUtil.randomPositiveInt();
+      int confirmationWindowSize = RandomUtil.randomPositiveInt();
+      int producerMaxRate = RandomUtil.randomPositiveInt();
+      boolean blockOnAcknowledge = RandomUtil.randomBoolean();
+      boolean blockOnDurableSend = RandomUtil.randomBoolean();
+      boolean blockOnNonDurableSend = RandomUtil.randomBoolean();
+      boolean autoGroup = RandomUtil.randomBoolean();
+      boolean preAcknowledge = RandomUtil.randomBoolean();
+      String loadBalancingPolicyClassName = RandomUtil.randomString();
+      boolean useGlobalPools = RandomUtil.randomBoolean();
+      int scheduledThreadPoolMaxSize = RandomUtil.randomPositiveInt();
+      int threadPoolMaxSize = RandomUtil.randomPositiveInt();
+      long retryInterval = RandomUtil.randomPositiveLong();
+      double retryIntervalMultiplier = RandomUtil.randomDouble();
+      int reconnectAttempts = RandomUtil.randomPositiveInt();
+      factory.setClientID(clientID);
+      factory.setUser(user);
+      factory.setPassword(password);
+      factory.setClientFailureCheckPeriod(clientFailureCheckPeriod);
+      factory.setConnectionTTL(connectionTTL);
+      factory.setCallTimeout(callTimeout);
+      factory.setMinLargeMessageSize(minLargeMessageSize);
+      factory.setConsumerWindowSize(consumerWindowSize);
+      factory.setConsumerMaxRate(consumerMaxRate);
+      factory.setConfirmationWindowSize(confirmationWindowSize);
+      factory.setProducerMaxRate(producerMaxRate);
+      factory.setBlockOnAcknowledge(blockOnAcknowledge);
+      factory.setBlockOnDurableSend(blockOnDurableSend);
+      factory.setBlockOnNonDurableSend(blockOnNonDurableSend);
+      factory.setAutoGroup(autoGroup);
+      factory.setPreAcknowledge(preAcknowledge);
+      
factory.setConnectionLoadBalancingPolicyClassName(loadBalancingPolicyClassName);
+      factory.setUseGlobalPools(useGlobalPools);
+      factory.setScheduledThreadPoolMaxSize(scheduledThreadPoolMaxSize);
+      factory.setThreadPoolMaxSize(threadPoolMaxSize);
+      factory.setRetryInterval(retryInterval);
+      factory.setRetryIntervalMultiplier(retryIntervalMultiplier);
+      factory.setReconnectAttempts(reconnectAttempts);
+
+
+      // Create reference
+      Reference ref = 
JNDIReferenceFactory.createReference(factory.getClass().getName(), factory);
+
+      // Get object created based on reference
+      ActiveMQConnectionFactory temp;
+      JNDIReferenceFactory refFactory = new JNDIReferenceFactory();
+      temp = (ActiveMQConnectionFactory)refFactory.getObjectInstance(ref, 
null, null, null);
+
+      // Check settings
+      Assert.assertEquals(clientID, temp.getClientID());
+      Assert.assertEquals(user, temp.getUser());
+      Assert.assertEquals(password, temp.getPassword());
+      Assert.assertEquals(clientFailureCheckPeriod, 
temp.getClientFailureCheckPeriod());
+      Assert.assertEquals(connectionTTL, temp.getConnectionTTL());
+      Assert.assertEquals(callTimeout, temp.getCallTimeout());
+      Assert.assertEquals(minLargeMessageSize, temp.getMinLargeMessageSize());
+      Assert.assertEquals(consumerWindowSize, temp.getConsumerWindowSize());
+      Assert.assertEquals(consumerMaxRate, temp.getConsumerMaxRate());
+      Assert.assertEquals(confirmationWindowSize, 
temp.getConfirmationWindowSize());
+      Assert.assertEquals(producerMaxRate, temp.getProducerMaxRate());
+      Assert.assertEquals(blockOnAcknowledge, temp.isBlockOnAcknowledge());
+      Assert.assertEquals(blockOnDurableSend, temp.isBlockOnDurableSend());
+      Assert.assertEquals(blockOnNonDurableSend, 
temp.isBlockOnNonDurableSend());
+      Assert.assertEquals(autoGroup, temp.isAutoGroup());
+      Assert.assertEquals(preAcknowledge, temp.isPreAcknowledge());
+      Assert.assertEquals(loadBalancingPolicyClassName, 
temp.getConnectionLoadBalancingPolicyClassName());
+      Assert.assertEquals(useGlobalPools, temp.isUseGlobalPools());
+      Assert.assertEquals(scheduledThreadPoolMaxSize, 
temp.getScheduledThreadPoolMaxSize());
+      Assert.assertEquals(threadPoolMaxSize, temp.getThreadPoolMaxSize());
+      Assert.assertEquals(retryInterval, temp.getRetryInterval());
+      Assert.assertEquals(retryIntervalMultiplier, 
temp.getRetryIntervalMultiplier(), 0.0001);
+      Assert.assertEquals(reconnectAttempts, temp.getReconnectAttempts());
+
+   }
+
+   @Test(timeout = 1000)
+   public void testDestination() throws Exception {
+      // Create sample destination
+      ActiveMQDestination dest = (ActiveMQDestination) 
ActiveMQJMSClient.createQueue(RandomUtil.randomString());
+
+      // Create reference
+      Reference ref = 
JNDIReferenceFactory.createReference(dest.getClass().getName(), dest);
+
+      // Get object created based on reference
+      ActiveMQDestination temp;
+      JNDIReferenceFactory refFactory = new JNDIReferenceFactory();
+      temp = (ActiveMQDestination)refFactory.getObjectInstance(ref, null, 
null, null);
+
+      // Check settings
+      assertEquals(dest.getAddress(), temp.getAddress());
+   }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ef98044/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/jms/jndi/StringRefAddrReferenceTest.java
----------------------------------------------------------------------
diff --git 
a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/jms/jndi/StringRefAddrReferenceTest.java
 
b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/jms/jndi/StringRefAddrReferenceTest.java
new file mode 100644
index 0000000..bbfbaf9
--- /dev/null
+++ 
b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/jms/jndi/StringRefAddrReferenceTest.java
@@ -0,0 +1,119 @@
+/**
+ * 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.artemis.tests.unit.jms.jndi;
+
+import static org.junit.Assert.assertEquals;
+
+import javax.naming.Reference;
+import javax.naming.StringRefAddr;
+import javax.naming.spi.ObjectFactory;
+import java.util.Enumeration;
+import java.util.Properties;
+
+import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
+import org.apache.activemq.artemis.jms.client.ActiveMQQueue;
+import org.apache.activemq.artemis.jms.client.ActiveMQTopic;
+import org.apache.activemq.artemis.jndi.JNDIReferenceFactory;
+import org.junit.Test;
+
+/**
+ * Test to simulate JNDI references created using String properties in 
containers such as Apache Tomcat.
+ */
+public class StringRefAddrReferenceTest {
+
+   private static final String FACTORY = "factory";
+   private static final String TYPE = "type";
+
+   @Test(timeout = 10000)
+   public void testActiveMQQueueFromPropertiesJNDI() throws Exception {
+      Properties properties = new Properties();
+      properties.setProperty(TYPE, ActiveMQQueue.class.getName());
+      properties.setProperty(FACTORY, JNDIReferenceFactory.class.getName());
+
+      String address = "foo.bar.queue";
+
+      properties.setProperty("address", address);
+
+      Reference reference = from(properties);
+      ActiveMQQueue object = getObject(reference, ActiveMQQueue.class);
+
+      assertEquals(address, object.getAddress());
+
+   }
+
+   @Test(timeout = 10000)
+   public void testActiveMQTopicFromPropertiesJNDI() throws Exception {
+      Properties properties = new Properties();
+      properties.setProperty(TYPE, ActiveMQTopic.class.getName());
+      properties.setProperty(FACTORY, JNDIReferenceFactory.class.getName());
+
+      String address = "foo.bar.topic";
+
+      properties.setProperty("address", address);
+
+      Reference reference = from(properties);
+      ActiveMQTopic object = getObject(reference, ActiveMQTopic.class);
+
+      assertEquals(address, object.getAddress());
+
+   }
+
+   @Test(timeout = 10000)
+   public void testActiveMQConnectionFactoryFromPropertiesJNDI() throws 
Exception {
+      Properties properties = new Properties();
+      properties.setProperty(TYPE, ActiveMQConnectionFactory.class.getName());
+      properties.setProperty(FACTORY, JNDIReferenceFactory.class.getName());
+
+      String brokerURL = "vm://0";
+      String connectionTTL = "1000";
+      String preAcknowledge = "true";
+
+      properties.setProperty("brokerURL", brokerURL);
+      properties.setProperty("connectionTTL", connectionTTL);
+      properties.setProperty("preAcknowledge", preAcknowledge);
+
+      Reference reference = from(properties);
+      ActiveMQConnectionFactory object = getObject(reference, 
ActiveMQConnectionFactory.class);
+
+      assertEquals(Long.parseLong(connectionTTL), object.getConnectionTTL());
+      assertEquals(Boolean.parseBoolean(preAcknowledge), 
object.isPreAcknowledge());
+
+   }
+
+   private <T> T getObject(Reference reference, Class<T> tClass) throws 
Exception {
+      String factoryName = reference.getFactoryClassName();
+      Class<?> factoryClass = Class.forName(factoryName);
+      ObjectFactory factory = (ObjectFactory) factoryClass.newInstance();
+      Object o = factory.getObjectInstance(reference, null, null, null);
+      if (tClass.isAssignableFrom(tClass)) {
+         return tClass.cast(o);
+      } else {
+         throw new IllegalStateException("Expected class, " + 
tClass.getName());
+      }
+   }
+
+   public Reference from(Properties properties) {
+      String type = (String) properties.remove("type");
+      String factory = (String) properties.remove("factory");
+      Reference result = new Reference(type, factory, null);
+      for (Enumeration iter = properties.propertyNames(); 
iter.hasMoreElements();) {
+         String key = (String)iter.nextElement();
+         result.add(new StringRefAddr(key, properties.getProperty(key)));
+      }
+      return result;
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ef98044/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/jms/referenceable/DestinationObjectFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/jms/referenceable/DestinationObjectFactoryTest.java
 
b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/jms/referenceable/DestinationObjectFactoryTest.java
deleted file mode 100644
index 7bbbf31..0000000
--- 
a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/jms/referenceable/DestinationObjectFactoryTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.artemis.tests.unit.jms.referenceable;
-
-import javax.naming.Reference;
-
-import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
-import org.apache.activemq.artemis.jms.client.ActiveMQDestination;
-import org.apache.activemq.artemis.jms.referenceable.DestinationObjectFactory;
-import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
-import org.apache.activemq.artemis.utils.RandomUtil;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class DestinationObjectFactoryTest extends ActiveMQTestBase {
-   // Constants -----------------------------------------------------
-
-   // Attributes ----------------------------------------------------
-
-   // Static --------------------------------------------------------
-
-   // Constructors --------------------------------------------------
-
-   // Public --------------------------------------------------------
-
-   @Test
-   public void testReference() throws Exception {
-      ActiveMQDestination queue = (ActiveMQDestination) 
ActiveMQJMSClient.createQueue(RandomUtil.randomString());
-      Reference reference = queue.getReference();
-
-      DestinationObjectFactory factory = new DestinationObjectFactory();
-      Object object = factory.getObjectInstance(reference, null, null, null);
-      Assert.assertNotNull(object);
-      Assert.assertTrue(object instanceof ActiveMQDestination);
-      Assert.assertEquals(queue, object);
-   }
-
-   // Package protected ---------------------------------------------
-
-   // Protected -----------------------------------------------------
-
-   // Private -------------------------------------------------------
-
-   // Inner classes -------------------------------------------------
-}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ef98044/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/ra/ConnectionFactoryPropertiesTest.java
----------------------------------------------------------------------
diff --git 
a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/ra/ConnectionFactoryPropertiesTest.java
 
b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/ra/ConnectionFactoryPropertiesTest.java
index b3ed958..3901e1b 100644
--- 
a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/ra/ConnectionFactoryPropertiesTest.java
+++ 
b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/ra/ConnectionFactoryPropertiesTest.java
@@ -43,6 +43,9 @@ public class ConnectionFactoryPropertiesTest extends 
ActiveMQTestBase {
       UNSUPPORTED_CF_PROPERTIES.add("discoveryGroupName");
       UNSUPPORTED_CF_PROPERTIES.add("incomingInterceptorList");
       UNSUPPORTED_CF_PROPERTIES.add("outgoingInterceptorList");
+      UNSUPPORTED_CF_PROPERTIES.add("user");
+      UNSUPPORTED_CF_PROPERTIES.add("userName");
+      UNSUPPORTED_CF_PROPERTIES.add("password");
 
       UNSUPPORTED_RA_PROPERTIES = new TreeSet<>();
       UNSUPPORTED_RA_PROPERTIES.add("HA");
@@ -62,6 +65,7 @@ public class ConnectionFactoryPropertiesTest extends 
ActiveMQTestBase {
       UNSUPPORTED_RA_PROPERTIES.add("useMaskedPassword");
       UNSUPPORTED_RA_PROPERTIES.add("useAutoRecovery");
       UNSUPPORTED_RA_PROPERTIES.add("useLocalTx");
+      UNSUPPORTED_RA_PROPERTIES.add("user");
       UNSUPPORTED_RA_PROPERTIES.add("userName");
       UNSUPPORTED_RA_PROPERTIES.add("jgroupsChannelLocatorClass");
       UNSUPPORTED_RA_PROPERTIES.add("jgroupsChannelRefName");

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ef98044/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/ra/referenceable/DestinationObjectFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/ra/referenceable/DestinationObjectFactoryTest.java
 
b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/ra/referenceable/DestinationObjectFactoryTest.java
new file mode 100644
index 0000000..fedcfd9
--- /dev/null
+++ 
b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/ra/referenceable/DestinationObjectFactoryTest.java
@@ -0,0 +1,60 @@
+/*
+ * 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.artemis.tests.unit.ra.referenceable;
+
+import javax.naming.Reference;
+import javax.naming.spi.ObjectFactory;
+
+import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
+import org.apache.activemq.artemis.jms.client.ActiveMQDestination;
+import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
+import org.apache.activemq.artemis.utils.RandomUtil;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class DestinationObjectFactoryTest extends ActiveMQTestBase {
+   // Constants -----------------------------------------------------
+
+   // Attributes ----------------------------------------------------
+
+   // Static --------------------------------------------------------
+
+   // Constructors --------------------------------------------------
+
+   // Public --------------------------------------------------------
+
+   @Test
+   public void testReference() throws Exception {
+      ActiveMQDestination queue = (ActiveMQDestination) 
ActiveMQJMSClient.createQueue(RandomUtil.randomString());
+      Reference reference = queue.getReference();
+      String factoryName = reference.getFactoryClassName();
+      Class<?> factoryClass = Class.forName(factoryName);
+      ObjectFactory factory = (ObjectFactory) factoryClass.newInstance();
+      Object object = factory.getObjectInstance(reference, null, null, null);
+      Assert.assertNotNull(object);
+      Assert.assertTrue(object instanceof ActiveMQDestination);
+      Assert.assertEquals(queue, object);
+   }
+
+   // Package protected ---------------------------------------------
+
+   // Protected -----------------------------------------------------
+
+   // Private -------------------------------------------------------
+
+   // Inner classes -------------------------------------------------
+}

Reply via email to