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 }