package com.google.pubsub.jms.light;
import javax.jms.CompletionListener;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;
/**
* Default PubSub {@link MessageProducer} implementation.
*
* @author Maksym Prokhorenko
*/
public abstract class AbstractMessageProducer implements MessageProducer {
private final Destination destination;
private final Session session;
private boolean closed;
private boolean disableMessageId;
private boolean disableTimestamp;
private int deliveryMode = Message.DEFAULT_DELIVERY_MODE;
private int priority = Message.DEFAULT_PRIORITY;
private long timeToLive = Message.DEFAULT_TIME_TO_LIVE;
private long deliveryDelay = Message.DEFAULT_DELIVERY_DELAY;
/**
* Default constructor.
* @param session is a jms session.
* @param destination is a jms destination.
*/
public AbstractMessageProducer(final Session session, final Destination destination) {
this.destination = destination;
this.session = session;
}
protected Session getSession() {
return session;
}
@Override
public void setDisableMessageID(final boolean disableMessageId) throws JMSException {
this.disableMessageId = disableMessageId;
}
@Override
public boolean getDisableMessageID() throws JMSException {
return disableMessageId;
}
@Override
public void setDisableMessageTimestamp(final boolean disableTimestamp) throws JMSException {
this.disableTimestamp = disableTimestamp;
}
@Override
public boolean getDisableMessageTimestamp() throws JMSException {
return disableTimestamp;
}
@Override
public void setDeliveryMode(final int deliveryMode) throws JMSException {
this.deliveryMode = deliveryMode;
}
@Override
public int getDeliveryMode() throws JMSException {
return deliveryMode;
}
@Override
public void setPriority(final int defaultPriority) throws JMSException {
this.priority = defaultPriority;
}
@Override
public int getPriority() throws JMSException {
return priority;
}
@Override
public void setTimeToLive(final long timeToLive) throws JMSException {
this.timeToLive = timeToLive;
}
@Override
public long getTimeToLive() throws JMSException {
return timeToLive;
}
@Override
public void setDeliveryDelay(final long deliveryDelay) throws JMSException {
this.deliveryDelay = deliveryDelay;
}
@Override
public long getDeliveryDelay() throws JMSException {
return deliveryDelay;
}
@Override
public Destination getDestination() throws JMSException {
return destination;
}
@Override
public void close() throws JMSException {
closed = true;
}
protected boolean isClosed() {
return closed;
}
@Override
public void send(final Message message) throws JMSException {
send(destination, message, deliveryMode, priority, timeToLive, null);
}
@Override
public void send(final Message message,
final int deliveryMode,
final int priority,
final long timeToLive) throws JMSException {
send(destination, message, deliveryMode, priority, timeToLive, null);
}
@Override
public void send(final Destination destination,
final Message message) throws JMSException {
send(destination, message, deliveryMode, priority, timeToLive, null);
}
@Override
public void send(final Destination destination,
final Message message,
final int deliveryMode,
final int priority,
final long timeToLive) throws JMSException {
send(destination, message, deliveryMode, priority, timeToLive, null);
}
@Override
public void send(final Message message,
final CompletionListener completionListener) throws JMSException {
send(getDestination(),
message, deliveryMode, priority, timeToLive, completionListener);
}
@Override
public void send(final Message message,
final int deliveryMode,
final int priority,
final long timeToLive,
final CompletionListener completionListener) throws JMSException {
send(destination, message, deliveryMode, priority, timeToLive, completionListener);
}
@Override
public void send(final Destination destination,
final Message message,
final CompletionListener completionListener) throws JMSException {
send(destination, message, deliveryMode, priority, timeToLive, completionListener);
}
}