+++ /dev/null
-<beans
- xmlns="http://www.springframework.org/schema/beans"
- xmlns:amq="http://activemq.apache.org/schema/core"
- 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
- http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.2.0.xsd">
-
- <!-- Allows us to use system properties as variables in this configuration file
-
- <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="locations">
- <value>file:${activemq.base}/conf/credentials.properties</value>
- </property>
- </bean>
--->
- <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.base}/data">
-
- <!-- Destination specific policies using destination names or wildcards
--->
- <destinationPolicy>
- <policyMap>
- <policyEntries>
- <policyEntry queue=">" memoryLimit="5mb"/>
- <policyEntry topic=">" memoryLimit="5mb">
- <!-- you can add other policies too such as these
- <dispatchPolicy>
- <strictOrderDispatchPolicy/>
- </dispatchPolicy>
- <subscriptionRecoveryPolicy>
- <lastImageSubscriptionRecoveryPolicy/>
- </subscriptionRecoveryPolicy>
- -->
- </policyEntry>
- </policyEntries>
- </policyMap>
- </destinationPolicy>
-
- <!-- Use the following to configure how ActiveMQ is exposed in JMX -->
- <managementContext>
- <managementContext createConnector="false"/>
- </managementContext>
-
- <!-- The store and forward broker networks ActiveMQ will listen to -->
- <networkConnectors>
- <!-- by default just auto discover the other brokers -->
- <networkConnector name="default-nc" uri="multicast://default"/>
- <!-- Example of a static configuration:
- <networkConnector name="host1 and host2" uri="static://(tcp://host1:61616,tcp://host2:61616)"/>
- -->
- </networkConnectors>
-
- <persistenceAdapter>
- <amqPersistenceAdapter syncOnWrite="false" directory="${activemq.base}/data" maxFileLength="20 mb"/>
- </persistenceAdapter>
-
- <!-- Use the following if you wish to configure the journal with JDBC
--->
- <!--
- <persistenceAdapter>
- <journaledJDBC dataDirectory="${activemq.base}/data" dataSource="#postgres-ds"/>
- </persistenceAdapter>
- -->
-
- <!-- Or if you want to use pure JDBC without a journal -->
- <!--
- <persistenceAdapter>
- <jdbcPersistenceAdapter dataSource="#postgres-ds"/>
- </persistenceAdapter>
- -->
-
-<!--
- <sslContext>
- <sslContext keyStore="file:${activemq.base}/conf/broker.ks" keyStorePassword="password" trustStore="file:${activemq.base}/conf/broker.ts" trustStorePassword="password"/>
- </sslContext>
- -->
- <!-- The maximum about of space the broker will use before slowing down producers
--->
- <systemUsage>
- <systemUsage>
- <memoryUsage>
- <memoryUsage limit="20 mb"/>
- </memoryUsage>
- <storeUsage>
- <storeUsage limit="1 gb" name="foo"/>
- </storeUsage>
- <tempUsage>
- <tempUsage limit="100 mb"/>
- </tempUsage>
- </systemUsage>
- </systemUsage>
-
-
- <!-- The transport connectors ActiveMQ will listen to -->
- <transportConnectors>
- <transportConnector name="openwire" uri="tcp://localhost:61616" discoveryUri="multicast://default"/>
-<!-- <transportConnector name="ssl" uri="ssl://localhost:61617"/>
- <transportConnector name="stomp" uri="stomp://localhost:61613"/>
- <transportConnector name="xmpp" uri="xmpp://localhost:61222"/> -->
- </transportConnectors>
-
- </broker>
-
-
- <!-- Uncomment to create a command agent to respond to message based admin commands on the ActiveMQ.Agent topic
--->
- <!--
- <commandAgent xmlns="http://activemq.apache.org/schema/core" brokerUrl="vm://localhost" username="${activemq.username}" password="${activemq.password}"/>
- -->
-
- <!-- This xbean configuration file supports all the standard spring xml configuration options
--->
-
- <!-- Postgres DataSource Sample Setup -->
- <!--
- <bean id="postgres-ds" class="org.postgresql.ds.PGPoolingDataSource">
- <property name="serverName" value="localhost"/>
- <property name="databaseName" value="activemq"/>
- <property name="portNumber" value="0"/>
- <property name="user" value="activemq"/>
- <property name="password" value="activemq"/>
- <property name="dataSourceName" value="postgres"/>
- <property name="initialConnections" value="1"/>
- <property name="maxConnections" value="10"/>
- </bean>
- -->
-
- <!-- MySql DataSource Sample Setup -->
- <!--
- <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
- <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
- <property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
- <property name="username" value="activemq"/>
- <property name="password" value="activemq"/>
- <property name="maxActive" value="200"/>
- <property name="poolPreparedStatements" value="true"/>
- </bean>
- -->
-
- <!-- Oracle DataSource Sample Setup -->
- <!--
- <bean id="oracle-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
- <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
- <property name="url" value="jdbc:oracle:thin:@localhost:1521:AMQDB"/>
- <property name="username" value="scott"/>
- <property name="password" value="tiger"/>
- <property name="maxActive" value="200"/>
- <property name="poolPreparedStatements" value="true"/>
- </bean>
- -->
-
- <!-- Embedded Derby DataSource Sample Setup -->
- <!--
- <bean id="derby-ds" class="org.apache.derby.jdbc.EmbeddedDataSource">
- <property name="databaseName" value="derbydb"/>
- <property name="createDatabase" value="create"/>
- </bean>
- -->
-
-</beans>
\ No newline at end of file
<import resource="classpath:/org/argeo/slc/server/spring/jmx.xml" />
-->
+ <!--
<bean id="activemqBroker" class="org.apache.activemq.xbean.BrokerFactoryBean">
<property name="config" value="WEB-INF/activemq.xml" />
<property name="start" value="true" />
</bean>
-
+-->
</beans>
\ No newline at end of file
\r
## Levels\r
# Slc\r
-log4j.logger.org.argeo.slc=WARN\r
+log4j.logger.org.argeo.slc=DEBUG\r
\r
# Spring\r
log4j.logger.org.springframework=INFO\r
<artifactId>org.springframework.jdbc</artifactId>
<version>${version.spring}</version>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>org.springframework.transaction</artifactId>
+ <version>${version.spring}</version>
+ </dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.web</artifactId>
<artifactId>org.springframework.aop</artifactId>
<version>${version.spring}</version>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>org.springframework.jms</artifactId>
+ <version>${version.spring}</version>
+ </dependency>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>com.springsource.javax.jms</artifactId>
<version>1.1.0</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>com.springsource.javax.management.j2ee</artifactId>
+ <version>1.0.1</version>
+ </dependency>
+
+ <!-- ActiveMQ -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>com.springsource.org.apache.activemq</artifactId>
<artifactId>com.springsource.org.apache.activemq.web</artifactId>
<version>${version.activemq}</version>
</dependency>
+ <!--
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-pool</artifactId>
+ <version>${version.activemq}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-optional</artifactId>
+ <version>${version.activemq}</version>
+ </dependency>
+ -->
<dependency>
<groupId>org.apache.xbean</groupId>
<artifactId>com.springsource.org.apache.xbean.spring</artifactId>
<version>3.3.0</version>
</dependency>
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>com.springsource.javax.management.j2ee</artifactId>
- <version>1.0.1</version>
- </dependency>
</dependencies>
</dependencyManagement>
<repositories>
<artifactId>org.argeo.slc.support.simple</artifactId>
<version>${project.version}</version>
</dependency>
-
+
<dependency>
<groupId>org.argeo.dep.osgi</groupId>
<artifactId>org.argeo.dep.osgi.commons.cli</artifactId>
</dependency>
+
+ <!-- TESTING -->
+ <dependency>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.support.activemq</artifactId>
+ <version>${project.version}</version>
+ <scope>testing</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.support.castor</artifactId>
+ <version>${project.version}</version>
+ <scope>testing</scope>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
import org.argeo.slc.logging.Log4jUtils;
import org.argeo.slc.runtime.SlcExecutionContext;
import org.argeo.slc.runtime.SlcRuntime;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.support.FileSystemXmlApplicationContext;
public class SlcMain {
public enum Mode {
System.exit(1);
}
}
+ // Agent
+ else if (mode.equals(Mode.agent)) {
+ if (runtimeStr == null)
+ runtimeStr = "agent.xml";
+ final ConfigurableApplicationContext applicationContext = new FileSystemXmlApplicationContext(
+ "agent.xml");
+ applicationContext.start();
+ log.info("SLC Agent context started.");
+
+ Thread shutdownHook = new Thread("SLC agent shutdown hook") {
+ public void run() {
+ applicationContext.stop();
+ applicationContext.close();
+ log.info("Closed agent application context.");
+ }
+ };
+ Runtime.getRuntime().addShutdownHook(shutdownHook);
+
+ while (applicationContext.isActive()) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ // silent
+ }
+ }
+ }
}
public static void printUsage() {
-<?xml version="1.0" encoding="UTF-8"?>\r
-<projectDescription>\r
- <name>org.argeo.slc.server</name>\r
- <comment></comment>\r
- <projects>\r
- </projects>\r
- <buildSpec>\r
- <buildCommand>\r
- <name>org.eclipse.jdt.core.javabuilder</name>\r
- <arguments>\r
- </arguments>\r
- </buildCommand>\r
- <buildCommand>\r
- <name>org.maven.ide.eclipse.maven2Builder</name>\r
- <arguments>\r
- </arguments>\r
- </buildCommand>\r
- </buildSpec>\r
- <natures>\r
- <nature>org.eclipse.jdt.core.javanature</nature>\r
- <nature>org.maven.ide.eclipse.maven2Nature</nature>\r
- </natures>\r
-</projectDescription>\r
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.argeo.slc.server</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.maven.ide.eclipse.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.springframework.ide.eclipse.core.springbuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.springframework.ide.eclipse.core.springnature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.maven.ide.eclipse.maven2Nature</nature>
+ </natures>
+</projectDescription>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<beansProjectDescription>
+ <version>1</version>
+ <pluginVersion><![CDATA[2.2.0.v200809261800]]></pluginVersion>
+ <configSuffixes>
+ <configSuffix><![CDATA[xml]]></configSuffix>
+ </configSuffixes>
+ <enableImports><![CDATA[true]]></enableImports>
+ <configs>
+ <config>src/main/resources/org/argeo/slc/server/spring/servletContext.xml</config>
+ </configs>
+ <configSets>
+ </configSets>
+</beansProjectDescription>
</plugins>
</build>
<dependencies>
+ <!-- SLC -->
<dependency>
<groupId>org.argeo.slc.runtime</groupId>
<artifactId>org.argeo.slc.support.hibernate</artifactId>
<artifactId>org.argeo.slc.support.castor</artifactId>
<version>${project.version}</version>
</dependency>
-
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>
- com.springsource.javax.servlet.jsp.jstl
- </artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.taglibs</groupId>
- <artifactId>
- com.springsource.org.apache.taglibs.standard
- </artifactId>
- </dependency>
<dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>com.springsource.javax.servlet</artifactId>
- <scope>provided</scope>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.support.activemq</artifactId>
+ <version>${project.version}</version>
</dependency>
+
+ <!-- Spring -->
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>org.springframework.ws</artifactId>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.aop</artifactId>
</dependency>
+
+ <!-- J2EE -->
<dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>com.springsource.org.aspectj.weaver</artifactId>
+ <groupId>javax.servlet</groupId>
+ <artifactId>
+ com.springsource.javax.servlet.jsp.jstl
+ </artifactId>
</dependency>
<dependency>
- <groupId>net.sourceforge.jexcelapi</groupId>
- <artifactId>com.springsource.jxl</artifactId>
+ <groupId>org.apache.taglibs</groupId>
+ <artifactId>
+ com.springsource.org.apache.taglibs.standard
+ </artifactId>
</dependency>
<dependency>
- <groupId>com.lowagie.text</groupId>
- <artifactId>com.springsource.com.lowagie.text</artifactId>
+ <groupId>javax.servlet</groupId>
+ <artifactId>com.springsource.javax.servlet</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.wsdl</groupId>
<artifactId>com.springsource.javax.wsdl</artifactId>
</dependency>
- <!-- JMS -->
- <dependency>
- <groupId>javax.jms</groupId>
- <artifactId>com.springsource.javax.jms</artifactId>
- </dependency>
+ <!-- ActiveMQ -->
<dependency>
<groupId>org.apache.activemq</groupId>
- <artifactId>com.springsource.org.apache.activemq</artifactId>
+ <artifactId>com.springsource.org.apache.activemq.web</artifactId>
</dependency>
+
+ <!-- Various -->
<dependency>
- <groupId>org.apache.xbean</groupId>
- <artifactId>com.springsource.org.apache.xbean.spring</artifactId>
+ <groupId>org.aspectj</groupId>
+ <artifactId>com.springsource.org.aspectj.weaver</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.activemq</groupId>
- <artifactId>com.springsource.org.apache.activemq.web</artifactId>
+ <groupId>net.sourceforge.jexcelapi</groupId>
+ <artifactId>com.springsource.jxl</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>com.springsource.javax.management.j2ee</artifactId>
+ <groupId>com.lowagie.text</groupId>
+ <artifactId>com.springsource.com.lowagie.text</artifactId>
</dependency>
</dependencies>
--- /dev/null
+package org.argeo.slc.services.impl.runtime;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.argeo.slc.dao.runtime.SlcAgentDescriptorDao;
+import org.argeo.slc.runtime.SlcAgentDescriptor;
+
+public class AgentServiceImpl {
+ private final static Log log = LogFactory.getLog(AgentServiceImpl.class);
+
+ private final SlcAgentDescriptorDao slcAgentDescriptorDao;
+
+ public AgentServiceImpl(SlcAgentDescriptorDao slcAgentDescriptorDao) {
+ this.slcAgentDescriptorDao = slcAgentDescriptorDao;
+ }
+
+ public void register(SlcAgentDescriptor slcAgentDescriptor) {
+ slcAgentDescriptorDao.create(slcAgentDescriptor);
+ log.info("Registered agent #" + slcAgentDescriptor.getUuid());
+ }
+
+}
--- /dev/null
+package org.argeo.slc.services.impl.test;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+import org.argeo.slc.core.test.tree.TreeTestResultCollection;\r
+import org.argeo.slc.dao.process.SlcExecutionDao;\r
+import org.argeo.slc.dao.test.TestRunDescriptorDao;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
+import org.argeo.slc.process.SlcExecution;\r
+import org.argeo.slc.services.test.TestManagerService;\r
+import org.argeo.slc.test.TestRunDescriptor;\r
+\r
+/** Implementation of complex operations impacting the underlying data. */\r
+public class TestManagerServiceImpl implements TestManagerService {\r
+ private Log log = LogFactory.getLog(getClass());\r
+\r
+ private final TreeTestResultDao treeTestResultDao;\r
+ private final TestRunDescriptorDao testRunDescriptorDao;\r
+ private final SlcExecutionDao slcExecutionDao;\r
+ private final TreeTestResultCollectionDao treeTestResultCollectionDao;\r
+\r
+ public TestManagerServiceImpl(TreeTestResultDao treeTestResultDao,\r
+ TestRunDescriptorDao testRunDescriptorDao,\r
+ SlcExecutionDao slcExecutionDao,\r
+ TreeTestResultCollectionDao treeTestResultCollectionDao) {\r
+ this.treeTestResultDao = treeTestResultDao;\r
+ this.testRunDescriptorDao = testRunDescriptorDao;\r
+ this.slcExecutionDao = slcExecutionDao;\r
+ this.treeTestResultCollectionDao = treeTestResultCollectionDao;\r
+ }\r
+\r
+ public void registerTestRunDescriptor(TestRunDescriptor testRunDescriptor) {\r
+ if (testRunDescriptor != null) {\r
+ testRunDescriptorDao.saveOrUpdate(testRunDescriptor);\r
+\r
+ // Update tree test result collection\r
+ // TODO: optimize\r
+\r
+ if (testRunDescriptor.getSlcExecutionUuid() != null) {\r
+ SlcExecution slcExecution = slcExecutionDao\r
+ .getSlcExecution(testRunDescriptor\r
+ .getSlcExecutionUuid());\r
+ if (slcExecution != null) {\r
+ String collectionId = slcExecution.getUser() != null ? slcExecution\r
+ .getUser()\r
+ : "default";\r
+ addResultToCollection(collectionId, testRunDescriptor\r
+ .getTestResultUuid());\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ public void addResultToCollection(String collectionId, String resultUuid) {\r
+ TreeTestResultCollection ttrc = treeTestResultCollectionDao\r
+ .getTestResultCollection(collectionId);\r
+ if (ttrc == null) {\r
+ ttrc = new TreeTestResultCollection(collectionId);\r
+ treeTestResultCollectionDao.create(ttrc);\r
+ }\r
+ treeTestResultCollectionDao.addResultToCollection(ttrc, resultUuid);\r
+ }\r
+\r
+ public void removeResultFromCollection(String collectionId,\r
+ String resultUuid) {\r
+ TreeTestResultCollection ttrc = treeTestResultCollectionDao\r
+ .getTestResultCollection(collectionId);\r
+ if (ttrc != null) {\r
+ treeTestResultCollectionDao.removeResultFromCollection(ttrc,\r
+ resultUuid);\r
+ }\r
+\r
+ // Delete collection if empty\r
+ // see https://www.argeo.org/bugzilla/show_bug.cgi?id=74\r
+ if (ttrc.getResults().size() == 0) {\r
+ treeTestResultCollectionDao.delete(ttrc);\r
+ }\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.services.runtime;
+
+import org.argeo.slc.runtime.SlcAgentDescriptor;
+
+public interface AgentService {
+ public void register(SlcAgentDescriptor slcAgentDescriptor);
+}
+++ /dev/null
-package org.argeo.slc.services.test.impl;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-import org.argeo.slc.core.test.tree.TreeTestResultCollection;\r
-import org.argeo.slc.dao.process.SlcExecutionDao;\r
-import org.argeo.slc.dao.test.TestRunDescriptorDao;\r
-import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao;\r
-import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
-import org.argeo.slc.process.SlcExecution;\r
-import org.argeo.slc.services.test.TestManagerService;\r
-import org.argeo.slc.test.TestRunDescriptor;\r
-\r
-/** Implementation of complex operations impacting the underlying data. */\r
-public class TestManagerServiceImpl implements TestManagerService {\r
- private Log log = LogFactory.getLog(getClass());\r
-\r
- private final TreeTestResultDao treeTestResultDao;\r
- private final TestRunDescriptorDao testRunDescriptorDao;\r
- private final SlcExecutionDao slcExecutionDao;\r
- private final TreeTestResultCollectionDao treeTestResultCollectionDao;\r
-\r
- public TestManagerServiceImpl(TreeTestResultDao treeTestResultDao,\r
- TestRunDescriptorDao testRunDescriptorDao,\r
- SlcExecutionDao slcExecutionDao,\r
- TreeTestResultCollectionDao treeTestResultCollectionDao) {\r
- this.treeTestResultDao = treeTestResultDao;\r
- this.testRunDescriptorDao = testRunDescriptorDao;\r
- this.slcExecutionDao = slcExecutionDao;\r
- this.treeTestResultCollectionDao = treeTestResultCollectionDao;\r
- }\r
-\r
- public void registerTestRunDescriptor(TestRunDescriptor testRunDescriptor) {\r
- if (testRunDescriptor != null) {\r
- testRunDescriptorDao.saveOrUpdate(testRunDescriptor);\r
-\r
- // Update tree test result collection\r
- // TODO: optimize\r
-\r
- if (testRunDescriptor.getSlcExecutionUuid() != null) {\r
- SlcExecution slcExecution = slcExecutionDao\r
- .getSlcExecution(testRunDescriptor\r
- .getSlcExecutionUuid());\r
- if (slcExecution != null) {\r
- String collectionId = slcExecution.getUser() != null ? slcExecution\r
- .getUser()\r
- : "default";\r
- addResultToCollection(collectionId, testRunDescriptor\r
- .getTestResultUuid());\r
- }\r
- }\r
- }\r
- }\r
-\r
- public void addResultToCollection(String collectionId, String resultUuid) {\r
- TreeTestResultCollection ttrc = treeTestResultCollectionDao\r
- .getTestResultCollection(collectionId);\r
- if (ttrc == null) {\r
- ttrc = new TreeTestResultCollection(collectionId);\r
- treeTestResultCollectionDao.create(ttrc);\r
- }\r
- treeTestResultCollectionDao.addResultToCollection(ttrc, resultUuid);\r
- }\r
-\r
- public void removeResultFromCollection(String collectionId,\r
- String resultUuid) {\r
- TreeTestResultCollection ttrc = treeTestResultCollectionDao\r
- .getTestResultCollection(collectionId);\r
- if (ttrc != null) {\r
- treeTestResultCollectionDao.removeResultFromCollection(ttrc,\r
- resultUuid);\r
- }\r
-\r
- // Delete collection if empty\r
- // see https://www.argeo.org/bugzilla/show_bug.cgi?id=74\r
- if (ttrc.getResults().size() == 0) {\r
- treeTestResultCollectionDao.delete(ttrc);\r
- }\r
- }\r
-\r
-}\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:amq="http://activemq.apache.org/schema/core" 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
+ http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.2.0.xsd">
+
+ <import resource="classpath:org/argeo/slc/jms/spring.xml" />
+
+ <amq:broker useJmx="false" persistent="false">
+ <amq:transportConnectors>
+ <amq:transportConnector uri="tcp://localhost:61616" />
+ </amq:transportConnectors>
+ </amq:broker>
+
+ <amq:connectionFactory id="amqConnectionFactory"
+ brokerURL="vm://localhost" />
+
+ <bean id="jmsConnectionFactory"
+ class="org.springframework.jms.connection.SingleConnectionFactory">
+ <property name="targetConnectionFactory">
+ <ref local="amqConnectionFactory" />
+ </property>
+ </bean>
+
+ <!-- Destinations -->
+ <amq:topic id="destination.agent.register" physicalName="agent.register" />
+
+ <!-- Templates -->
+ <bean id="template.listenerContainer"
+ class="org.springframework.jms.listener.DefaultMessageListenerContainer"
+ abstract="true">
+ <property name="connectionFactory" ref="jmsConnectionFactory" />
+ <property name="transactionManager" ref="transactionManager" />
+ </bean>
+
+ <bean id="template.listenerAdapter"
+ class="org.springframework.jms.listener.adapter.MessageListenerAdapter"
+ abstract="true">
+ <property name="messageConverter" ref="slcDefault.jms.castorMessageConverter" />
+ </bean>
+
+</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" xmlns:aop="http://www.springframework.org/schema/aop"
+ xmlns:tx="http://www.springframework.org/schema/tx"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
+ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
+ default-lazy-init="true">
+
+ <import
+ resource="classpath:/org/argeo/slc/hibernate/spring/applicationContext.xml" />
+
+ <!-- Use session factories -->
+ <bean id="sessionFactory" parent="${sessionFactoryParentBean}" />
+
+ <!-- JNDI data source -->
+ <bean id="slcDefault.jndiTemplate" class="org.springframework.jndi.JndiTemplate">
+ </bean>
+
+ <bean id="slcDefaut.dataSourceJndi" class="org.springframework.jndi.JndiObjectFactoryBean">
+ <property name="jndiTemplate" ref="slcDefault.jndiTemplate" />
+ <property name="jndiName" value="java:comp/env/jdbc/mainDs" />
+ </bean>
+
+ <!-- DB types -->
+ <bean id="slcServerDefault.sessionFactory.HSQL" parent="slcTemplates.sessionFactory.hibernateBasic">
+ <property name="dataSource" ref="slcDefaut.dataSourceJndi" />
+ <property name="hibernateProperties">
+ <value><![CDATA[
+ hibernate.dialect=org.hibernate.dialect.HSQLDialect
+ hibernate.hbm2ddl.auto=update
+ hibernate.connection.autocommit=false
+ ]]></value>
+ </property>
+ </bean>
+
+ <bean id="slcServerDefault.sessionFactory.HSQLTest" parent="slcTemplates.sessionFactory.hibernateBasic">
+ <property name="dataSource" ref="slcDefaut.dataSourceJndi" />
+ <property name="hibernateProperties">
+ <value><![CDATA[
+ hibernate.dialect=org.hibernate.dialect.HSQLDialect
+ hibernate.hbm2ddl.auto=create
+ hibernate.generate_statistics=true
+ hibernate.connection.autocommit=false
+ ]]></value>
+ </property>
+ </bean>
+
+ <bean id="slcServerDefault.sessionFactory.MySQL" parent="slcTemplates.sessionFactory.hibernateBasic">
+ <property name="dataSource" ref="slcDefaut.dataSourceJndi" />
+ <property name="hibernateProperties">
+ <value><![CDATA[
+ hibernate.dialect=org.hibernate.dialect.MySQLDialect
+ hibernate.hbm2ddl.auto=update
+ hibernate.connection.autocommit=false
+ ]]></value>
+ </property>
+ </bean>
+
+ <bean id="slcServerDefault.sessionFactory.MySQL5" parent="slcTemplates.sessionFactory.hibernateBasic">
+ <property name="dataSource" ref="slcDefaut.dataSourceJndi" />
+ <property name="hibernateProperties">
+ <value><![CDATA[
+ hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
+ hibernate.hbm2ddl.auto=update
+ hibernate.connection.autocommit=false
+ ]]></value>
+ </property>
+ </bean>
+
+ <bean id="slcServerDefault.sessionFactory.Sybase" parent="slcTemplates.sessionFactory.hibernateBasic">
+ <property name="dataSource" ref="slcDefaut.dataSourceJndi" />
+ <property name="hibernateProperties">
+ <value><![CDATA[
+ hibernate.dialect=org.hibernate.dialect.SybaseDialect
+ hibernate.hbm2ddl.auto=update
+ hibernate.connection.autocommit=false
+ ]]></value>
+ </property>
+ </bean>
+
+ <!-- DAOs -->
+ <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
+ <property name="sessionFactory" ref="sessionFactory" />
+ <property name="allowCreate" value="false" />
+ </bean>
+
+ <bean id="testResultDao" parent="slcTemplates.dao.testResultDao">
+ <property name="hibernateTemplate" ref="hibernateTemplate" />
+ </bean>
+
+ <bean id="testResultCollectionDao" parent="slcTemplates.dao.testResultCollectionDao">
+ <property name="hibernateTemplate" ref="hibernateTemplate" />
+ </bean>
+
+ <bean id="testRunDescriptorDao" parent="slcTemplates.dao.testRunDescriptorDao">
+ <property name="hibernateTemplate" ref="hibernateTemplate" />
+ </bean>
+
+ <bean id="slcExecutionDao" parent="slcTemplates.dao.slcExecutionDao">
+ <property name="hibernateTemplate" ref="hibernateTemplate" />
+ </bean>
+
+ <bean id="slcAgentDescriptorDao" parent="slcTemplates.dao.slcAgentDescriptorDao">
+ <property name="hibernateTemplate" ref="hibernateTemplate" />
+ </bean>
+
+ <!-- Hibernate instrumentation -->
+ <bean id="osivInterceptor"
+ class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
+ <property name="sessionFactory" ref="sessionFactory" />
+ </bean>
+
+ <!-- Transaction -->
+ <bean id="transactionManager"
+ class="org.springframework.orm.hibernate3.HibernateTransactionManager"
+ lazy-init="false">
+ <property name="sessionFactory" ref="sessionFactory" />
+ </bean>
+
+</beans>
\ 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:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
+ xmlns:tx="http://www.springframework.org/schema/tx"
+ xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
- default-lazy-init="true">
-
- <import
- resource="classpath:/org/argeo/slc/hibernate/spring/applicationContext.xml" />
- <import resource="transaction.xml" />
-
- <!-- Properties -->
- <bean
- class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer"
- lazy-init="false">
- <property name="contextOverride" value="true" />
- <property name="properties">
- <props>
- <prop key="sessionFactoryParentBean">
- slcServerDefault.sessionFactory.HSQL
+ default-lazy-init="false">
+
+ <!-- Properties -->
+ <bean
+ class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer"
+ lazy-init="false">
+ <property name="contextOverride" value="true" />
+ <property name="properties">
+ <props>
+ <prop key="sessionFactoryParentBean">
+ slcServerDefault.sessionFactory.HSQL
</prop>
- </props>
- </property>
- </bean>
-
- <!-- Use session factories -->
- <bean id="sessionFactory" parent="${sessionFactoryParentBean}" />
-
- <!-- JNDI data source -->
- <bean id="slcDefault.jndiTemplate"
- class="org.springframework.jndi.JndiTemplate">
- </bean>
-
- <bean id="slcDefaut.dataSourceJndi"
- class="org.springframework.jndi.JndiObjectFactoryBean">
- <property name="jndiTemplate" ref="slcDefault.jndiTemplate" />
- <property name="jndiName" value="java:comp/env/jdbc/mainDs" />
- </bean>
-
- <!-- DB types -->
- <bean id="slcServerDefault.sessionFactory.HSQL"
- parent="slcTemplates.sessionFactory.hibernateBasic">
- <property name="dataSource" ref="slcDefaut.dataSourceJndi" />
- <property name="hibernateProperties">
- <value><![CDATA[
- hibernate.dialect=org.hibernate.dialect.HSQLDialect
- hibernate.hbm2ddl.auto=update
- hibernate.connection.autocommit=false
- ]]></value>
- </property>
- </bean>
-
- <bean id="slcServerDefault.sessionFactory.HSQLTest"
- parent="slcTemplates.sessionFactory.hibernateBasic">
- <property name="dataSource" ref="slcDefaut.dataSourceJndi" />
- <property name="hibernateProperties">
- <value><![CDATA[
- hibernate.dialect=org.hibernate.dialect.HSQLDialect
- hibernate.hbm2ddl.auto=create
- hibernate.generate_statistics=true
- hibernate.connection.autocommit=false
- ]]></value>
- </property>
- </bean>
-
- <bean id="slcServerDefault.sessionFactory.MySQL"
- parent="slcTemplates.sessionFactory.hibernateBasic">
- <property name="dataSource" ref="slcDefaut.dataSourceJndi" />
- <property name="hibernateProperties">
- <value><![CDATA[
- hibernate.dialect=org.hibernate.dialect.MySQLDialect
- hibernate.hbm2ddl.auto=update
- hibernate.connection.autocommit=false
- ]]></value>
- </property>
- </bean>
-
- <bean id="slcServerDefault.sessionFactory.MySQL5"
- parent="slcTemplates.sessionFactory.hibernateBasic">
- <property name="dataSource" ref="slcDefaut.dataSourceJndi" />
- <property name="hibernateProperties">
- <value><![CDATA[
- hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
- hibernate.hbm2ddl.auto=update
- hibernate.connection.autocommit=false
- ]]></value>
- </property>
- </bean>
-
- <bean id="slcServerDefault.sessionFactory.Sybase"
- parent="slcTemplates.sessionFactory.hibernateBasic">
- <property name="dataSource" ref="slcDefaut.dataSourceJndi" />
- <property name="hibernateProperties">
- <value><![CDATA[
- hibernate.dialect=org.hibernate.dialect.SybaseDialect
- hibernate.hbm2ddl.auto=update
- hibernate.connection.autocommit=false
- ]]></value>
- </property>
- </bean>
-
- <!-- Services -->
- <bean id="testManagerService"
- class="org.argeo.slc.services.test.impl.TestManagerServiceImpl">
- <constructor-arg ref="testResultDao" />
- <constructor-arg ref="testRunDescriptorDao" />
- <constructor-arg ref="slcExecutionDao" />
- <constructor-arg ref="testResultCollectionDao" />
- </bean>
-
- <!-- DAOs -->
- <bean id="hibernateTemplate"
- class="org.springframework.orm.hibernate3.HibernateTemplate">
- <property name="sessionFactory" ref="sessionFactory" />
- <property name="allowCreate" value="false" />
- </bean>
-
- <bean id="testResultDao" parent="slcTemplates.dao.testResultDao">
- <property name="hibernateTemplate" ref="hibernateTemplate" />
- </bean>
-
- <bean id="testResultCollectionDao"
- parent="slcTemplates.dao.testResultCollectionDao">
- <property name="hibernateTemplate" ref="hibernateTemplate" />
- </bean>
-
- <bean id="testRunDescriptorDao"
- parent="slcTemplates.dao.testRunDescriptorDao">
- <property name="hibernateTemplate" ref="hibernateTemplate" />
- </bean>
-
- <bean id="slcExecutionDao"
- parent="slcTemplates.dao.slcExecutionDao">
- <property name="hibernateTemplate" ref="hibernateTemplate" />
- </bean>
-
- <!-- Hibernate instrumentation -->
- <bean id="osivInterceptor"
- class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
- <property name="sessionFactory" ref="sessionFactory" />
- </bean>
-
- <!-- Transaction -->
- <bean id="transactionManager"
- class="org.springframework.orm.hibernate3.HibernateTransactionManager"
- lazy-init="false">
- <property name="sessionFactory" ref="sessionFactory" />
- </bean>
+ </props>
+ </property>
+ <property name="ignoreUnresolvablePlaceholders" value="true" />
+ </bean>
+
+ <import resource="transaction.xml" />
+ <import resource="db.xml" />
+ <import resource="activemq.xml" />
+
+ <!-- Services -->
+ <bean id="testManagerService" class="org.argeo.slc.services.impl.test.TestManagerServiceImpl">
+ <constructor-arg ref="testResultDao" />
+ <constructor-arg ref="testRunDescriptorDao" />
+ <constructor-arg ref="slcExecutionDao" />
+ <constructor-arg ref="testResultCollectionDao" />
+ </bean>
+
+ <bean id="agentService" class="org.argeo.slc.services.impl.runtime.AgentServiceImpl">
+ <constructor-arg ref="slcAgentDescriptorDao" />
+ </bean>
+
+ <bean id="agentService.jmsContainer.register" parent="template.listenerContainer">
+ <property name="destination" ref="destination.agent.register" />
+ <property name="messageListener">
+ <bean parent="template.listenerAdapter">
+ <constructor-arg ref="agentService" />
+ <property name="defaultListenerMethod" value="register" />
+ </bean>
+ </property>
+ </bean>
</beans>
\ 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:aop="http://www.springframework.org/schema/aop"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
<aop:config>
<aop:pointcut id="daoProcessMethods"
expression="execution(* org.argeo.slc.dao.process.*.*(..))" />
- <aop:advisor advice-ref="daoAdvice"
- pointcut-ref="daoProcessMethods" />
+ <aop:advisor advice-ref="daoAdvice" pointcut-ref="daoProcessMethods" />
</aop:config>
<aop:config>
<aop:pointcut id="daoTestMethods"
expression="execution(* org.argeo.slc.dao.test.*.*(..))" />
- <aop:advisor advice-ref="daoAdvice"
- pointcut-ref="daoTestMethods" />
+ <aop:advisor advice-ref="daoAdvice" pointcut-ref="daoTestMethods" />
</aop:config>
<aop:config>
<aop:pointcut id="daoTestTreeMethods"
expression="execution(* org.argeo.slc.dao.test.tree.*.*(..))" />
- <aop:advisor advice-ref="daoAdvice"
- pointcut-ref="daoTestTreeMethods" />
+ <aop:advisor advice-ref="daoAdvice" pointcut-ref="daoTestTreeMethods" />
</aop:config>
- <tx:advice id="daoAdvice"
+ <tx:advice id="daoAdvice" transaction-manager="transactionManager">
+ <tx:attributes>
+ <tx:method name="get*" propagation="REQUIRED" read-only="true" />
+ <tx:method name="list*" propagation="REQUIRED" read-only="true" />
+ <tx:method name="*" propagation="REQUIRED" />
+ </tx:attributes>
+ </tx:advice>
+
+ <aop:config>
+ <aop:pointcut id="pointcut.services.allMethods"
+ expression="execution(* org.argeo.slc.services.*.*.*(..))" />
+ <aop:advisor advice-ref="advice.allMethodsRequired"
+ pointcut-ref="pointcut.services.allMethods" />
+ </aop:config>
+
+ <tx:advice id="advice.allMethodsRequired"
transaction-manager="transactionManager">
<tx:attributes>
- <tx:method name="get*" propagation="REQUIRED"
- read-only="true" />
- <tx:method name="list*" propagation="REQUIRED"
- read-only="true" />
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
--- /dev/null
+package org.argeo.slc.dao.runtime;
+
+import java.util.List;
+
+import org.argeo.slc.runtime.SlcAgentDescriptor;
+
+public interface SlcAgentDescriptorDao {
+ public void create(SlcAgentDescriptor slcAgentDescriptor);
+
+ public List<SlcAgentDescriptor> listSlcAgentDescriptors();
+
+}
--- /dev/null
+package org.argeo.slc.runtime;
+
+/** A local agent, able to run SLC Execution locally. */
+public interface SlcAgent {
+}
--- /dev/null
+package org.argeo.slc.runtime;
+
+public class SlcAgentDescriptor {
+ private String uuid;
+ private String host;
+
+ public String getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
+
+ public String getHost() {
+ return host;
+ }
+
+ public void setHost(String host) {
+ this.host = host;
+ }
+
+}
</plugins>
</build>
<dependencies>
+ <!-- SLC -->
+ <dependency>
+ <groupId>org.argeo.slc.runtime</groupId>
+ <artifactId>org.argeo.slc.support.simple</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <!-- Spring -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>org.springframework.jms</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.ws</groupId>
+ <artifactId>org.springframework.oxm</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>org.springframework.transaction</artifactId>
+ </dependency>
+
+ <!-- JMS -->
<dependency>
<groupId>javax.jms</groupId>
<artifactId>com.springsource.javax.jms</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>com.springsource.javax.management.j2ee</artifactId>
+ </dependency>
+
+ <!-- ActiveMQ -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>com.springsource.org.apache.activemq</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.xbean</groupId>
+ <artifactId>com.springsource.org.apache.xbean.spring</artifactId>
+ </dependency>
+ <!--
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-pool</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-optional</artifactId>
+ </dependency>
+ -->
</dependencies>
</project>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.jms;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.UUID;
+
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageListener;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.argeo.slc.SlcException;
+import org.argeo.slc.runtime.SlcAgent;
+import org.argeo.slc.runtime.SlcAgentDescriptor;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.jms.core.JmsTemplate;
+
+/** JMS based implementation of SLC Agent. */
+public class JmsAgent implements SlcAgent, MessageListener, InitializingBean {
+ private final static Log log = LogFactory.getLog(JmsAgent.class);
+
+ private final SlcAgentDescriptor agentDescriptor;
+ private JmsTemplate jmsTemplate;
+ private Destination agentRegister;
+
+ public JmsAgent() {
+ try {
+ agentDescriptor = new SlcAgentDescriptor();
+ agentDescriptor.setUuid(UUID.randomUUID().toString());
+ agentDescriptor.setHost(InetAddress.getLocalHost().getHostName());
+ } catch (UnknownHostException e) {
+ throw new SlcException("Unable to create agent descriptor.", e);
+ }
+ }
+
+ public void afterPropertiesSet() throws Exception {
+ jmsTemplate.convertAndSend(agentRegister, agentDescriptor);
+ log.info("Agent #" + agentDescriptor.getUuid() + " registered to "
+ + agentRegister);
+ }
+
+ public void onMessage(Message message) {
+ try {
+ log.info("Received message " + message.getJMSMessageID());
+ } catch (JMSException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ public void setJmsTemplate(JmsTemplate jmsTemplate) {
+ this.jmsTemplate = jmsTemplate;
+ }
+
+ public void setAgentRegister(Destination agentRegister) {
+ this.agentRegister = agentRegister;
+ }
+
+}
--- /dev/null
+package org.argeo.slc.jms;
+
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+
+import org.argeo.slc.SlcException;
+import org.springframework.jms.support.converter.MessageConversionException;
+import org.springframework.jms.support.converter.MessageConverter;
+import org.springframework.oxm.Marshaller;
+import org.springframework.oxm.Unmarshaller;
+import org.springframework.xml.transform.StringResult;
+import org.springframework.xml.transform.StringSource;
+
+public class MarshallerMessageConverter implements MessageConverter {
+ private Marshaller marshaller;
+ private Unmarshaller unmarshaller;
+
+ public Object fromMessage(Message message) throws JMSException,
+ MessageConversionException {
+ if (message instanceof TextMessage) {
+ String text = ((TextMessage) message).getText();
+ try {
+ return unmarshaller.unmarshal(new StringSource(text));
+ } catch (Exception e) {
+ throw new SlcException("Could not unmarshall " + text, e);
+ }
+ } else {
+ throw new SlcException("Only JMS TextMessage are supported.");
+ }
+ }
+
+ public Message toMessage(Object object, Session session)
+ throws JMSException, MessageConversionException {
+ StringResult result = new StringResult();
+ try {
+ marshaller.marshal(object, result);
+ } catch (Exception e) {
+ throw new SlcException("Could not marshall " + object, e);
+ }
+ TextMessage msg = session.createTextMessage();
+ msg.setText(result.toString());
+ return msg;
+ }
+
+ public void setMarshaller(Marshaller marshaller) {
+ this.marshaller = marshaller;
+ }
+
+ public void setUnmarshaller(Unmarshaller unmarshaller) {
+ this.unmarshaller = unmarshaller;
+ }
+
+}
--- /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="true">
+
+ <import resource="classpath:org/argeo/slc/castor/spring.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>
+
+</beans>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>\r
+\r
+<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN" "http://castor.org/mapping.dtd">\r
+\r
+<mapping>\r
+ <description>Runtime objects XML mapping</description>\r
+\r
+ <class name="org.argeo.slc.runtime.SlcAgentDescriptor">\r
+ <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+ ns-prefix="slc" />\r
+ <field name="uuid" identity="true">\r
+ <bind-xml node="attribute" />\r
+ </field>\r
+ <field name="host" />\r
+ </class>\r
+</mapping>
\ No newline at end of file
--- /dev/null
+<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="true">
+
+ <bean id="slcDefault.castor.marshaller"
+ class="org.springframework.oxm.castor.CastorMarshaller">
+ <property name="mappingLocations">
+ <list>
+ <value>
+ classpath:org/argeo/slc/castor/msg.xml
+ </value>
+ <value>
+ classpath:org/argeo/slc/castor/process.xml
+ </value>
+ <value>
+ classpath:org/argeo/slc/castor/runtime.xml
+ </value>
+ <value>
+ classpath:org/argeo/slc/castor/structure.xml
+ </value>
+ <value>
+ classpath:org/argeo/slc/castor/test.xml
+ </value>
+ </list>
+ </property>
+ <property name="whitespacePreserve" value="true" />
+ </bean>
+
+ <bean id="slcDefault.castor.xsltReportGenerator"
+ class="org.argeo.slc.xml.test.tree.XsltReportGenerator"
+ init-method="init">
+ <property name="xsltStyleSheet"
+ value="classpath:/org/argeo/slc/core/test/tree/basicReport.xslt" />
+ <property name="marshaller" ref="slcDefault.castor.marshaller" />
+ <property name="logXml" value="false" />
+ <property name="outputDir" value="${slc.workDir}/results/html" />
+ </bean>
+
+ <bean name="slcDefault.castor.fileSlcExecutionNotifier"
+ class="org.argeo.slc.xml.process.FileSlcExecutionNotifier">
+ <property name="basePath" value="${slc.workDir}/process" />
+ <property name="marshaller" ref="slcDefault.castor.marshaller" />
+ </bean>
+
+</beans>
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
default-lazy-init="true">
+<!-- DEPRECATED, USE classpath:org/argeo/slc/castor/spring.xml instead -->
+
+ <import resource="classpath:org/argeo/slc/castor/spring.xml"/>
+<!--
<bean id="slcDefault.castor.marshaller"
class="org.springframework.oxm.castor.CastorMarshaller">
<property name="mappingLocations">
<property name="basePath" value="${slc.workDir}/process" />
<property name="marshaller" ref="slcDefault.castor.marshaller" />
</bean>
-
+ -->
</beans>
--- /dev/null
+package org.argeo.slc.hibernate.runtime;\r
+\r
+import java.util.List;\r
+\r
+import org.argeo.slc.dao.runtime.SlcAgentDescriptorDao;\r
+import org.argeo.slc.runtime.SlcAgentDescriptor;\r
+import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
+\r
+public class SlcAgentDescriptorDaoHibernate extends HibernateDaoSupport\r
+ implements SlcAgentDescriptorDao {\r
+\r
+ public void create(SlcAgentDescriptor slcAgentDescriptor) {\r
+ getHibernateTemplate().save(slcAgentDescriptor);\r
+ }\r
+\r
+ public List<SlcAgentDescriptor> listSlcAgentDescriptors() {\r
+ return (List<SlcAgentDescriptor>) getHibernateTemplate().loadAll(\r
+ SlcAgentDescriptor.class);\r
+ }\r
+\r
+}\r
maxElementsInMemory="10000" />
<cache name="org.argeo.slc.core.test.SimpleResultPart"
maxElementsInMemory="10000" />
- <cache
- name="org.argeo.slc.core.test.tree.TreeTestResult.resultParts"
+ <cache name="org.argeo.slc.core.test.tree.TreeTestResult.resultParts"
maxElementsInMemory="10000" />
<cache name="org.argeo.slc.core.test.tree.TreeTestResult.elements"
maxElementsInMemory="10000" />
<cache name="org.argeo.slc.core.test.tree.TreeTestResultCollection"
maxElementsInMemory="100" />
- <cache
- name="org.argeo.slc.core.test.tree.TreeTestResultCollection.results"
+ <cache name="org.argeo.slc.core.test.tree.TreeTestResultCollection.results"
maxElementsInMemory="1000" />
<cache name="org.argeo.slc.process.SlcExecution"
<cache name="org.argeo.slc.process.SlcExecutionStep.logLines"
maxElementsInMemory="100000" />
- <cache name="org.argeo.slc.core.test.TestRunDescriptor"
+ <cache name="org.argeo.slc.test.TestRunDescriptor"
maxElementsInMemory="1000" />
+ <cache name="org.argeo.slc.runtime.SlcAgentDescriptor"
+ maxElementsInMemory="100" />
+
</ehcache>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC\r
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"\r
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
+<hibernate-mapping package="org.argeo.slc.runtime">\r
+ <class name="SlcAgentDescriptor" table="SLC_AGENT_DESCRIPTOR">\r
+ <cache usage="read-write" />\r
+\r
+ <id name="uuid" column="UUID" />\r
+ <property name="host" column="HOST" />\r
+ </class>
+</hibernate-mapping>
\ No newline at end of file
<property name="suppressClose" value="true" />
</bean>
- <bean id="slcTemplates.sessionFactory.hibernateBasic"
- abstract="true"
+ <bean id="slcTemplates.sessionFactory.hibernateBasic" abstract="true"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="mappingResources">
<list>
<value>
org/argeo/slc/hibernate/process/SlcExecutionStep.hbm.xml
</value>
+ <value>
+ org/argeo/slc/hibernate/runtime/SlcAgentDescriptor.hbm.xml
+ </value>
</list>
</property>
- <property name="cacheProvider"
- ref="slcDefault.cacheProvider.ehCache" />
+ <property name="cacheProvider" ref="slcDefault.cacheProvider.ehCache" />
</bean>
- <bean id="slcDefault.cacheProvider.ehCache"
- class="net.sf.ehcache.hibernate.SingletonEhCacheProvider"
+ <bean id="slcDefault.cacheProvider.ehCache" class="net.sf.ehcache.hibernate.SingletonEhCacheProvider"
depends-on="slcDefault.cacheProvider.ehCacheManager">
</bean>
value="classpath:/org/argeo/slc/hibernate/cache/ehcache.xml" />
</bean>
- <bean id="slcDefault.sessionFactory.hibernateTestHSQL"
- parent="slcTemplates.sessionFactory.hibernateBasic">
- <property name="dataSource"
- ref="slcDefault.dataSource.inMemoryTestHSQL" />
+ <bean id="slcDefault.sessionFactory.hibernateTestHSQL" parent="slcTemplates.sessionFactory.hibernateBasic">
+ <property name="dataSource" ref="slcDefault.dataSource.inMemoryTestHSQL" />
<property name="hibernateProperties">
<value><![CDATA[\r
hibernate.dialect=org.hibernate.dialect.HSQLDialect\r
class="org.argeo.slc.hibernate.process.SlcExecutionDaoHibernate"
abstract="true">
</bean>
-
+
+ <bean id="slcTemplates.dao.slcAgentDescriptorDao"
+ class="org.argeo.slc.hibernate.runtime.SlcAgentDescriptorDaoHibernate"
+ abstract="true">
+ </bean>
</beans>
\ No newline at end of file