/* * Copyright (c) 2007-2012, 2016 Eike Stepper (Berlin, Germany) and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Eike Stepper - initial API and implementation */ package org.eclipse.net4j.internal.jms; import org.eclipse.net4j.internal.jms.messages.Messages; import org.eclipse.net4j.util.lifecycle.Lifecycle; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageFormatException; import javax.jms.MessageProducer; import java.util.Date; public class MessageProducerImpl extends Lifecycle implements MessageProducer { private SessionImpl session; private DestinationImpl destination; private int deliveryMode = DeliveryMode.PERSISTENT; private int priority = Message.DEFAULT_PRIORITY; private long timeToLive; private boolean disableMessageTimestamp; private boolean disableMessageID; public MessageProducerImpl(SessionImpl session, DestinationImpl destination) { this.session = session; this.destination = destination; } public SessionImpl getSession() { return session; } public int getDeliveryMode() { return deliveryMode; } public void setDeliveryMode(int deliveryMode) { this.deliveryMode = deliveryMode; } public int getPriority() { return priority; } public void setPriority(int priority) { this.priority = priority; } public long getTimeToLive() { return timeToLive; } public void setTimeToLive(long timeToLive) { this.timeToLive = timeToLive; } public DestinationImpl getDestination() { return destination; } public boolean getDisableMessageID() { return disableMessageID; } public void setDisableMessageID(boolean disableMessageID) { this.disableMessageID = disableMessageID; } public boolean getDisableMessageTimestamp() { return disableMessageTimestamp; } public void setDisableMessageTimestamp(boolean disableMessageTimestamp) { this.disableMessageTimestamp = disableMessageTimestamp; } public void send(Message message) throws JMSException { send(getDestination(), message, getDeliveryMode(), getPriority(), getTimeToLive()); } public void send(Message message, int deliveryMode, int priority, long timeToLive) throws JMSException { send(getDestination(), message, getDeliveryMode(), getPriority(), getTimeToLive()); } public void send(Destination destination, Message message) throws JMSException { send(destination, message, getDeliveryMode(), getPriority(), getTimeToLive()); } public void send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive) throws JMSException { if (message == null) { throw new MessageFormatException(Messages.getString("MessageProducerImpl_0")); //$NON-NLS-1$ } // message.setJMSMessageID(MessageId.create()); message.setJMSDestination(destination); message.setJMSTimestamp(new Date().getTime()); message.setJMSPriority(priority); if (timeToLive > 0) { message.setJMSExpiration(System.currentTimeMillis() + timeToLive); } else { message.setJMSExpiration(0); } if (destination instanceof JMSTemporaryDestination) { message.setJMSDeliveryMode(DeliveryMode.NON_PERSISTENT); } else { message.setJMSDeliveryMode(deliveryMode); } session.sendMessage(message); } public void close() { throw new NotYetImplementedException(); } }