package org.jbpm.task.service.jms;
import java.util.HashMap;
import java.util.Map;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.QueueSession;
import javax.jms.Topic;
import org.drools.SystemEventListener;
import org.jbpm.task.service.TaskServerHandler;
import org.jbpm.task.service.TaskService;
public class JMSTaskServerHandler {
private TaskServerHandler handler;
private Map<String, MessageProducer> producers;
public JMSTaskServerHandler(TaskService service, SystemEventListener systemEventListener) {
this.handler = new TaskServerHandler(service, systemEventListener);
this.producers = new HashMap<String, MessageProducer>();
}
public void messageReceived(QueueSession session, Object message, Destination destination, String selector) throws Exception {
String name = "";
if (destination instanceof Queue) {
name = ((Queue) destination).getQueueName();
} else if (destination instanceof Topic) {
name = ((Topic) destination).getTopicName();
}
MessageProducer producer = (MessageProducer) this.producers.get(name);
if (producer == null) {
producer = session.createProducer(destination);
this.producers.put(name, producer);
}
this.handler.messageReceived(new JMSSessionWriter(session, producer, selector), message);
}
}