X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.support.activemq%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fjms%2FJmsTransferNewExecution.java;h=aa66dc8da097626178856c0d36207e978e2b8430;hb=7a3833134109e2a119755a34ff357dea39ce40d6;hp=856b956a45fbdf80b88c764ab709862e534b8969;hpb=7a2f320afe9a0d3d7590365b26f3f5b0e8d9fd3b;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsTransferNewExecution.java b/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsTransferNewExecution.java index 856b956a4..aa66dc8da 100644 --- a/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsTransferNewExecution.java +++ b/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsTransferNewExecution.java @@ -1,34 +1,51 @@ package org.argeo.slc.jms; -import java.util.UUID; - -import javax.jms.Destination; -import javax.jms.JMSException; import javax.jms.Message; -import javax.jms.MessageProducer; -import javax.jms.Session; -import javax.jms.TextMessage; - -import org.springframework.jms.listener.SessionAwareMessageListener; - -/** Temporary hack*/ -public class JmsTransferNewExecution implements SessionAwareMessageListener { - private Destination requestDestination; - - public void onMessage(Message message, Session session) throws JMSException { - TextMessage messageToSend = session - .createTextMessage(((TextMessage) message).getText()); - messageToSend - .setStringProperty(JmsAgent.PROPERTY_QUERY, "newExecution"); - messageToSend.setStringProperty(JmsAgent.PROPERTY_SLC_AGENT_ID, message - .getStringProperty(JmsAgent.PROPERTY_SLC_AGENT_ID)); - messageToSend.setJMSCorrelationID(UUID.randomUUID().toString()); - MessageProducer producer = session.createProducer(requestDestination); - producer.send(messageToSend); +import javax.jms.MessageListener; + +import org.argeo.slc.SlcException; +import org.argeo.slc.msg.MsgConstants; +import org.argeo.slc.msg.MsgHandler; +import org.argeo.slc.process.SlcExecution; +import org.argeo.slc.runtime.SlcAgent; +import org.argeo.slc.runtime.SlcAgentFactory; +import org.springframework.jms.support.converter.MessageConverter; + +/** Temporary hack */ +public class JmsTransferNewExecution implements MessageListener { + private MessageConverter messageConverter; + private SlcAgentFactory agentFactory; + private MsgHandler serviceMsgHandler; + + public void onMessage(final Message message) { + try { + String agentId = message + .getStringProperty(MsgConstants.PROPERTY_SLC_AGENT_ID); + final SlcAgent agent = agentFactory.getAgent(agentId); + final SlcExecution slcExecution = (SlcExecution) messageConverter + .fromMessage(message); + new Thread() { + public void run() { + agent.runSlcExecution(slcExecution); + } + }.start(); + serviceMsgHandler.handleMsg(slcExecution); + } catch (Exception e) { + throw new SlcException("Could not transfer new execution " + + message, e); + } + } + + public void setMessageConverter(MessageConverter messageConverter) { + this.messageConverter = messageConverter; + } + + public void setAgentFactory(SlcAgentFactory agentFactory) { + this.agentFactory = agentFactory; } - public void setRequestDestination(Destination requestDestination) { - this.requestDestination = requestDestination; + public void setServiceMsgHandler(MsgHandler serviceMsgHandler) { + this.serviceMsgHandler = serviceMsgHandler; } }