<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="locations">
- <value>osgibundle:agent.properties
- </value>
+ <value>osgibundle:agent.properties</value>
</property>
</bean>
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
default-lazy-init="false">
- <import resource="classpath:org/argeo/slc/activemq/spring.xml" />
+ <import resource="classpath:org/argeo/slc/castor/spring.xml" />
+ <import resource="classpath:org/argeo/slc/activemq/destinations.xml" />
- <bean id="jmsAgent.listener.request" parent="jmsAgent.listener.template">
+ <!-- Agent implementation -->
+ <bean id="jmsAgent" class="org.argeo.slc.jms.JmsAgent">
+ <property name="agentRegister" ref="slcJms.destination.agent.register" />
+ <property name="agentUnregister" ref="slcJms.destination.agent.unregister" />
+ <property name="modulesManager" ref="modulesManager" />
+ <property name="responseDestination" ref="slcJms.destination.agent.response" />
+ <property name="jmsTemplate" ref="jmsTemplate" />
+ </bean>
+
+ <!-- Listeners -->
+ <bean id="jmsAgent.listener.request" parent="listenerTemplate">
<property name="destination" ref="slcJms.destination.agent.request" />
<property name="messageSelector">
<bean factory-bean="jmsAgent" factory-method="getMessageSelector" />
</property>
</bean>
- <bean id="jmsAgent.attachmentUploader" class="org.argeo.slc.jms.JmsAttachmentUploader">
- <property name="destination" ref="slcJms.destination.attachment.add" />
- <property name="jmsTemplate" ref="jmsTemplate" />
- </bean>
-
- <bean id="jmsAgent.listener.pingAll" parent="jmsAgent.listener.template">
+ <bean id="jmsAgent.listener.pingAll" parent="listenerTemplate">
<property name="destination" ref="slcJms.destination.agent.pingAll" />
<property name="messageListener" ref="jmsAgent" />
</bean>
- <bean id="jmsAgent" class="org.argeo.slc.jms.JmsAgent">
- <property name="agentRegister" ref="slcJms.destination.agent.register" />
- <property name="agentUnregister" ref="slcJms.destination.agent.unregister" />
- <property name="modulesManager" ref="modulesManager" />
- <property name="responseDestination" ref="slcJms.destination.agent.response" />
- <property name="jmsTemplate" ref="jmsTemplate" />
- </bean>
-
- <!-- TreeTestResult Listener -->
+ <!-- Services -->
<bean id="resultListener" class="org.argeo.slc.jms.JmsTreeTestResultListener">
- <!-- <property name="createDestination" ref="slcJms.destination.test.create" />
- <property name="addResultPartDestination" ref="slcJms.destination.test.addResultPart" />
- <property name="closeDestination" ref="slcJms.destination.test.close" />
--->
<property name="executionEventDestination" ref="slcJms.destination.execution.event" />
+ <property name="onlyOnClose" value="${slc.agent.jms.resultListener.onlyOnClose}"/>
<property name="jmsTemplate" ref="jmsTemplate" />
</bean>
-
- <!-- SLC Execution Listener -->
- <bean id="slcExecutionListener" class="org.argeo.slc.jms.JmsSlcExecutionNotifier">
- <!-- <property name="updateStatusDestination" ref="slcJms.destination.slcExecution.updateStatus" />
--->
+ <bean id="attachmentUploader" class="org.argeo.slc.jms.JmsAttachmentUploader">
+ <property name="destination" ref="slcJms.destination.attachment.add" />
<property name="jmsTemplate" ref="jmsTemplate" />
+ </bean>
+ <bean id="slcExecutionListener" class="org.argeo.slc.jms.JmsSlcExecutionNotifier">
<property name="executionEventDestination" ref="slcJms.destination.execution.event" />
+ <property name="jmsTemplate" ref="jmsTemplate" />
</bean>
- <!-- Common -->
+ <!-- JMS -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
- <property name="messageConverter" ref="slcDefault.jms.castorMessageConverter" />
+ <property name="messageConverter">
+ <bean class="org.argeo.slc.jms.MarshallerMessageConverter">
+ <property name="disableMarshalling" value="${slc.agent.jms.disableMarshalling}" />
+ <property name="marshaller" ref="slcDefault.castor.marshaller" />
+ <property name="unmarshaller" ref="slcDefault.castor.marshaller" />
+ </bean>
+ </property>
<property name="connectionFactory" ref="jmsConnectionFactory" />
</bean>
+ <bean id="jmsConnectionFactory"
+ class="org.springframework.jms.connection.CachingConnectionFactory">
+ <property name="targetConnectionFactory">
+ <bean class="org.apache.activemq.ActiveMQConnectionFactory">
+ <property name="brokerURL">
+ <value>${slc.server.jms.url}</value>
+ </property>
+ </bean>
+ </property>
+ </bean>
+
<bean id="jmsTransactionManager"
class="org.springframework.jms.connection.JmsTransactionManager">
<property name="connectionFactory" ref="jmsConnectionFactory" />
</bean>
- <bean id="jmsAgent.listener.template"
+ <!-- Templates -->
+ <bean id="listenerTemplate"
class="org.springframework.jms.listener.DefaultMessageListenerContainer"
abstract="true">
<property name="connectionFactory" ref="jmsConnectionFactory" />
\r
<bundle id="agent" action="start" symbolic-name="org.argeo.slc.agent" />\r
\r
+ <!-- REFERENCES -->\r
+ <reference id="modulesManager"\r
+ interface="org.argeo.slc.execution.ExecutionModulesManager"\r
+ context-class-loader="service-provider" />\r
+\r
+ <!-- SERVICES -->\r
<!-- Deprecated -->\r
<service ref="resultListener"\r
interface="org.argeo.slc.core.test.tree.TreeTestResultListener" />\r
\r
<service ref="slcExecutionListener" interface="org.argeo.slc.process.SlcExecutionNotifier" />\r
\r
- <service ref="jmsAgent.attachmentUploader" interface="org.argeo.slc.core.attachment.AttachmentUploader" />\r
+ <service ref="attachmentUploader" interface="org.argeo.slc.core.attachment.AttachmentUploader" />\r
\r
- <reference id="modulesManager"\r
- interface="org.argeo.slc.execution.ExecutionModulesManager"\r
- context-class-loader="service-provider" />\r
</beans:beans>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
- default-lazy-init="false">
-
- <bean id="jmsConnectionFactory"
- class="org.springframework.jms.connection.CachingConnectionFactory">
- <property name="targetConnectionFactory">
- <bean class="org.apache.activemq.ActiveMQConnectionFactory">
- <property name="brokerURL">
- <value>${slc.server.jms.url}</value>
- </property>
- </bean>
- </property>
- </bean>
-
-<!--
- <bean id="jmsConnectionFactory"
- class="org.springframework.jms.connection.SingleConnectionFactory">
- <property name="targetConnectionFactory">
- <bean id="slcDefault.jms.amqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
- <property name="brokerURL">
- <value>${slc.server.jms.url}</value>
- </property>
- </bean>
- </property>
- </bean>
- -->
- <!--
- <bean id="jmsConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"
- destroy-method="stop">
- <property name="connectionFactory">
- <bean class="org.apache.activemq.ActiveMQConnectionFactory">
- <property name="brokerURL">
- <value>${slc.server.jms.url}</value>
- </property>
- </bean>
- </property>
- </bean>
- -->
-</beans>
\ No newline at end of file
-slc.server.jms.url=tcp://localhost:61616
\ No newline at end of file
+slc.server.jms.url=tcp://localhost:61616
+
+# Customization
+slc.agent.jms.disableMarshalling=false
+slc.agent.jms.resultListener.onlyOnClose=false
http://www.springframework.org/schema/beans \r
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
\r
+ <!-- SERVICES -->\r
<service ref="jmsConnectionFactory" interface="javax.jms.ConnectionFactory" />\r
\r
-<!-- \r
- <service ref="jmsTransactionManager"\r
- interface="org.springframework.transaction.PlatformTransactionManager" />\r
- -->\r
<service ref="jmsCastorMessageConverter"\r
interface="org.springframework.jms.support.converter.MessageConverter" />\r
\r
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="locations">
- <value>osgibundle:activemq.properties
- </value>
+ <value>osgibundle:activemq.properties</value>
</property>
</bean>
</property>
</bean>
-
- <!--
- <bean id="jmsTransactionManager"
- class="org.springframework.jms.connection.JmsTransactionManager">
- <property name="connectionFactory" ref="jmsConnectionFactory" />
- </bean>
- -->
-
-
<bean id="jmsCastorMessageConverter" class="org.argeo.slc.jms.MarshallerMessageConverter">
+ <property name="disableMarshalling" value="${slc.server.jms.disableMarshalling}" />
<property name="marshaller" ref="marshaller" />
<property name="unmarshaller" ref="unmarshaller" />
</bean>
-slc.server.jms.url=tcp://localhost:61616
\ No newline at end of file
+slc.server.jms.url=tcp://localhost:61616
+
+slc.server.jms.disableMarshalling=false
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:osgi="http://www.springframework.org/schema/osgi"
+<beans:beans xmlns="http://www.springframework.org/schema/osgi"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/osgi
http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
- <osgi:reference id="jmsMessageConverter"
+ <!-- REFERENCES -->
+ <reference id="jmsMessageConverter"
interface="org.springframework.jms.support.converter.MessageConverter" />
- <osgi:reference id="jmsConnectionFactory" interface="javax.jms.ConnectionFactory" />
+ <reference id="jmsConnectionFactory" interface="javax.jms.ConnectionFactory" />
- <osgi:service ref="agentFactory" interface="org.argeo.slc.runtime.SlcAgentFactory" />
-</beans>
\ No newline at end of file
+ <!-- SERVICES -->
+ <service ref="agentFactory" interface="org.argeo.slc.runtime.SlcAgentFactory" />
+</beans:beans>
\ No newline at end of file
import java.util.ArrayList;\r
import java.util.Date;\r
import java.util.List;\r
-import java.util.Map;\r
import java.util.SortedMap;\r
import java.util.TreeMap;\r
import java.util.UUID;\r
private List<SimpleAttachment> attachments = new ArrayList<SimpleAttachment>();\r
\r
// Headers. Used to accelerate request on a specific test result.\r
- private Map<String, String> attributes = new TreeMap<String, String>();\r
+ private SortedMap<String, String> attributes = new TreeMap<String, String>();\r
\r
// Runtime Data\r
private TreeSPath currentPath;\r
return super.hashCode();\r
}\r
\r
- public Map<String, String> getAttributes() {\r
+ public SortedMap<String, String> getAttributes() {\r
return attributes;\r
}\r
\r
- public void setAttributes(Map<String, String> attributes) {\r
+ public void setAttributes(SortedMap<String, String> attributes) {\r
this.attributes = attributes;\r
}\r
\r
\r
import java.util.List;\r
import java.util.Map;\r
+import java.util.SortedMap;\r
\r
import org.argeo.slc.core.attachment.SimpleAttachment;\r
import org.argeo.slc.core.structure.tree.TreeSPath;\r
\r
/** Update attributes */\r
public void updateAttributes(String testResultId,\r
- Map<String, String> attributes);\r
+ SortedMap<String, String> attributes);\r
\r
public void addAttachment(String testResultId, SimpleAttachment attachment);\r
}\r
res = sendReceive(messageCreator, true);
} finally {
if (log.isTraceEnabled())
- log.trace("Agend proxy send/receive in "
- + (System.currentTimeMillis() - begin) + " ms");
+ log.trace("To agent #" + agentUuid + " in "
+ + (System.currentTimeMillis() - begin) + " ms, query '"
+ + messageCreator.getQuery() + "', correlationId "
+ + messageCreator.getCorrelationId());
}
return res;
}
protected void send(AgentMC messageCreator) {
jmsTemplate.send(requestDestination, messageCreator);
- if (log.isTraceEnabled())
- log.debug("Sent query '" + messageCreator.getQuery()
- + "' with correlationId "
- + messageCreator.getCorrelationId() + " to agent "
- + agentUuid);
}
protected Object processResponse(AgentMC messageCreator,
else
return null;
}
- if (log.isTraceEnabled())
- log.debug("Received response for query '" + query
- + "' with correlationId " + correlationId + " from agent "
- + agentUuid);
try {
return fromMessage(responseMsg);
import org.springframework.jms.JmsException;
import org.springframework.jms.core.JmsTemplate;
+/** JMS based tree test result listener implementation. */
public class JmsTreeTestResultListener implements TreeTestResultListener {
private final Log log = LogFactory.getLog(getClass());
}
+ /** Publishes the test result only when it gets closed. */
public void setOnlyOnClose(Boolean onlyOnClose) {
this.onlyOnClose = onlyOnClose;
}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- 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.
-
--->
-
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
- default-lazy-init="false">
-
- <import resource="classpath:org/argeo/slc/castor/spring.xml" />
-
- <import resource="destinations.xml" />
-
- <bean id="slcDefault.jms.castorMessageConverter" class="org.argeo.slc.jms.MarshallerMessageConverter">
- <property name="marshaller" ref="slcDefault.castor.marshaller" />
- <property name="unmarshaller" ref="slcDefault.castor.marshaller" />
- </bean>
-
- <bean id="slcTemplate.jms.listenerAdapterCastor"
- class="org.springframework.jms.listener.adapter.MessageListenerAdapter"
- abstract="true">
- <property name="messageConverter" ref="slcDefault.jms.castorMessageConverter" />
- </bean>
-
-</beans>
\ No newline at end of file
import java.util.Date;\r
import java.util.List;\r
import java.util.Map;\r
+import java.util.SortedMap;\r
\r
import org.argeo.slc.SlcException;\r
import org.argeo.slc.core.attachment.SimpleAttachment;\r
}\r
\r
public void updateAttributes(final String testResultId,\r
- final Map<String, String> attributes) {\r
+ final SortedMap<String, String> attributes) {\r
getHibernateTemplate().execute(new HibernateCallback() {\r
\r
public Object doInHibernate(Session session)\r
import java.util.GregorianCalendar;\r
import java.util.List;\r
import java.util.Map;\r
+import java.util.SortedMap;\r
\r
import javax.jcr.Node;\r
import javax.jcr.NodeIterator;\r
}\r
\r
public synchronized void updateAttributes(final String testResultId,\r
- final Map<String, String> attributes) {\r
+ final SortedMap<String, String> attributes) {\r
try {\r
String queryString = "//testresult[@uuid='" + testResultId + "']";\r
Query query = createQuery(queryString, Query.XPATH);\r
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.argeo.jcr.BeanNodeMapper;
-import org.argeo.jcr.JcrUtils;
import org.argeo.slc.core.attachment.SimpleAttachment;
import org.argeo.slc.core.structure.SimpleSElement;
import org.argeo.slc.core.structure.tree.TreeSPath;
}
// ATTRIBUTES
- Map attributes = new TreeMap<String, String>();
+ SortedMap attributes = new TreeMap<String, String>();
PropertyIterator propIt = node.getProperties();
props: while (propIt.hasNext()) {
Property prop = propIt.nextProperty();
package org.argeo.slc.jcr.dao;\r
\r
import java.io.ByteArrayOutputStream;\r
-import java.util.Map;\r
+import java.util.SortedMap;\r
import java.util.TreeMap;\r
import java.util.UUID;\r
\r
ttrDao.addResultPart(ttr.getUuid(), path, resultPart, null);\r
\r
// TestAdd Attribute\r
- Map<String, String> newAtt = new TreeMap<String, String>();\r
+ SortedMap<String, String> newAtt = new TreeMap<String, String>();\r
newAtt.put("NewTestCase", "NonSortedView");\r
newAtt.put("NewTestCaseType", "csvdiff");\r
ttrDao.updateAttributes(ttr.getUuid(), newAtt);\r