001 /**
002 *
003 * Copyright 2004 Protique Ltd
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 package org.activemq.ra.jms;
019
020 import javax.jms.Destination;
021 import javax.jms.JMSException;
022 import javax.jms.Message;
023 import javax.jms.MessageProducer;
024 import javax.jms.Queue;
025 import javax.jms.QueueSender;
026 import javax.jms.Topic;
027 import javax.jms.TopicPublisher;
028
029 /**
030 * An implementation of {@link MessageProducer} which uses the ActiveMQ JCA ResourceAdapter's
031 * current thread's JMS {@link javax.jms.Session} to send messages.
032 *
033 * @version $Revision: 1.1.1.1 $
034 */
035 public class MessageProducerProxy implements MessageProducer, QueueSender, TopicPublisher {
036
037 private MessageProducer messageProducer;
038 private Destination destination;
039 private int deliveryMode;
040 private boolean disableMessageID;
041 private boolean disableMessageTimestamp;
042 private int priority;
043 private long timeToLive;
044
045 public MessageProducerProxy(MessageProducer messageProducer, Destination destination) throws JMSException {
046 this.messageProducer = messageProducer;
047 this.destination = destination;
048
049 this.deliveryMode = messageProducer.getDeliveryMode();
050 this.disableMessageID = messageProducer.getDisableMessageID();
051 this.disableMessageTimestamp = messageProducer.getDisableMessageTimestamp();
052 this.priority = messageProducer.getPriority();
053 this.timeToLive = messageProducer.getTimeToLive();
054 }
055
056 public void close() throws JMSException {
057 // do nothing as we just go back into the pool
058 // though lets reset the various settings which may have been changed
059 messageProducer.setDeliveryMode(deliveryMode);
060 messageProducer.setDisableMessageID(disableMessageID);
061 messageProducer.setDisableMessageTimestamp(disableMessageTimestamp);
062 messageProducer.setPriority(priority);
063 messageProducer.setTimeToLive(timeToLive);
064 }
065
066 public Destination getDestination() throws JMSException {
067 return destination;
068 }
069
070 public int getDeliveryMode() throws JMSException {
071 return messageProducer.getDeliveryMode();
072 }
073
074 public boolean getDisableMessageID() throws JMSException {
075 return messageProducer.getDisableMessageID();
076 }
077
078 public boolean getDisableMessageTimestamp() throws JMSException {
079 return messageProducer.getDisableMessageTimestamp();
080 }
081
082 public int getPriority() throws JMSException {
083 return messageProducer.getPriority();
084 }
085
086 public long getTimeToLive() throws JMSException {
087 return messageProducer.getTimeToLive();
088 }
089
090 public void send(Destination destination, Message message) throws JMSException {
091 if (destination == null) {
092 destination = this.destination;
093 }
094 messageProducer.send(destination, message);
095 }
096
097 public void send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive) throws JMSException {
098 if (destination == null) {
099 destination = this.destination;
100 }
101 messageProducer.send(destination, message, deliveryMode, priority, timeToLive);
102 }
103
104 public void send(Message message) throws JMSException {
105 messageProducer.send(destination, message);
106 }
107
108 public void send(Message message, int deliveryMode, int priority, long timeToLive) throws JMSException {
109 messageProducer.send(destination, message, deliveryMode, priority, timeToLive);
110 }
111
112 public void setDeliveryMode(int i) throws JMSException {
113 messageProducer.setDeliveryMode(i);
114 }
115
116 public void setDisableMessageID(boolean b) throws JMSException {
117 messageProducer.setDisableMessageID(b);
118 }
119
120 public void setDisableMessageTimestamp(boolean b) throws JMSException {
121 messageProducer.setDisableMessageTimestamp(b);
122 }
123
124 public void setPriority(int i) throws JMSException {
125 messageProducer.setPriority(i);
126 }
127
128 public void setTimeToLive(long l) throws JMSException {
129 messageProducer.setTimeToLive(l);
130 }
131
132 public Queue getQueue() throws JMSException {
133 return (Queue) messageProducer.getDestination();
134 }
135
136 public void send(Queue arg0, Message arg1) throws JMSException {
137 messageProducer.send(arg0, arg1);
138 }
139
140 public void send(Queue arg0, Message arg1, int arg2, int arg3, long arg4) throws JMSException {
141 messageProducer.send(arg0, arg1, arg2, arg3, arg4);
142 }
143
144 public Topic getTopic() throws JMSException {
145 return (Topic) messageProducer.getDestination();
146 }
147
148 public void publish(Message arg0) throws JMSException {
149 messageProducer.send(arg0);
150 }
151
152 public void publish(Message arg0, int arg1, int arg2, long arg3) throws JMSException {
153 messageProducer.send(arg0, arg1, arg2, arg3);
154 }
155
156 public void publish(Topic arg0, Message arg1) throws JMSException {
157 messageProducer.send(arg0, arg1);
158 }
159
160 public void publish(Topic arg0, Message arg1, int arg2, int arg3, long arg4) throws JMSException {
161 messageProducer.send(arg0, arg1, arg2, arg3, arg4);
162 }
163 }