| /** |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.activemq.ra; |
| |
| import javax.jms.Destination; |
| import javax.jms.JMSException; |
| import javax.jms.Message; |
| import javax.jms.MessageProducer; |
| import javax.jms.Queue; |
| import javax.jms.QueueSender; |
| import javax.jms.Topic; |
| import javax.jms.TopicPublisher; |
| |
| /** |
| * An implementation of {@link MessageProducer} which uses the ActiveMQ JCA ResourceAdapter's |
| * current thread's JMS {@link javax.jms.Session} to send messages. |
| * |
| * |
| */ |
| public class InboundMessageProducerProxy implements MessageProducer, QueueSender, TopicPublisher { |
| |
| private MessageProducer messageProducer; |
| private Destination destination; |
| private int deliveryMode; |
| private boolean disableMessageID; |
| private boolean disableMessageTimestamp; |
| private int priority; |
| private long timeToLive; |
| |
| public InboundMessageProducerProxy(MessageProducer messageProducer, Destination destination) throws JMSException { |
| this.messageProducer = messageProducer; |
| this.destination = destination; |
| |
| this.deliveryMode = messageProducer.getDeliveryMode(); |
| this.disableMessageID = messageProducer.getDisableMessageID(); |
| this.disableMessageTimestamp = messageProducer.getDisableMessageTimestamp(); |
| this.priority = messageProducer.getPriority(); |
| this.timeToLive = messageProducer.getTimeToLive(); |
| } |
| |
| public void close() throws JMSException { |
| // do nothing as we just go back into the pool |
| // though lets reset the various settings which may have been changed |
| messageProducer.setDeliveryMode(deliveryMode); |
| messageProducer.setDisableMessageID(disableMessageID); |
| messageProducer.setDisableMessageTimestamp(disableMessageTimestamp); |
| messageProducer.setPriority(priority); |
| messageProducer.setTimeToLive(timeToLive); |
| } |
| |
| public Destination getDestination() throws JMSException { |
| return destination; |
| } |
| |
| public int getDeliveryMode() throws JMSException { |
| return messageProducer.getDeliveryMode(); |
| } |
| |
| public boolean getDisableMessageID() throws JMSException { |
| return messageProducer.getDisableMessageID(); |
| } |
| |
| public boolean getDisableMessageTimestamp() throws JMSException { |
| return messageProducer.getDisableMessageTimestamp(); |
| } |
| |
| public int getPriority() throws JMSException { |
| return messageProducer.getPriority(); |
| } |
| |
| public long getTimeToLive() throws JMSException { |
| return messageProducer.getTimeToLive(); |
| } |
| |
| public void send(Destination destination, Message message) throws JMSException { |
| if (destination == null) { |
| destination = this.destination; |
| } |
| messageProducer.send(destination, message); |
| } |
| |
| public void send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive) throws JMSException { |
| if (destination == null) { |
| destination = this.destination; |
| } |
| messageProducer.send(destination, message, deliveryMode, priority, timeToLive); |
| } |
| |
| public void send(Message message) throws JMSException { |
| messageProducer.send(destination, message); |
| } |
| |
| public void send(Message message, int deliveryMode, int priority, long timeToLive) throws JMSException { |
| messageProducer.send(destination, message, deliveryMode, priority, timeToLive); |
| } |
| |
| public void setDeliveryMode(int i) throws JMSException { |
| messageProducer.setDeliveryMode(i); |
| } |
| |
| public void setDisableMessageID(boolean b) throws JMSException { |
| messageProducer.setDisableMessageID(b); |
| } |
| |
| public void setDisableMessageTimestamp(boolean b) throws JMSException { |
| messageProducer.setDisableMessageTimestamp(b); |
| } |
| |
| public void setPriority(int i) throws JMSException { |
| messageProducer.setPriority(i); |
| } |
| |
| public void setTimeToLive(long l) throws JMSException { |
| messageProducer.setTimeToLive(l); |
| } |
| |
| public Queue getQueue() throws JMSException { |
| return (Queue) messageProducer.getDestination(); |
| } |
| |
| public void send(Queue arg0, Message arg1) throws JMSException { |
| messageProducer.send(arg0, arg1); |
| } |
| |
| public void send(Queue arg0, Message arg1, int arg2, int arg3, long arg4) throws JMSException { |
| messageProducer.send(arg0, arg1, arg2, arg3, arg4); |
| } |
| |
| public Topic getTopic() throws JMSException { |
| return (Topic) messageProducer.getDestination(); |
| } |
| |
| public void publish(Message arg0) throws JMSException { |
| messageProducer.send(arg0); |
| } |
| |
| public void publish(Message arg0, int arg1, int arg2, long arg3) throws JMSException { |
| messageProducer.send(arg0, arg1, arg2, arg3); |
| } |
| |
| public void publish(Topic arg0, Message arg1) throws JMSException { |
| messageProducer.send(arg0, arg1); |
| } |
| |
| public void publish(Topic arg0, Message arg1, int arg2, int arg3, long arg4) throws JMSException { |
| messageProducer.send(arg0, arg1, arg2, arg3, arg4); |
| } |
| } |