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 TopicRequestor {
030 private TopicSession session;
031 private Topic topic;
032 private TemporaryTopic temporaryTopic;
033 private TopicPublisher publisher;
034 private TopicSubscriber subscriber;
035
036 public TopicRequestor(TopicSession session, Topic topic)
037 throws JMSException {
038 super();
039 setSession(session);
040 setTopic(topic);
041 setTemporaryTopic(session.createTemporaryTopic());
042 setPublisher(session.createPublisher(topic));
043 setSubscriber(session.createSubscriber(getTemporaryTopic()));
044 }
045
046 public Message request(Message message) throws JMSException {
047 message.setJMSReplyTo(getTemporaryTopic());
048 getPublisher().publish(message);
049 return (getSubscriber().receive());
050 }
051
052 public void close() throws JMSException {
053 getSession().close();
054 getTemporaryTopic().delete();
055 }
056
057 private void setPublisher(TopicPublisher publisher) {
058 this.publisher = publisher;
059 }
060
061 private TopicPublisher getPublisher() {
062 return publisher;
063 }
064
065 private void setSession(TopicSession session) {
066 this.session = session;
067 }
068
069 private TopicSession getSession() {
070 return session;
071 }
072
073 private void setSubscriber(TopicSubscriber subscriber) {
074 this.subscriber = subscriber;
075 }
076
077 private TopicSubscriber getSubscriber() {
078 return subscriber;
079 }
080
081 private void setTemporaryTopic(TemporaryTopic temporaryTopic) {
082 this.temporaryTopic = temporaryTopic;
083 }
084
085 private TemporaryTopic getTemporaryTopic() {
086 return temporaryTopic;
087 }
088
089 private void setTopic(Topic topic) {
090 this.topic = topic;
091 }
092
093 private Topic getTopic() {
094 return topic;
095 }
096 }