package org.jboss.resource.adapter.jms;
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.QueueConnection;
import javax.jms.TopicConnection;
import javax.naming.Reference;
import javax.resource.Referenceable;
import javax.resource.spi.ConnectionManager;
import javax.resource.spi.ManagedConnectionFactory;
import org.jboss.logging.Logger;
public class JmsConnectionFactoryImpl
implements JmsConnectionFactory, Referenceable
{
private static final Logger log = Logger.getLogger(JmsConnectionFactoryImpl.class);
private ManagedConnectionFactory mcf;
private ConnectionManager cm;
private Reference reference;
public JmsConnectionFactoryImpl(final ManagedConnectionFactory mcf,
final ConnectionManager cm)
{
this.mcf = mcf;
boolean trace = log.isTraceEnabled();
if (cm == null)
{
this.cm = new JmsConnectionManager();
if (trace)
log.trace("Created new connection manager");
}
else
this.cm = cm;
if (trace)
log.trace("Using ManagedConnectionFactory=" + mcf + ", ConnectionManager=" + cm);
}
public void setReference(final Reference reference)
{
this.reference = reference;
if (log.isTraceEnabled())
log.trace("Using Reference=" + reference);
}
public Reference getReference()
{
return reference;
}
public QueueConnection createQueueConnection() throws JMSException
{
QueueConnection qc = new JmsSessionFactoryImpl(mcf, cm, QUEUE);
if (log.isTraceEnabled())
log.trace("Created queue connection: " + qc);
return qc;
}
public QueueConnection createQueueConnection(String userName, String password)
throws JMSException
{
JmsSessionFactoryImpl s = new JmsSessionFactoryImpl(mcf, cm, QUEUE);
s.setUserName(userName);
s.setPassword(password);
if (log.isTraceEnabled())
log.trace("Created queue connection: " + s);
return s;
}
public TopicConnection createTopicConnection() throws JMSException
{
TopicConnection tc = new JmsSessionFactoryImpl(mcf, cm, TOPIC);
if (log.isTraceEnabled())
log.trace("Created topic connection: " + tc);
return tc;
}
public TopicConnection createTopicConnection(String userName, String password)
throws JMSException
{
JmsSessionFactoryImpl s = new JmsSessionFactoryImpl(mcf, cm, TOPIC);
s.setUserName(userName);
s.setPassword(password);
if (log.isTraceEnabled())
log.trace("Created topic connection: " + s);
return s;
}
public Connection createConnection()
throws JMSException
{
Connection c = new JmsSessionFactoryImpl(mcf, cm, BOTH);
if (log.isTraceEnabled())
log.trace("Created connection: " + c);
return c;
}
public Connection createConnection(String userName, String password)
throws JMSException
{
JmsSessionFactoryImpl s = new JmsSessionFactoryImpl(mcf, cm, BOTH);
s.setUserName(userName);
s.setPassword(password);
if (log.isTraceEnabled())
log.trace("Created connection: " + s);
return s;
}
}