package com.google.pubsub.jms.light.message; import com.google.common.base.Charsets; import java.util.logging.Logger; import javax.jms.Destination; import javax.jms.JMSException; /** * Default PubSub {@link javax.jms.Message} implementation. * * @author Maksym Prokhorenko */ public abstract class AbstractPubSubMessage extends AbstractPropertyMessage { private static final Logger LOGGER = Logger.getLogger(AbstractPubSubMessage.class.getName()); private boolean acknowledged; private String jmsMessageId; private long jmsTimestamp; private String correlationId; private Destination replyTo; private Destination destination; private int jmsDeliveryMode; private boolean jmsRedelivered; private String jmsType; private long jmsExpiration; private long jmsDeliveryTime; private int jmsPriority; @Override public void acknowledge() throws JMSException { if (acknowledged) { //TODO: seems as exceptional state. LOGGER.warning("Message already acknowledged. [" + getJMSMessageID() + "]"); } else { acknowledged = true; } } @Override public String getJMSMessageID() throws JMSException { return jmsMessageId; } @Override public void setJMSMessageID(final String id) throws JMSException { this.jmsMessageId = id; } @Override public long getJMSTimestamp() throws JMSException { return jmsTimestamp; } @Override public void setJMSTimestamp(final long timestamp) throws JMSException { this.jmsTimestamp = timestamp; } @Override public byte[] getJMSCorrelationIDAsBytes() throws JMSException { return null == correlationId ? null : correlationId.getBytes(Charsets.UTF_8); } @Override public void setJMSCorrelationIDAsBytes(final byte[] correlationId) throws JMSException { this.correlationId = null == correlationId ? null : new String(correlationId, Charsets.UTF_8); } @Override public void setJMSCorrelationID(final String correlationId) throws JMSException { this.correlationId = correlationId; } @Override public String getJMSCorrelationID() throws JMSException { return correlationId; } @Override public Destination getJMSReplyTo() throws JMSException { return replyTo; } @Override public void setJMSReplyTo(final Destination replyTo) throws JMSException { this.replyTo = replyTo; } @Override public Destination getJMSDestination() throws JMSException { return destination; } @Override public void setJMSDestination(final Destination destination) throws JMSException { this.destination = destination; } @Override public int getJMSDeliveryMode() throws JMSException { return jmsDeliveryMode; } @Override public void setJMSDeliveryMode(final int deliveryMode) throws JMSException { this.jmsDeliveryMode = deliveryMode; } @Override public boolean getJMSRedelivered() throws JMSException { return jmsRedelivered; } @Override public void setJMSRedelivered(final boolean redelivered) throws JMSException { this.jmsRedelivered = redelivered; } @Override public String getJMSType() throws JMSException { return jmsType; } @Override public void setJMSType(final String type) throws JMSException { this.jmsType = type; } @Override public long getJMSExpiration() throws JMSException { return jmsExpiration; } @Override public void setJMSExpiration(final long expiration) throws JMSException { this.jmsExpiration = expiration; } @Override public long getJMSDeliveryTime() throws JMSException { return jmsDeliveryTime; } @Override public void setJMSDeliveryTime(final long deliveryTime) throws JMSException { this.jmsDeliveryTime = deliveryTime; } @Override public int getJMSPriority() throws JMSException { return jmsPriority; } @Override public void setJMSPriority(final int priority) throws JMSException { this.jmsPriority = priority; } }