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.Session; import javax.jms.Topic; import org.drools.SystemEventListener; import org.jbpm.task.service.TaskClient; import org.jbpm.task.service.TaskClientHandler; public class JMSTaskClientHandler extends BaseJMSHandler { private TaskClientHandler handler; private Map<String, MessageProducer> producers; public JMSTaskClientHandler(SystemEventListener systemEventListener) { this.handler = new TaskClientHandler(this.responseHandlers, systemEventListener); this.producers = new HashMap<String, MessageProducer>(); } public TaskClient getClient() { return this.handler.getClient(); } public void setClient(TaskClient client) { this.handler.setClient(client); } public void exceptionCaught(Session session, Throwable cause) throws Exception { } public void messageReceived(Session 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); } }