/*
* JBossMQ, the OpenSource JMS implementation
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.mq;
import java.io.Serializable;
import java.util.Properties;
import javax.jms.JMSException;
import javax.jms.QueueConnection;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.XAQueueConnection;
import javax.jms.XAQueueConnectionFactory;
import javax.jms.XATopicConnection;
import javax.jms.XATopicConnectionFactory;
import javax.naming.Reference;
import javax.naming.Referenceable;
import javax.naming.StringRefAddr;
import org.jboss.logging.Logger;
/**
* This class implements javax.jms.XATopicConnectionFactory
* and javax.jms.XAQueueConnectionFactory.
*
* @version $Revision: 1.5 $
* @created August 16, 2001
* @author Hiram Chirino (Cojonudo14@hotmail.com)
* @author Jason Dillon
*/
public class SpyXAConnectionFactory
extends SpyConnectionFactory
implements Serializable, XAQueueConnectionFactory, XATopicConnectionFactory
{
private static final Logger log = Logger.getLogger(SpyXAConnectionFactory.class);
// Constructor ---------------------------------------------------
public SpyXAConnectionFactory( GenericConnectionFactory factory ) {
super(factory);
}
public SpyXAConnectionFactory( Properties config ) {
super(config);
}
/**
* getReference method - to implement javax.naming.Refrenceable
*
* @return The Reference value
* @exception javax.naming.NamingException Description of Exception
*/
public Reference getReference()
throws javax.naming.NamingException
{
return new Reference(
"org.jboss.mq.SpyXAConnectionFactory",
new org.jboss.mq.referenceable.ObjectRefAddr( "DCF", factory ),
"org.jboss.mq.referenceable.SpyConnectionFactoryObjectFactory", null );
}
/////////////////////////////////////////////////////////////////////////
// XATopicConnectionFactory //
/////////////////////////////////////////////////////////////////////////
public XATopicConnection createXATopicConnection()
throws JMSException
{
try {
return new SpyXAConnection( factory );
}
catch ( JMSException e ) {
throw e;
}
catch ( Exception e ) {
throw new SpyJMSException("Failed to create XATopicConnection", e);
}
}
public XATopicConnection createXATopicConnection( String userName, String password )
throws JMSException
{
try {
if (userName == null)
throw new SpyJMSException("Username is null");
if (password == null)
throw new SpyJMSException("Password is null");
return new SpyXAConnection( userName, password, factory );
}
catch ( JMSException e ) {
throw e;
}
catch ( Exception e ) {
throw new SpyJMSException("Failed to create XATopicConnection", e);
}
}
/////////////////////////////////////////////////////////////////////////
// XAQueueConnectionFactory //
/////////////////////////////////////////////////////////////////////////
public XAQueueConnection createXAQueueConnection()
throws JMSException
{
try {
return new SpyXAConnection( factory );
}
catch ( JMSException e ) {
throw e;
}
catch ( Exception e ) {
throw new SpyJMSException("Failed to create XAQueueConnection", e);
}
}
public XAQueueConnection createXAQueueConnection( String userName, String password )
throws JMSException
{
try {
if (userName == null)
throw new SpyJMSException("Username is null");
if (password == null)
throw new SpyJMSException("Password is null");
return new SpyXAConnection( userName, password, factory );
}
catch ( JMSException e ) {
throw e;
}
catch ( Exception e ) {
throw new SpyJMSException("Failed to create XAQueueConnection", e);
}
}
}