package org.openamq.client;
import org.openamq.AMQException;
import javax.jms.*;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class AMQConnectionFactory implements ConnectionFactory, QueueConnectionFactory, TopicConnectionFactory
{
private String _host = null;
private int _port;
private String _brokerDetails = null;
private String _defaultUsername;
private String _defaultPassword;
private String _virtualPath;
public AMQConnectionFactory()
{
}
public AMQConnectionFactory(String host, int port, String virtualPath)
{
this(host, port, "guest", "guest", virtualPath);
}
public AMQConnectionFactory(String brokerDetails, String virtualPath)
{
this(brokerDetails, "guest", "guest", virtualPath);
}
public AMQConnectionFactory(String host, int port, String defaultUsername, String defaultPassword,
String virtualPath)
{
_host = host;
_port = port;
_defaultUsername = defaultUsername;
_defaultPassword = defaultPassword;
_virtualPath = virtualPath;
}
public AMQConnectionFactory(String brokerDetails, String defaultUsername, String defaultPassword,
String virtualPath)
{
_brokerDetails = brokerDetails;
_defaultUsername = defaultUsername;
_defaultPassword = defaultPassword;
_virtualPath = virtualPath;
}
/**
* @param password The _defaultPassword to set.
*/
public final void setDefaultPassword(String password) {
_defaultPassword = password;
}
/**
* @param username The _defaultUsername to set.
*/
public final void setDefaultUsername(String username) {
_defaultUsername = username;
}
/**
* @param _host The _host to set.
*/
public final void setBrokerDetails(String _brokerDetails) {
this._brokerDetails = _brokerDetails;
}
/**
* @param _host The _host to set.
*/
public final void setHost(String _host) {
this._host = _host;
}
/**
* @param _port The _port to set.
*/
public final void setPort(int _port) {
this._port = _port;
}
/**
* @param path The _virtualPath to set.
*/
public final void setVirtualPath(String path) {
_virtualPath = path;
}
private static String getUniqueClientID()
{
try
{
InetAddress addr = InetAddress.getLocalHost();
return addr.getHostName() + System.currentTimeMillis();
}
catch (UnknownHostException e)
{
return null;
}
}
private Connection createConnection(String username, String password, String clientId, String virtualPath) throws AMQException
{
if(_host == null){
return new AMQConnection(_brokerDetails, username, password, clientId, virtualPath);
} else {
return new AMQConnection(_host, _port, username, password, clientId, virtualPath);
}
}
public Connection createConnection() throws JMSException
{
try
{
return createConnection(_defaultUsername, _defaultPassword, getUniqueClientID(), _virtualPath);
}
catch (AMQException e)
{
throw new JMSException("Error creating connection: " + e);
}
}
public Connection createConnection(String userName, String password) throws JMSException
{
if((userName == null || userName.length() == 0) && (password == null || password.length() == 0)){
return createConnection();
}
try
{
return createConnection(userName, password, getUniqueClientID(), _virtualPath);
}
catch (AMQException e)
{
throw new JMSException("Error creating connection: " + e);
}
}
public QueueConnection createQueueConnection() throws JMSException
{
return (QueueConnection) createConnection();
}
public QueueConnection createQueueConnection(String username, String password) throws JMSException
{
return (QueueConnection) createConnection(username, password);
}
public TopicConnection createTopicConnection() throws JMSException
{
return (TopicConnection) createConnection();
}
public TopicConnection createTopicConnection(String username, String password) throws JMSException
{
return (TopicConnection) createConnection(username, password);
}
}