View Javadoc

1   /*** 
2    * 
3    * Copyright 2004 Hiram Chirino
4    * 
5    * Licensed under the Apache License, Version 2.0 (the "License"); 
6    * you may not use this file except in compliance with the License. 
7    * You may obtain a copy of the License at 
8    * 
9    * http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS, 
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
14   * See the License for the specific language governing permissions and 
15   * limitations under the License. 
16   * 
17   **/
18  package org.codehaus.activemq.ra;
19  
20  import javax.jms.*;
21  import java.io.Serializable;
22  
23  
24  /***
25   * Acts as a pass through proxy for a JMS Session object.
26   * It intercepts events that are of interest of the ActiveMQManagedConnection.
27   *
28   * @version $Revision: 1.8 $
29   */
30  public class JMSSessionProxy implements Session, QueueSession, TopicSession {
31  
32  
33      private final ActiveMQManagedConnection managedConnection;
34      boolean closed=false;
35  
36  	public JMSSessionProxy(ActiveMQManagedConnection managedConnection) {
37  		this.managedConnection = managedConnection;
38      }
39  
40      /***
41       * @throws JMSException
42       */
43      public void close() throws JMSException {
44          cleanup();
45      }
46  
47      /***
48       * Called by the ActiveMQManagedConnection to invalidate this proxy.
49       */
50      public void cleanup() {
51      	closed=true;
52      }
53  
54      /***
55       * 
56       */
57      private Session getSession() throws JMSException {
58          if (closed) {
59              throw new JMSException("Session closed.");
60          }
61          return managedConnection.getPhysicalSession();
62      }
63  
64      /***
65       * @throws JMSException
66       */
67      public void commit() throws JMSException {
68          getSession().commit();
69      }
70  
71      /***
72       * @param queue
73       * @return
74       * @throws JMSException
75       */
76      public QueueBrowser createBrowser(Queue queue) throws JMSException {
77          return getSession().createBrowser(queue);
78      }
79  
80      /***
81       * @param queue
82       * @param messageSelector
83       * @return
84       * @throws JMSException
85       */
86      public QueueBrowser createBrowser(Queue queue, String messageSelector)
87              throws JMSException {
88          return getSession().createBrowser(queue, messageSelector);
89      }
90  
91      /***
92       * @return
93       * @throws JMSException
94       */
95      public BytesMessage createBytesMessage() throws JMSException {
96          return getSession().createBytesMessage();
97      }
98  
99      /***
100      * @param destination
101      * @return
102      * @throws JMSException
103      */
104     public MessageConsumer createConsumer(Destination destination)
105             throws JMSException {
106         return getSession().createConsumer(destination);
107     }
108 
109     /***
110      * @param destination
111      * @param messageSelector
112      * @return
113      * @throws JMSException
114      */
115     public MessageConsumer createConsumer(Destination destination,
116                                           String messageSelector) throws JMSException {
117         return getSession().createConsumer(destination, messageSelector);
118     }
119 
120     /***
121      * @param destination
122      * @param messageSelector
123      * @param NoLocal
124      * @return
125      * @throws JMSException
126      */
127     public MessageConsumer createConsumer(Destination destination,
128                                           String messageSelector, boolean NoLocal) throws JMSException {
129         return getSession().createConsumer(destination, messageSelector, NoLocal);
130     }
131 
132     /***
133      * @param topic
134      * @param name
135      * @return
136      * @throws JMSException
137      */
138     public TopicSubscriber createDurableSubscriber(Topic topic, String name)
139             throws JMSException {
140         return getSession().createDurableSubscriber(topic, name);
141     }
142 
143     /***
144      * @param topic
145      * @param name
146      * @param messageSelector
147      * @param noLocal
148      * @return
149      * @throws JMSException
150      */
151     public TopicSubscriber createDurableSubscriber(Topic topic, String name,
152                                                    String messageSelector, boolean noLocal) throws JMSException {
153         return getSession().createDurableSubscriber(topic, name, messageSelector,
154                 noLocal);
155     }
156 
157     /***
158      * @return
159      * @throws JMSException
160      */
161     public MapMessage createMapMessage() throws JMSException {
162         return getSession().createMapMessage();
163     }
164 
165     /***
166      * @return
167      * @throws JMSException
168      */
169     public Message createMessage() throws JMSException {
170         return getSession().createMessage();
171     }
172 
173     /***
174      * @return
175      * @throws JMSException
176      */
177     public ObjectMessage createObjectMessage() throws JMSException {
178         return getSession().createObjectMessage();
179     }
180 
181     /***
182      * @param object
183      * @return
184      * @throws JMSException
185      */
186     public ObjectMessage createObjectMessage(Serializable object)
187             throws JMSException {
188         return getSession().createObjectMessage(object);
189     }
190 
191     /***
192      * @param destination
193      * @return
194      * @throws JMSException
195      */
196     public MessageProducer createProducer(Destination destination)
197             throws JMSException {
198         return getSession().createProducer(destination);
199     }
200 
201     /***
202      * @param queueName
203      * @return
204      * @throws JMSException
205      */
206     public Queue createQueue(String queueName) throws JMSException {
207         return getSession().createQueue(queueName);
208     }
209 
210     /***
211      * @return
212      * @throws JMSException
213      */
214     public StreamMessage createStreamMessage() throws JMSException {
215         return getSession().createStreamMessage();
216     }
217 
218     /***
219      * @return
220      * @throws JMSException
221      */
222     public TemporaryQueue createTemporaryQueue() throws JMSException {
223         return getSession().createTemporaryQueue();
224     }
225 
226     /***
227      * @return
228      * @throws JMSException
229      */
230     public TemporaryTopic createTemporaryTopic() throws JMSException {
231         return getSession().createTemporaryTopic();
232     }
233 
234     /***
235      * @return
236      * @throws JMSException
237      */
238     public TextMessage createTextMessage() throws JMSException {
239         return getSession().createTextMessage();
240     }
241 
242     /***
243      * @param text
244      * @return
245      * @throws JMSException
246      */
247     public TextMessage createTextMessage(String text) throws JMSException {
248         return getSession().createTextMessage(text);
249     }
250 
251     /***
252      * @param topicName
253      * @return
254      * @throws JMSException
255      */
256     public Topic createTopic(String topicName) throws JMSException {
257         return getSession().createTopic(topicName);
258     }
259 
260     /***
261      * @return
262      * @throws JMSException
263      */
264     public int getAcknowledgeMode() throws JMSException {
265         return getSession().getAcknowledgeMode();
266     }
267 
268     /***
269      * @return
270      * @throws JMSException
271      */
272     public MessageListener getMessageListener() throws JMSException {
273         return getSession().getMessageListener();
274     }
275 
276     /***
277      * @return
278      * @throws JMSException
279      */
280     public boolean getTransacted() throws JMSException {
281         return getSession().getTransacted();
282     }
283 
284     /***
285      * @throws JMSException
286      */
287     public void recover() throws JMSException {
288         getSession().recover();
289     }
290 
291     /***
292      * @throws JMSException
293      */
294     public void rollback() throws JMSException {
295         getSession().rollback();
296     }
297 
298     /***
299      * @param listener
300      * @throws JMSException
301      */
302     public void setMessageListener(MessageListener listener)
303             throws JMSException {
304         getSession().setMessageListener(listener);
305     }
306 
307 
308     /***
309      * @param name
310      * @throws JMSException
311      */
312     public void unsubscribe(String name) throws JMSException {
313         getSession().unsubscribe(name);
314     }
315 
316     /***
317      * @param queue
318      * @return
319      * @throws JMSException
320      */
321     public QueueReceiver createReceiver(Queue queue) throws JMSException {
322         return ((QueueSession) getSession()).createReceiver(queue);
323     }
324 
325     /***
326      * @param queue
327      * @param messageSelector
328      * @return
329      * @throws JMSException
330      */
331     public QueueReceiver createReceiver(Queue queue, String messageSelector)
332             throws JMSException {
333         return ((QueueSession) getSession()).createReceiver(queue, messageSelector);
334     }
335 
336     /***
337      * @param queue
338      * @return
339      * @throws JMSException
340      */
341     public QueueSender createSender(Queue queue) throws JMSException {
342         return ((QueueSession) getSession()).createSender(queue);
343     }
344 
345     /***
346      * @param topic
347      * @return
348      * @throws JMSException
349      */
350     public TopicPublisher createPublisher(Topic topic) throws JMSException {
351         return ((TopicSession) getSession()).createPublisher(topic);
352     }
353 
354     /***
355      * @param topic
356      * @return
357      * @throws JMSException
358      */
359     public TopicSubscriber createSubscriber(Topic topic) throws JMSException {
360         return ((TopicSession) getSession()).createSubscriber(topic);
361     }
362 
363     /***
364      * @param topic
365      * @param messageSelector
366      * @param noLocal
367      * @return
368      * @throws JMSException
369      */
370     public TopicSubscriber createSubscriber(Topic topic,
371                                             String messageSelector, boolean noLocal) throws JMSException {
372         return ((TopicSession) getSession()).createSubscriber(topic, messageSelector, noLocal);
373     }
374 
375     /***
376      * @see javax.jms.Session#run()
377      */
378     public void run() {
379         throw new RuntimeException("Operation not supported.");
380     }
381 
382 }