001 /**
002 *
003 * Copyright 2003-2004 The Apache Software Foundation
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 //
019 // This source code implements specifications defined by the Java
020 // Community Process. In order to remain compliant with the specification
021 // DO NOT add / change / or delete method signatures!
022 //
023
024 package javax.jms;
025
026 /**
027 * @version $Rev: 46019 $ $Date: 2004-09-14 02:56:06 -0700 (Tue, 14 Sep 2004) $
028 */
029 public class QueueRequestor {
030 private QueueSession session;
031 private TemporaryQueue temporaryQueue;
032 private QueueSender sender;
033 private QueueReceiver receiver;
034
035 public QueueRequestor(QueueSession session, Queue queue)
036 throws JMSException
037 {
038 super();
039
040 if(queue == null) {
041 throw new InvalidDestinationException("Invalid queue");
042 }
043
044 setSession(session);
045 setTemporaryQueue(session.createTemporaryQueue());
046 setSender(session.createSender(queue));
047 setReceiver(session.createReceiver(getTemporaryQueue()));
048 }
049
050 public Message request(Message message) throws JMSException {
051 message.setJMSReplyTo(getTemporaryQueue());
052 getSender().send(message);
053 return getReceiver().receive();
054 }
055
056 public void close() throws JMSException {
057 getSession().close();
058 getTemporaryQueue().delete();
059 }
060
061 private void setReceiver(QueueReceiver receiver) {
062 this.receiver = receiver;
063 }
064
065 private QueueReceiver getReceiver() {
066 return receiver;
067 }
068
069 private void setSender(QueueSender sender) {
070 this.sender = sender;
071 }
072
073 private QueueSender getSender() {
074 return sender;
075 }
076
077 private void setSession(QueueSession session) {
078 this.session = session;
079 }
080
081 private QueueSession getSession() {
082 return session;
083 }
084
085 private void setTemporaryQueue(TemporaryQueue temporaryQueue) {
086 this.temporaryQueue = temporaryQueue;
087 }
088
089 private TemporaryQueue getTemporaryQueue() {
090 return temporaryQueue;
091 }
092 }