]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAgentProxyFactory.java
Update service versions
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.activemq / src / main / java / org / argeo / slc / jms / JmsAgentProxyFactory.java
index 1f625e13fb3e0a292a8af21204ddccd8f297b8c8..abe854112ea9d58e0785693b21ddba1483d3e3d6 100644 (file)
@@ -1,21 +1,43 @@
 package org.argeo.slc.jms;
 
+import java.util.List;
+import java.util.UUID;
+
 import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.Message;
 
+import org.argeo.slc.msg.ReferenceList;
 import org.argeo.slc.runtime.SlcAgent;
 import org.argeo.slc.runtime.SlcAgentFactory;
 import org.springframework.jms.core.JmsTemplate;
-import org.springframework.jms.support.converter.MessageConverter;
+import org.springframework.jms.core.MessagePostProcessor;
 
 public class JmsAgentProxyFactory implements SlcAgentFactory {
        private Destination requestDestination;
        private Destination responseDestination;
+       private Destination pingAllDestination;
        private JmsTemplate jmsTemplate;
-       private MessageConverter messageConverter;
 
        public SlcAgent getAgent(String uuid) {
                return new JmsAgentProxy(uuid, requestDestination, responseDestination,
-                               jmsTemplate, messageConverter);
+                               jmsTemplate);
+       }
+
+       public void pingAll(List<String> activeAgentIds) {
+               ReferenceList referenceList = new ReferenceList(activeAgentIds);
+               jmsTemplate.convertAndSend(pingAllDestination, referenceList,
+                               new MessagePostProcessor() {
+
+                                       public Message postProcessMessage(Message message)
+                                                       throws JMSException {
+                                               message.setJMSCorrelationID(UUID.randomUUID()
+                                                               .toString());
+                                               message.setStringProperty(JmsAgent.PROPERTY_QUERY,
+                                                               JmsAgent.QUERY_PING_ALL);
+                                               return message;
+                                       }
+                               });
        }
 
        public void setRequestDestination(Destination requestDestination) {
@@ -30,8 +52,8 @@ public class JmsAgentProxyFactory implements SlcAgentFactory {
                this.jmsTemplate = jmsTemplate;
        }
 
-       public void setMessageConverter(MessageConverter messageConverter) {
-               this.messageConverter = messageConverter;
+       public void setPingAllDestination(Destination pingAllDestination) {
+               this.pingAllDestination = pingAllDestination;
        }
 
 }