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    }