/* * 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.QueueConnectionFactory; import javax.jms.TopicConnection; import javax.jms.TopicConnectionFactory; import javax.naming.Reference; import javax.naming.Referenceable; import javax.naming.StringRefAddr; import org.jboss.logging.Logger; /** * This class implements javax.jms.TopicConnectionFactory * and javax.jms.QueueConnectionFactory. * * @version $Revision: 1.5 $ * @created August 16, 2001 * @author Norbert Lataille (Norbert.Lataille@m4x.org) * @author Hiram Chirino (Cojonudo14@hotmail.com) * @author Jason Dillon */ public class SpyConnectionFactory implements Serializable, QueueConnectionFactory, TopicConnectionFactory, Referenceable { private static final Logger log = Logger.getLogger(SpyConnectionFactory.class); // Attributes ---------------------------------------------------- protected GenericConnectionFactory factory; // Constructor --------------------------------------------------- public SpyConnectionFactory( GenericConnectionFactory factory ) { this.factory = factory; } public SpyConnectionFactory( Properties config ) { this.factory = new GenericConnectionFactory(null, 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.SpyConnectionFactory", new org.jboss.mq.referenceable.ObjectRefAddr( "DCF", factory ), "org.jboss.mq.referenceable.SpyConnectionFactoryObjectFactory", null ); } ///////////////////////////////////////////////////////////////////////// // TopicConnectionFactory // ///////////////////////////////////////////////////////////////////////// public TopicConnection createTopicConnection() throws JMSException { try { return new SpyConnection( factory ); } catch ( JMSException e ) { throw e; } catch ( Exception e ) { throw new SpyJMSException( "Failed to create TopicConnection", e); } } public TopicConnection createTopicConnection( 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 SpyConnection( userName, password, factory ); } catch ( JMSException e ) { throw e; } catch ( Exception e ) { throw new SpyJMSException( "Failed to create TopicConnection", e ); } } ///////////////////////////////////////////////////////////////////////// // QueueConnectionFactory // ///////////////////////////////////////////////////////////////////////// public QueueConnection createQueueConnection() throws JMSException { try { return new SpyConnection( factory ); } catch ( JMSException e ) { throw e; } catch ( Exception e ) { throw new SpyJMSException( "Failed to create QueueConnection", e ); } } public QueueConnection createQueueConnection( 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 SpyConnection( userName, password, factory ); } catch ( JMSException e ) { throw e; } catch ( Exception e ) { throw new SpyJMSException( "Failed to create QueueConnection", e ); } } }