summaryrefslogtreecommitdiff
path: root/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java')
-rw-r--r--java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java173
1 files changed, 173 insertions, 0 deletions
diff --git a/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java
new file mode 100644
index 0000000000..d9e6dfe36d
--- /dev/null
+++ b/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java
@@ -0,0 +1,173 @@
+/*
+ *
+ * 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.qpid.amqp_1_0.jms.impl;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import javax.jms.JMSException;
+import javax.jms.QueueConnection;
+import javax.jms.QueueConnectionFactory;
+import javax.jms.TopicConnection;
+import javax.jms.TopicConnectionFactory;
+import org.apache.qpid.amqp_1_0.jms.ConnectionFactory;
+
+public class ConnectionFactoryImpl implements ConnectionFactory, TopicConnectionFactory, QueueConnectionFactory
+{
+ private String _host;
+ private int _port;
+ private String _username;
+ private String _password;
+ private String _clientId;
+ private String _remoteHost;
+ private boolean _ssl;
+
+
+ public ConnectionFactoryImpl(final String host,
+ final int port,
+ final String username,
+ final String password)
+ {
+ this(host,port,username,password,null,false);
+ }
+
+ public ConnectionFactoryImpl(final String host,
+ final int port,
+ final String username,
+ final String password,
+ final String clientId)
+ {
+ this(host,port,username,password,clientId,false);
+ }
+
+ public ConnectionFactoryImpl(final String host,
+ final int port,
+ final String username,
+ final String password,
+ final String clientId,
+ final boolean ssl)
+ {
+ this(host,port,username,password,clientId,null,ssl);
+ }
+
+ public ConnectionFactoryImpl(final String host,
+ final int port,
+ final String username,
+ final String password,
+ final String clientId,
+ final String remoteHost,
+ final boolean ssl)
+ {
+ _host = host;
+ _port = port;
+ _username = username;
+ _password = password;
+ _clientId = clientId;
+ _remoteHost = remoteHost;
+ _ssl = ssl;
+ }
+
+ public ConnectionImpl createConnection() throws JMSException
+ {
+ return new ConnectionImpl(_host, _port, _username, _password, _clientId, _remoteHost, _ssl);
+ }
+
+ public ConnectionImpl createConnection(final String username, final String password) throws JMSException
+ {
+ return new ConnectionImpl(_host, _port, username, password, _clientId, _remoteHost, _ssl);
+ }
+
+ public static ConnectionFactoryImpl createFromURL(final String urlString) throws MalformedURLException
+ {
+ URL url = new URL(urlString);
+ String host = url.getHost();
+ int port = url.getPort();
+ if(port == -1)
+ {
+ port = 5672;
+ }
+ String userInfo = url.getUserInfo();
+ String username = null;
+ String password = null;
+ String clientId = null;
+ String remoteHost = null;
+ boolean ssl = false;
+ if(userInfo != null)
+ {
+ String[] components = userInfo.split(":",2);
+ username = components[0];
+ if(components.length == 2)
+ {
+ password = components[1];
+ }
+ }
+ String query = url.getQuery();
+ if(query != null)
+ {
+ for(String param : query.split("&"))
+ {
+ String[] keyValuePair = param.split("=",2);
+ if(keyValuePair[0].equalsIgnoreCase("clientid"))
+ {
+ clientId = keyValuePair[1];
+ }
+ else if(keyValuePair[0].equalsIgnoreCase("ssl"))
+ {
+ ssl = Boolean.valueOf(keyValuePair[1]);
+ }
+ else if(keyValuePair[0].equalsIgnoreCase("remote-host"))
+ {
+ remoteHost = keyValuePair[1];
+ }
+ }
+ }
+
+ return new ConnectionFactoryImpl(host, port, username, password, clientId, remoteHost, ssl);
+
+ }
+
+ public QueueConnection createQueueConnection() throws JMSException
+ {
+ final ConnectionImpl connection = createConnection();
+ connection.setQueueConnection(true);
+ return connection;
+ }
+
+ public QueueConnection createQueueConnection(final String username, final String password) throws JMSException
+ {
+ final ConnectionImpl connection = createConnection(username, password);
+ connection.setQueueConnection(true);
+ return connection;
+ }
+
+ public TopicConnection createTopicConnection() throws JMSException
+ {
+ final ConnectionImpl connection = createConnection();
+ connection.setTopicConnection(true);
+ return connection;
+ }
+
+ public TopicConnection createTopicConnection(final String username, final String password) throws JMSException
+ {
+ final ConnectionImpl connection = createConnection(username, password);
+ connection.setTopicConnection(true);
+ return connection;
+ }
+}