
Author: seb Date: Thu Jan 11 14:36:49 2007 New Revision: 1197 Added: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTest.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueue.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueConnection.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueConnectionFactory.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueSender.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueSession.java Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTest.java Log: Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java ============================================================================== --- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java (original) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/net/JMSQueueAppender.java Thu Jan 11 14:36:49 2007 @@ -40,10 +40,10 @@ * requires the retreival of a JNDI {@link Context}. * * <p> - * There are two common methods for retrieving a JNDI {@link Context}. If a file - * resource named <em>jndi.properties</em> is available to the JNDI API, it - * will use the information found therein to retrieve an initial JNDI context. - * To obtain an initial context, your code will simply call: + * There are two common methods for retrieving a JNDI {@link Context}. If a + * file resource named <em>jndi.properties</em> is available to the JNDI API, + * it will use the information found therein to retrieve an initial JNDI + * context. To obtain an initial context, your code will simply call: * * <pre> * InitialContext jndiContext = new InitialContext(); @@ -115,7 +115,6 @@ QueueSession queueSession; QueueSender queueSender; - boolean inOrder = false; int successiveFailureCount = 0; public JMSQueueAppender() { @@ -159,79 +158,82 @@ QueueConnectionFactory queueConnectionFactory; try { - Context jndi; + Context jndi = buildJNDIContext(); - //addInfo("Getting initial context."); - if (initialContextFactoryName != null) { - Properties env = new Properties(); - env.put(Context.INITIAL_CONTEXT_FACTORY, initialContextFactoryName); - if (providerURL != null) { - env.put(Context.PROVIDER_URL, providerURL); - } else { - addWarn( - "You have set InitialContextFactoryName option but not the " - + "ProviderURL. This is likely to cause problems."); - } - if (urlPkgPrefixes != null) { - env.put(Context.URL_PKG_PREFIXES, urlPkgPrefixes); - } - - if (securityPrincipalName != null) { - env.put(Context.SECURITY_PRINCIPAL, securityPrincipalName); - if (securityCredentials != null) { - env.put(Context.SECURITY_CREDENTIALS, securityCredentials); - } else { - addWarn( - "You have set SecurityPrincipalName option but not the " - + "SecurityCredentials. This is likely to cause problems."); - } - } - jndi = new InitialContext(env); - } else { - jndi = new InitialContext(); - } - - //addInfo("Looking up [" + qcfBindingName + "]"); - queueConnectionFactory = - (QueueConnectionFactory) lookup(jndi, qcfBindingName); - //addInfo("About to create QueueConnection."); + // addInfo("Looking up [" + qcfBindingName + "]"); + queueConnectionFactory = (QueueConnectionFactory) lookup(jndi, + qcfBindingName); + // addInfo("About to create QueueConnection."); if (userName != null) { - this.queueConnection = - queueConnectionFactory.createQueueConnection(userName, password); + this.queueConnection = queueConnectionFactory.createQueueConnection( + userName, password); } else { this.queueConnection = queueConnectionFactory.createQueueConnection(); } - //addInfo( - // "Creating QueueSession, non-transactional, " - // + "in AUTO_ACKNOWLEDGE mode."); - this.queueSession = - queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); + // addInfo( + // "Creating QueueSession, non-transactional, " + // + "in AUTO_ACKNOWLEDGE mode."); + this.queueSession = queueConnection.createQueueSession(false, + Session.AUTO_ACKNOWLEDGE); - //addInfo("Looking up queue name [" + queueBindingName + "]."); + // addInfo("Looking up queue name [" + queueBindingName + "]."); Queue queue = (Queue) lookup(jndi, queueBindingName); - //addInfo("Creating QueueSender."); + // addInfo("Creating QueueSender."); this.queueSender = queueSession.createSender(queue); - //addInfo("Starting QueueConnection."); + // addInfo("Starting QueueConnection."); queueConnection.start(); jndi.close(); } catch (Exception e) { - addError( - "Error while activating options for appender named [" + name + "].", e); + addError("Error while activating options for appender named [" + name + + "].", e); } - - - if (this.queueConnection != null && this.queueSession != null && this.queueSender != null) { - inOrder = true; + + if (this.queueConnection != null && this.queueSession != null + && this.queueSender != null) { + super.start(); + } + } + + public Context buildJNDIContext() throws NamingException { + Context jndi = null; + + // addInfo("Getting initial context."); + if (initialContextFactoryName != null) { + Properties env = buildEnvProperties(); + jndi = new InitialContext(env); + } else { + jndi = new InitialContext(); + } + return jndi; + } + + public Properties buildEnvProperties() { + Properties env = new Properties(); + env.put(Context.INITIAL_CONTEXT_FACTORY, initialContextFactoryName); + if (providerURL != null) { + env.put(Context.PROVIDER_URL, providerURL); } else { - inOrder = false; + addWarn("You have set InitialContextFactoryName option but not the " + + "ProviderURL. This is likely to cause problems."); } - if(inOrder) { - super.start(); + if (urlPkgPrefixes != null) { + env.put(Context.URL_PKG_PREFIXES, urlPkgPrefixes); } + + if (securityPrincipalName != null) { + env.put(Context.SECURITY_PRINCIPAL, securityPrincipalName); + if (securityCredentials != null) { + env.put(Context.SECURITY_CREDENTIALS, securityCredentials); + } else { + addWarn("You have set SecurityPrincipalName option but not the " + + "SecurityCredentials. This is likely to cause problems."); + } + } + return env; } protected Object lookup(Context ctx, String name) throws NamingException { @@ -273,35 +275,23 @@ } /** - * Gets whether appender is properly configured to append messages. - * - * @return true if properly configured. - */ - protected boolean checkEntryConditions() { - return inOrder; - } - - /** * This method called by {@link AppenderSkeleton#doAppend} method to do most * of the real appending work. */ public void append(LoggingEvent event) { - if (!checkEntryConditions()) { + if (!isStarted()) { return; } try { ObjectMessage msg = queueSession.createObjectMessage(); - - // manage caller data - msg.setObject(event); queueSender.send(msg); successiveFailureCount = 0; } catch (Exception e) { successiveFailureCount++; if (successiveFailureCount > SUCCESSIVE_FAILURE_LIMIT) { - inOrder = false; + stop(); } addError("Could not send message in JMSAppender [" + name + "].", e); @@ -397,16 +387,16 @@ } /** - * Returns the QueueSession used for this appender. Only valid after - * start() method has been invoked. + * Returns the QueueSession used for this appender. Only valid after start() + * method has been invoked. */ protected QueueSession getQueueSession() { return queueSession; } /** - * Returns the QueueSender used for this appender. Only valid after - * start() method has been invoked. + * Returns the QueueSender used for this appender. Only valid after start() + * method has been invoked. */ protected QueueSender getQueueSender() { return queueSender; Added: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTest.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSQueueAppenderTest.java Thu Jan 11 14:36:49 2007 @@ -0,0 +1,213 @@ +package ch.qos.logback.classic.net; + +import java.util.Properties; + +import javax.jms.ObjectMessage; +import javax.naming.Context; + +import junit.framework.TestCase; +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.net.mock.MockInitialContext; +import ch.qos.logback.classic.net.mock.MockInitialContextFactory; +import ch.qos.logback.classic.net.mock.MockQueue; +import ch.qos.logback.classic.net.mock.MockQueueConnectionFactory; +import ch.qos.logback.classic.net.mock.MockQueueSender; +import ch.qos.logback.classic.spi.LoggingEvent; +import ch.qos.logback.core.ContextBase; + +public class JMSQueueAppenderTest extends TestCase { + + ch.qos.logback.core.Context context; + JMSQueueAppender appender; + + @Override + protected void setUp() throws Exception { + context = new ContextBase(); + appender = new JMSQueueAppender(); + appender.setContext(context); + appender.setName("jmsQueue"); + appender.qcfBindingName = "queueCnxFactory"; + appender.queueBindingName = "testQueue"; + appender.providerURL = "url"; + appender.initialContextFactoryName = MockInitialContextFactory.class.getName(); + + MockInitialContext mic = MockInitialContextFactory.getContext(); + mic.map.put(appender.qcfBindingName, new MockQueueConnectionFactory()); + mic.map.put(appender.queueBindingName, new MockQueue(appender.queueBindingName)); + + super.setUp(); + } + + @Override + protected void tearDown() throws Exception { + appender = null; + context = null; + super.tearDown(); + } + + public void testAppendOk() { + appender.start(); + + LoggingEvent le = createLoggingEvent(); + appender.append(le); + + MockQueueSender qs = (MockQueueSender)appender.queueSender; + assertEquals(1, qs.getMessageList().size()); + ObjectMessage message = (ObjectMessage) qs.getMessageList().get(0); + try { + assertEquals(le, message.getObject()); + } catch (Exception e) { + fail(); + } + } + + public void testAppendFailure() { + appender.start(); + + //make sure the append method does not work + appender.queueSender = null; + + LoggingEvent le = createLoggingEvent(); + for (int i = 1; i <= 3; i++) { + appender.append(le); + assertEquals(i, context.getStatusManager().getCount()); + assertTrue(appender.isStarted()); + } + appender.append(le); + assertEquals(4, context.getStatusManager().getCount()); + assertFalse(appender.isStarted()); + } + + public void testBuildEnvProperties() { + appender.initialContextFactoryName = "icfn"; + appender.providerURL = "url"; + appender.urlPkgPrefixes = "pkgPref"; + appender.securityPrincipalName = "user"; + appender.securityCredentials = "cred"; + + Properties props = appender.buildEnvProperties(); + assertEquals(5, props.size()); + assertEquals(appender.initialContextFactoryName, props + .getProperty(Context.INITIAL_CONTEXT_FACTORY)); + assertEquals(appender.providerURL, props.getProperty(Context.PROVIDER_URL)); + assertEquals(appender.urlPkgPrefixes, props + .getProperty(Context.URL_PKG_PREFIXES)); + assertEquals(appender.securityPrincipalName, props + .getProperty(Context.SECURITY_PRINCIPAL)); + assertEquals(appender.securityCredentials, props + .getProperty(Context.SECURITY_CREDENTIALS)); + } + + public void testBuildEnvPropertiesWithNullProviderURL() { + appender.initialContextFactoryName = "icfn"; + appender.providerURL = null; + appender.urlPkgPrefixes = "pkgPref"; + appender.securityPrincipalName = "user"; + appender.securityCredentials = "cred"; + + Properties props = appender.buildEnvProperties(); + assertEquals(4, props.size()); + assertEquals(appender.initialContextFactoryName, props + .getProperty(Context.INITIAL_CONTEXT_FACTORY)); + assertEquals(null, props.getProperty(Context.PROVIDER_URL)); + assertEquals(appender.urlPkgPrefixes, props + .getProperty(Context.URL_PKG_PREFIXES)); + assertEquals(appender.securityPrincipalName, props + .getProperty(Context.SECURITY_PRINCIPAL)); + assertEquals(appender.securityCredentials, props + .getProperty(Context.SECURITY_CREDENTIALS)); + + assertEquals(1, context.getStatusManager().getCount()); + } + + public void testBuildEnvPropertiesWithNullCredentials() { + appender.initialContextFactoryName = "icfn"; + appender.providerURL = "url"; + appender.urlPkgPrefixes = "pkgPref"; + appender.securityPrincipalName = "user"; + appender.securityCredentials = null; + + Properties props = appender.buildEnvProperties(); + assertEquals(4, props.size()); + assertEquals(appender.initialContextFactoryName, props + .getProperty(Context.INITIAL_CONTEXT_FACTORY)); + assertEquals(appender.providerURL, props.getProperty(Context.PROVIDER_URL)); + assertEquals(appender.urlPkgPrefixes, props + .getProperty(Context.URL_PKG_PREFIXES)); + assertEquals(appender.securityPrincipalName, props + .getProperty(Context.SECURITY_PRINCIPAL)); + assertEquals(null, props + .getProperty(Context.SECURITY_CREDENTIALS)); + + assertEquals(1, context.getStatusManager().getCount()); + } + + public void testBuildEnvPropertiesWithPkgNull() { + appender.initialContextFactoryName = "icfn"; + appender.providerURL = "url"; + appender.urlPkgPrefixes = null; + appender.securityPrincipalName = "user"; + appender.securityCredentials = "cred"; + + Properties props = appender.buildEnvProperties(); + assertEquals(4, props.size()); + assertEquals(appender.initialContextFactoryName, props + .getProperty(Context.INITIAL_CONTEXT_FACTORY)); + assertEquals(appender.providerURL, props.getProperty(Context.PROVIDER_URL)); + assertEquals(null, props + .getProperty(Context.URL_PKG_PREFIXES)); + assertEquals(appender.securityPrincipalName, props + .getProperty(Context.SECURITY_PRINCIPAL)); + assertEquals(appender.securityCredentials, props + .getProperty(Context.SECURITY_CREDENTIALS)); + + assertEquals(0, context.getStatusManager().getCount()); + } + + public void testStartMinimalInfo() { + //let's leave only what's in the setup() + //method, minus the providerURL + appender.providerURL = null; + appender.start(); + + assertTrue(appender.isStarted()); + + try { + assertEquals(appender.queueBindingName, appender.queueSender.getQueue().getQueueName()); + } catch (Exception e) { + fail(); + } + } + + public void testStartUserPass() { + appender.userName = ""; + appender.password = ""; + + appender.start(); + + assertTrue(appender.isStarted()); + + try { + assertEquals(appender.queueBindingName, appender.queueSender.getQueue().getQueueName()); + } catch (Exception e) { + fail(); + } + } + + public void testStartFails() { + appender.queueBindingName = null; + + appender.start(); + + assertFalse(appender.isStarted()); + } + + private LoggingEvent createLoggingEvent() { + LoggingEvent le = new LoggingEvent(); + le.setLevel(Level.DEBUG); + le.setMessage("test message"); + le.setTimeStamp(System.currentTimeMillis()); + le.setThreadName(Thread.currentThread().getName()); + return le; + } +} Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTest.java ============================================================================== --- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTest.java (original) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/JMSTopicAppenderTest.java Thu Jan 11 14:36:49 2007 @@ -167,7 +167,7 @@ public void testStartMinimalInfo() { //let's leave only what's in the setup() //method, minus the providerURL - appender.providerURL = "url"; + appender.providerURL = null; appender.start(); assertTrue(appender.isStarted()); Added: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueue.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueue.java Thu Jan 11 14:36:49 2007 @@ -0,0 +1,18 @@ +package ch.qos.logback.classic.net.mock; + +import javax.jms.JMSException; +import javax.jms.Queue; + +public class MockQueue implements Queue { + + String name; + + public MockQueue(String name) { + this.name = name; + } + + public String getQueueName() throws JMSException { + return name; + } + +} Added: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueConnection.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueConnection.java Thu Jan 11 14:36:49 2007 @@ -0,0 +1,83 @@ +package ch.qos.logback.classic.net.mock; + +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; + +public class MockQueueConnection implements QueueConnection { + + MockQueueSession session = new MockQueueSession(); + + public QueueSession createQueueSession(boolean arg0, int arg1) throws JMSException { + return session; + } + + public ConnectionConsumer createConnectionConsumer(Queue arg0, String arg1, ServerSessionPool arg2, int arg3) throws JMSException { + + return null; + } + + public void close() throws JMSException { + + + } + + public ConnectionConsumer createConnectionConsumer(Destination arg0, String arg1, ServerSessionPool arg2, int arg3) throws JMSException { + + return null; + } + + public ConnectionConsumer createDurableConnectionConsumer(Topic arg0, String arg1, String arg2, ServerSessionPool arg3, int arg4) throws JMSException { + + return null; + } + + public Session createSession(boolean arg0, int arg1) throws JMSException { + + return null; + } + + public String getClientID() throws JMSException { + + return null; + } + + public ExceptionListener getExceptionListener() throws JMSException { + + return null; + } + + public ConnectionMetaData getMetaData() throws JMSException { + + return null; + } + + public void setClientID(String arg0) throws JMSException { + + + } + + public void setExceptionListener(ExceptionListener arg0) throws JMSException { + + + } + + public void start() throws JMSException { + + + } + + public void stop() throws JMSException { + + + } + +} Added: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueConnectionFactory.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueConnectionFactory.java Thu Jan 11 14:36:49 2007 @@ -0,0 +1,29 @@ +package ch.qos.logback.classic.net.mock; + +import javax.jms.Connection; +import javax.jms.JMSException; +import javax.jms.QueueConnection; +import javax.jms.QueueConnectionFactory; + +public class MockQueueConnectionFactory implements QueueConnectionFactory { + + MockQueueConnection cnx = new MockQueueConnection(); + + public QueueConnection createQueueConnection() throws JMSException { + return cnx; + } + + public QueueConnection createQueueConnection(String user, String pass) throws JMSException { + + return cnx; + } + + public Connection createConnection() throws JMSException { + return null; + } + + public Connection createConnection(String arg0, String arg1) throws JMSException { + return null; + } + +} Added: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueSender.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueSender.java Thu Jan 11 14:36:49 2007 @@ -0,0 +1,121 @@ +package ch.qos.logback.classic.net.mock; + +import java.util.ArrayList; +import java.util.List; + +import javax.jms.Destination; +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.Queue; +import javax.jms.QueueSender; + +public class MockQueueSender implements QueueSender { + + List<Message> messageList = new ArrayList<Message>(); + Queue queue; + + public MockQueueSender(Queue queue) { + this.queue = queue; + } + + public List<Message> getMessageList() { + return messageList; + } + + public Queue getQueue() throws JMSException { + return queue; + } + + public void send(Message message) throws JMSException { + messageList.add(message); + + } + + public void send(Queue arg0, Message arg1) throws JMSException { + + + } + + public void send(Message arg0, int arg1, int arg2, long arg3) throws JMSException { + + + } + + public void send(Queue arg0, Message arg1, int arg2, int arg3, long arg4) throws JMSException { + + + } + + public void close() throws JMSException { + + + } + + public int getDeliveryMode() throws JMSException { + + return 0; + } + + public Destination getDestination() throws JMSException { + + return null; + } + + public boolean getDisableMessageID() throws JMSException { + + return false; + } + + public boolean getDisableMessageTimestamp() throws JMSException { + + return false; + } + + public int getPriority() throws JMSException { + + return 0; + } + + public long getTimeToLive() throws JMSException { + + return 0; + } + + public void send(Destination arg0, Message arg1) throws JMSException { + + + } + + public void send(Destination arg0, Message arg1, int arg2, int arg3, long arg4) throws JMSException { + + + } + + public void setDeliveryMode(int arg0) throws JMSException { + + + } + + public void setDisableMessageID(boolean arg0) throws JMSException { + + + } + + public void setDisableMessageTimestamp(boolean arg0) throws JMSException { + + + } + + public void setPriority(int arg0) throws JMSException { + + + } + + public void setTimeToLive(long arg0) throws JMSException { + + + } + + + +} Added: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueSession.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockQueueSession.java Thu Jan 11 14:36:49 2007 @@ -0,0 +1,195 @@ +package ch.qos.logback.classic.net.mock; + +import java.io.Serializable; + +import javax.jms.BytesMessage; +import javax.jms.Destination; +import javax.jms.JMSException; +import javax.jms.MapMessage; +import javax.jms.Message; +import javax.jms.MessageConsumer; +import javax.jms.MessageListener; +import javax.jms.MessageProducer; +import javax.jms.ObjectMessage; +import javax.jms.Queue; +import javax.jms.QueueBrowser; +import javax.jms.QueueReceiver; +import javax.jms.QueueSender; +import javax.jms.QueueSession; +import javax.jms.StreamMessage; +import javax.jms.TemporaryQueue; +import javax.jms.TemporaryTopic; +import javax.jms.TextMessage; +import javax.jms.Topic; +import javax.jms.TopicSubscriber; + +public class MockQueueSession implements QueueSession { + + public ObjectMessage createObjectMessage() throws JMSException { + return new MockObjectMessage(); + } + + public QueueSender createSender(Queue queue) throws JMSException { + if (queue == null) { + return null; + } + return new MockQueueSender(queue); + } + + public QueueBrowser createBrowser(Queue arg0) throws JMSException { + + return null; + } + + public QueueBrowser createBrowser(Queue arg0, String arg1) throws JMSException { + + return null; + } + + public Queue createQueue(String arg0) throws JMSException { + + return null; + } + + public QueueReceiver createReceiver(Queue arg0) throws JMSException { + + return null; + } + + public QueueReceiver createReceiver(Queue arg0, String arg1) throws JMSException { + + return null; + } + + public TemporaryQueue createTemporaryQueue() throws JMSException { + + return null; + } + + public void close() throws JMSException { + + + } + + public void commit() throws JMSException { + + + } + + public BytesMessage createBytesMessage() throws JMSException { + + return null; + } + + public MessageConsumer createConsumer(Destination arg0) throws JMSException { + + return null; + } + + public MessageConsumer createConsumer(Destination arg0, String arg1) throws JMSException { + + return null; + } + + public MessageConsumer createConsumer(Destination arg0, String arg1, boolean arg2) throws JMSException { + + return null; + } + + public TopicSubscriber createDurableSubscriber(Topic arg0, String arg1) throws JMSException { + + return null; + } + + public TopicSubscriber createDurableSubscriber(Topic arg0, String arg1, String arg2, boolean arg3) throws JMSException { + + return null; + } + + public MapMessage createMapMessage() throws JMSException { + + return null; + } + + public Message createMessage() throws JMSException { + + return null; + } + + public ObjectMessage createObjectMessage(Serializable arg0) throws JMSException { + + return null; + } + + public MessageProducer createProducer(Destination arg0) throws JMSException { + + return null; + } + + public StreamMessage createStreamMessage() throws JMSException { + + return null; + } + + public TemporaryTopic createTemporaryTopic() throws JMSException { + + return null; + } + + public TextMessage createTextMessage() throws JMSException { + + return null; + } + + public TextMessage createTextMessage(String arg0) throws JMSException { + + return null; + } + + public Topic createTopic(String arg0) throws JMSException { + + return null; + } + + public int getAcknowledgeMode() throws JMSException { + + return 0; + } + + public MessageListener getMessageListener() throws JMSException { + + return null; + } + + public boolean getTransacted() throws JMSException { + + return false; + } + + public void recover() throws JMSException { + + + } + + public void rollback() throws JMSException { + + + } + + public void run() { + + + } + + public void setMessageListener(MessageListener arg0) throws JMSException { + + + } + + public void unsubscribe(String arg0) throws JMSException { + + + } + + +}