You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ta...@apache.org on 2016/01/22 21:41:22 UTC
qpid-jms git commit: QPIDJMS-147 Construct a default remote address
from system properties or using default values of 'localhost' and port 5672.
Repository: qpid-jms
Updated Branches:
refs/heads/master 2f3c19886 -> 4f72dde55
QPIDJMS-147 Construct a default remote address from system properties or using
default values of 'localhost' and port 5672.
Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/4f72dde5
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/4f72dde5
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/4f72dde5
Branch: refs/heads/master
Commit: 4f72dde55d693f5d304723163bf08601ed90d94d
Parents: 2f3c198
Author: Timothy Bish <ta...@gmail.com>
Authored: Fri Jan 22 15:39:45 2016 -0500
Committer: Timothy Bish <ta...@gmail.com>
Committed: Fri Jan 22 15:40:29 2016 -0500
----------------------------------------------------------------------
.../apache/qpid/jms/JmsConnectionFactory.java | 80 +++++++++++++++++++-
.../qpid/jms/jndi/JmsInitialContextFactory.java | 4 +-
.../qpid/jms/JmsConnectionFactoryTest.java | 13 +---
.../jms/jndi/JmsInitialContextFactoryTest.java | 9 ++-
4 files changed, 84 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4f72dde5/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java
index 92614f0..91f1827 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java
@@ -18,12 +18,13 @@ package org.apache.qpid.jms;
import java.net.URI;
import java.net.URISyntaxException;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.util.Map;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.ExceptionListener;
-import javax.jms.IllegalStateException;
import javax.jms.JMSException;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
@@ -49,10 +50,15 @@ import org.slf4j.LoggerFactory;
public class JmsConnectionFactory extends JNDIStorable implements ConnectionFactory, QueueConnectionFactory, TopicConnectionFactory {
private static final Logger LOG = LoggerFactory.getLogger(JmsConnectionFactory.class);
+
private static final String CLIENT_ID_PROP = "clientID";
+ private static final String DEFAULT_REMOTE_HOST = "localhost";
+ private static final String DEFAULT_REMOTE_PORT = "5672";
public static final String REMOTE_URI_PROP = "remoteURI";
+ private static String DEFAULT_REMOTE_URI;
+
private URI remoteURI;
private String username;
private String password;
@@ -211,8 +217,8 @@ public class JmsConnectionFactory extends JNDIStorable implements ConnectionFact
}
protected Provider createProvider(URI remoteURI) throws Exception {
- if(remoteURI == null) {
- throw new IllegalStateException("No remoteURI has been provided");
+ if (remoteURI == null) {
+ remoteURI = new URI(getDefaultRemoteAddress());
}
Provider result = null;
@@ -263,7 +269,7 @@ public class JmsConnectionFactory extends JNDIStorable implements ConnectionFact
* @return the remoteURI
*/
public String getRemoteURI() {
- return this.remoteURI != null ? this.remoteURI.toString() : "";
+ return this.remoteURI != null ? this.remoteURI.toString() : getDefaultRemoteAddress();
}
/**
@@ -763,4 +769,70 @@ public class JmsConnectionFactory extends JNDIStorable implements ConnectionFact
public void setReceiveNoWaitLocalOnly(boolean receiveNoWaitLocalOnly) {
this.receiveNoWaitLocalOnly = receiveNoWaitLocalOnly;
}
+
+ //----- Static Methods ---------------------------------------------------//
+
+ /**
+ * @return the default remote address to connect to in the event that none was set.
+ */
+ public static String getDefaultRemoteAddress() {
+
+ if (DEFAULT_REMOTE_URI != null) {
+ return DEFAULT_REMOTE_URI;
+ }
+
+ synchronized (JmsConnectionFactory.class) {
+
+ if (DEFAULT_REMOTE_URI != null) {
+ return DEFAULT_REMOTE_URI;
+ }
+
+ String host = null;
+ String port = null;
+ String remoteAddress = null;
+
+ try {
+ host = AccessController.doPrivileged(new PrivilegedAction<String>() {
+ @Override
+ public String run() {
+ String result = System.getProperty("org.apache.qpid.jms.REMOTE_HOST", DEFAULT_REMOTE_HOST);
+ result = (result == null || result.isEmpty()) ? DEFAULT_REMOTE_HOST : result;
+ return result;
+ }
+ });
+ port = AccessController.doPrivileged(new PrivilegedAction<String>() {
+ @Override
+ public String run() {
+ String result = System.getProperty("org.apache.qpid.jms.REMOTE_PORT", DEFAULT_REMOTE_PORT);
+ result = (result == null || result.isEmpty()) ? DEFAULT_REMOTE_PORT : result;
+ return result;
+ }
+ });
+ } catch (Throwable e) {
+ LOG.debug("Failed to look up System properties for remote host and port", e);
+ }
+
+ host = (host == null || host.isEmpty()) ? DEFAULT_REMOTE_HOST : host;
+ port = (port == null || port.isEmpty()) ? DEFAULT_REMOTE_PORT : port;
+
+ final String defaultURL = "amqp://" + DEFAULT_REMOTE_HOST + ":" + DEFAULT_REMOTE_PORT;
+
+ try {
+ remoteAddress = AccessController.doPrivileged(new PrivilegedAction<String>() {
+ @Override
+ public String run() {
+ String result = System.getProperty("org.apache.qpid.jms.REMOTE_URI", defaultURL);
+ result = (result == null || result.isEmpty()) ? defaultURL : result;
+ return result;
+ }
+ });
+ } catch (Throwable e) {
+ LOG.debug("Failed to look up System property for remote URI", e);
+ }
+
+ DEFAULT_REMOTE_URI = (remoteAddress == null || remoteAddress.isEmpty()) ? defaultURL : remoteAddress;
+ }
+
+ return DEFAULT_REMOTE_URI;
+ }
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4f72dde5/qpid-jms-client/src/main/java/org/apache/qpid/jms/jndi/JmsInitialContextFactory.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/jndi/JmsInitialContextFactory.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/jndi/JmsInitialContextFactory.java
index 64972f7..f6eba43 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/jndi/JmsInitialContextFactory.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/jndi/JmsInitialContextFactory.java
@@ -58,8 +58,6 @@ public class JmsInitialContextFactory implements InitialContextFactory {
static final String[] DEFAULT_CONNECTION_FACTORY_NAMES = {
"ConnectionFactory", "QueueConnectionFactory", "TopicConnectionFactory" };
- static final String DEFAULT_REMOTE_URI = "amqp://localhost:5672";
-
static final String CONNECTION_FACTORY_KEY_PREFIX = "connectionfactory.";
static final String QUEUE_KEY_PREFIX = "queue.";
static final String TOPIC_KEY_PREFIX = "topic.";
@@ -209,7 +207,7 @@ public class JmsInitialContextFactory implements InitialContextFactory {
protected Map<String, String> getConnectionFactoryDefaults(Map<Object, Object> environment) {
Map<String, String> map = new LinkedHashMap<String, String>();
- map.put(JmsConnectionFactory.REMOTE_URI_PROP, DEFAULT_REMOTE_URI);
+ map.put(JmsConnectionFactory.REMOTE_URI_PROP, JmsConnectionFactory.getDefaultRemoteAddress());
for (Iterator<Entry<Object, Object>> iter = environment.entrySet().iterator(); iter.hasNext();) {
Map.Entry<Object, Object> entry = iter.next();
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4f72dde5/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionFactoryTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionFactoryTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionFactoryTest.java
index d9ae1c7..679fff4 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionFactoryTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/JmsConnectionFactoryTest.java
@@ -35,7 +35,6 @@ import java.util.concurrent.TimeUnit;
import javax.jms.Connection;
import javax.jms.ExceptionListener;
-import javax.jms.IllegalStateException;
import javax.jms.JMSException;
import org.apache.qpid.jms.test.QpidJmsTestCase;
@@ -58,6 +57,7 @@ public class JmsConnectionFactoryTest extends QpidJmsTestCase {
JmsConnectionFactory factory = new JmsConnectionFactory();
assertNull(factory.getUsername());
assertNull(factory.getPassword());
+ assertNotNull(factory.getRemoteURI());
}
@Test
@@ -169,17 +169,6 @@ public class JmsConnectionFactoryTest extends QpidJmsTestCase {
}
@Test
- public void testCreateConnectionWithoutUriThrowsJMSISE() throws Exception {
- JmsConnectionFactory cf = new JmsConnectionFactory();
- try {
- cf.createConnection();
- fail("Should have thrown exception");
- } catch (IllegalStateException jmsise){
- // expected
- }
- }
-
- @Test
public void testSetProperties() throws Exception {
String clientID = getTestName();
String queuePrefix = "q:";
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4f72dde5/qpid-jms-client/src/test/java/org/apache/qpid/jms/jndi/JmsInitialContextFactoryTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/jndi/JmsInitialContextFactoryTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/jndi/JmsInitialContextFactoryTest.java
index 188c6ca..c1a0652 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/jndi/JmsInitialContextFactoryTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/jndi/JmsInitialContextFactoryTest.java
@@ -16,7 +16,10 @@
*/
package org.apache.qpid.jms.jndi;
-import static org.junit.Assert.*;
+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.io.FileNotFoundException;
@@ -61,7 +64,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
assertNotNull("No object returned", o);
assertEquals("Unexpected class type for returned object", JmsConnectionFactory.class, o.getClass());
- assertEquals("Unexpected URI for returned factory", JmsInitialContextFactory.DEFAULT_REMOTE_URI, ((JmsConnectionFactory) o).getRemoteURI());
+ assertEquals("Unexpected URI for returned factory", JmsConnectionFactory.getDefaultRemoteAddress(), ((JmsConnectionFactory) o).getRemoteURI());
}
}
@@ -193,7 +196,7 @@ public class JmsInitialContextFactoryTest extends QpidJmsTestCase {
assertNotNull("No object returned", o);
assertEquals("Unexpected class type for returned object", JmsConnectionFactory.class, o.getClass());
- assertEquals("Unexpected URI for returned factory", JmsInitialContextFactory.DEFAULT_REMOTE_URI, ((JmsConnectionFactory) o).getRemoteURI());
+ assertEquals("Unexpected URI for returned factory", JmsConnectionFactory.getDefaultRemoteAddress(), ((JmsConnectionFactory) o).getRemoteURI());
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org