]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAgentProxyFactory.java
Add license headers
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.activemq / src / main / java / org / argeo / slc / jms / JmsAgentProxyFactory.java
index 1f625e13fb3e0a292a8af21204ddccd8f297b8c8..82cf1bac927cd76e0b012d3328dcb84dcaba079b 100644 (file)
@@ -1,21 +1,59 @@
+/*
+ * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 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 +68,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;
        }
 
 }