package org.jboss.jms.client;
import java.util.Enumeration;
import javax.jms.Connection;
import javax.jms.ConnectionConsumer;
import javax.jms.ConnectionMetaData;
import javax.jms.Destination;
import javax.jms.ExceptionListener;
import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueSession;
import javax.jms.ServerSessionPool;
import javax.jms.Session;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicSession;
import javax.jms.XAConnection;
import javax.jms.XAQueueConnection;
import javax.jms.XAQueueSession;
import javax.jms.XASession;
import javax.jms.XATopicConnection;
import javax.jms.XATopicSession;
public class JBossConnection
implements Connection, QueueConnection, TopicConnection,
XAConnection, XAQueueConnection, XATopicConnection
{
private ConnectionDelegate delegate;
private ExceptionListener listener;
private boolean isXAConnection;
public JBossConnection(ConnectionDelegate delegate, boolean isXAConnection)
throws JMSException
{
this.delegate = delegate;
this.isXAConnection = isXAConnection;
}
public Enumeration getJMSXPropertyNames()
throws JMSException
{
return delegate.getJMSXPropertyNames();
}
public void close() throws JMSException
{
delegate.closing();
delegate.close();
}
public ConnectionConsumer createConnectionConsumer(
Destination destination,
String messageSelector,
ServerSessionPool sessionPool,
int maxMessages)
throws JMSException
{
return null;
}
public ConnectionConsumer createDurableConnectionConsumer(
Topic topic,
String subscriptionName,
String messageSelector,
ServerSessionPool sessionPool,
int maxMessages)
throws JMSException
{
return null;
}
public Session createSession(boolean transacted, int acknowledgeMode) throws JMSException
{
if (transacted)
acknowledgeMode = Session.SESSION_TRANSACTED;
return new JBossSession(delegate.createSession(false, transacted, acknowledgeMode), false, transacted, acknowledgeMode);
}
public String getClientID() throws JMSException
{
return delegate.getClientID();
}
public ExceptionListener getExceptionListener() throws JMSException
{
return listener;
}
public ConnectionMetaData getMetaData() throws JMSException
{
return new JBossConnectionMetaData(delegate);
}
public void setClientID(String clientID) throws JMSException
{
delegate.setClientID(clientID);
}
public void setExceptionListener(ExceptionListener listener) throws JMSException
{
delegate.setExceptionListener(listener);
this.listener = listener;
}
public void start() throws JMSException
{
delegate.start();
}
public void stop() throws JMSException
{
delegate.stop();
}
public ConnectionConsumer createConnectionConsumer(
Queue queue,
String messageSelector,
ServerSessionPool sessionPool,
int maxMessages)
throws JMSException
{
return createConnectionConsumer((Destination) queue, messageSelector, sessionPool, maxMessages);
}
public QueueSession createQueueSession(boolean transacted, int acknowledgeMode) throws JMSException
{
return (QueueSession) createSession(transacted, acknowledgeMode);
}
public ConnectionConsumer createConnectionConsumer(
Topic topic,
String messageSelector,
ServerSessionPool sessionPool,
int maxMessages)
throws JMSException
{
return createConnectionConsumer((Destination) topic, messageSelector, sessionPool, maxMessages);
}
public TopicSession createTopicSession(boolean transacted, int acknowledgeMode)
throws JMSException
{
return (TopicSession) createSession(transacted, acknowledgeMode);
}
public XASession createXASession() throws JMSException
{
if (isXAConnection == false)
throw new JMSException("Not an xa connection");
return new JBossSession(delegate.createSession(true, true, Session.SESSION_TRANSACTED), true, true, Session.SESSION_TRANSACTED);
}
public XAQueueSession createXAQueueSession() throws JMSException
{
return (XAQueueSession) createXASession();
}
public XATopicSession createXATopicSession() throws JMSException
{
return (XATopicSession) createXASession();
}
}