package org.jboss.seam.jms;
import java.io.Serializable;
import java.util.Map;
import javax.jms.ConnectionFactory;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.QueueBrowser;
/**
* QueueBuilder is a builder pattern implementation for working with JMS Queues.
*
* @author johnament
*
*/
public interface QueueBuilder extends Serializable {
/**
* Toggles the transacted state (default is false) for this builder.
*
* @return this Builder.
*/
public QueueBuilder transacted();
/**
* Sets the session mode for this Builder. Default is Session.AUTO_ACKNOWLEDGE
*
* @param sessionMode SessionMode flag, see javax.jms.Session's list of valid values.
* @return this Builder.
*/
public QueueBuilder sessionMode(int sessionMode);
/**
* Specifies the ConnectionFactory to use.
*
* @param ConnectionFactory to use.
* @return this QueueBuilder.
*/
public QueueBuilder connectionFactory(ConnectionFactory connectionFactory);
/**
* Adds a Queue to the destinations of this QueueBuilder.
*
* @param queue The queue to add.
* @return this QueueBuilder
*/
public QueueBuilder destination(Queue queue);
/**
* Sends a JMS Message to the destinations associated.
*
* @param m The message to send.
* @return this QueueBuilder.
*/
public QueueBuilder send(Message m);
/**
* Sends a Map as a JMS Map Message to the destinations associated.
*
* @param m the Map to send.
* @return this QueueBuilder
*/
public QueueBuilder sendMap(Map m);
/**
* Sends a String as a JMS TextMessage to the destinations associated.
*
* @param s The String to send.
* @return this QueueBuilder.
*/
public QueueBuilder sendString(String s);
/**
* Sends a Serializable Object as an ObjectMessage.
*
* @param obj The Serializable object to send.
* @return this QueueBuilder
*/
public QueueBuilder sendObject(Serializable obj);
/**
* Adds the given MessageListeners as listeners on the associated destinations.
*
* @param ml MessageListener instances to connect to these destinations.
* @return this QueueBuilder
*/
public QueueBuilder listen(MessageListener ml);
/**
* Creates a QueueBuilder. It will be associated with any active Session.
*
* @return a new QueueBuilder instance.
*/
public QueueBuilder newBuilder();
/**
* Creates a QueueBrowser from the configured session and queue.
*
* @return a QueueBrowser on top of the configured queue and session.
*/
public QueueBrowser getQueueBrowser();
}