001    package com.mockrunner.mock.jms;
002    
003    import javax.jms.JMSException;
004    import javax.jms.QueueSession;
005    import javax.jms.ServerSession;
006    import javax.jms.Session;
007    
008    /**
009     * Mock implementation of JMS <code>ServerSession</code>.
010     * The <code>ServerSession</code> is not meant for application
011     * use. This simple implementation only returns a
012     * {@link MockSession} when calling {@link #getSession}.
013     */
014    public class MockServerSession implements ServerSession
015    {
016        private MockConnection connection;
017        private Session session;
018        private boolean started;
019        
020        public MockServerSession(MockConnection connection)
021        {
022            this.connection = connection;
023            session = new MockSession(connection, false, QueueSession.AUTO_ACKNOWLEDGE);
024            started = false;
025        }
026        
027        /**
028         * Returns if this server session was started.
029         * @return <code>true</code> if this server session is started
030         */
031        public boolean isStarted()
032        {
033            return started;
034        }
035        
036        public void setSession(Session session)
037        {
038            this.session = session;
039        }
040        
041        public Session getSession() throws JMSException
042        {
043            connection.throwJMSException();
044            return session;
045        }
046    
047        public void start() throws JMSException
048        {
049            connection.throwJMSException();
050            started = true;
051        }
052    }