]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Integrate ActiveMQ
authorMathieu Baudier <mbaudier@argeo.org>
Sun, 11 Jan 2009 19:10:40 +0000 (19:10 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sun, 11 Jan 2009 19:10:40 +0000 (19:10 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@2074 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

31 files changed:
org.argeo.slc.webapp/src/main/webapp/WEB-INF/activemq.xml [deleted file]
org.argeo.slc.webapp/src/main/webapp/WEB-INF/applicationContext.xml
org.argeo.slc.webapp/src/main/webapp/WEB-INF/classes/log4j.properties
org.argeo.slc/pom.xml
runtime/org.argeo.slc.launcher/pom.xml
runtime/org.argeo.slc.launcher/src/main/java/org/argeo/slc/cli/SlcMain.java
runtime/org.argeo.slc.server/.project
runtime/org.argeo.slc.server/.springBeans [new file with mode: 0644]
runtime/org.argeo.slc.server/pom.xml
runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/impl/runtime/AgentServiceImpl.java [new file with mode: 0644]
runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/impl/test/TestManagerServiceImpl.java [new file with mode: 0644]
runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/runtime/AgentService.java [new file with mode: 0644]
runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/impl/TestManagerServiceImpl.java [deleted file]
runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/activemq.xml [new file with mode: 0644]
runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/db.xml [new file with mode: 0644]
runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/servletContext.xml
runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/transaction.xml
runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/dao/runtime/SlcAgentDescriptorDao.java [new file with mode: 0644]
runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/runtime/SlcAgent.java [new file with mode: 0644]
runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/runtime/SlcAgentDescriptor.java [new file with mode: 0644]
runtime/org.argeo.slc.support.activemq/pom.xml
runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAgent.java [new file with mode: 0644]
runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/MarshallerMessageConverter.java [new file with mode: 0644]
runtime/org.argeo.slc.support.activemq/src/main/resources/org/argeo/slc/jms/spring.xml [new file with mode: 0644]
runtime/org.argeo.slc.support.castor/src/main/resources/org/argeo/slc/castor/runtime.xml [new file with mode: 0644]
runtime/org.argeo.slc.support.castor/src/main/resources/org/argeo/slc/castor/spring.xml [new file with mode: 0644]
runtime/org.argeo.slc.support.castor/src/main/resources/org/argeo/slc/castor/spring/applicationContext.xml
runtime/org.argeo.slc.support.hibernate/src/main/java/org/argeo/slc/hibernate/runtime/SlcAgentDescriptorDaoHibernate.java [new file with mode: 0644]
runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/cache/ehcache.xml
runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/runtime/SlcAgentDescriptor.hbm.xml [new file with mode: 0644]
runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/spring/applicationContext.xml

diff --git a/org.argeo.slc.webapp/src/main/webapp/WEB-INF/activemq.xml b/org.argeo.slc.webapp/src/main/webapp/WEB-INF/activemq.xml
deleted file mode 100644 (file)
index 7174474..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-<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
index 131fb21b0e397fbf604da7cb4145dbf7adb3328f..97ca543651d7e69223068de9c98a28cb4a291001 100644 (file)
                <import resource="classpath:/org/argeo/slc/server/spring/jmx.xml" />
        -->
 
                <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>
        <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
 </beans>
\ No newline at end of file
index e80a390526c66cb69b2f71318e116176b4ef1f0a..925c2181b81ff1ba01fd68e07cbb26007646c470 100644 (file)
@@ -3,7 +3,7 @@ log4j.rootLogger=WARN, console
 \r
 ## Levels\r
 # Slc\r
 \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
 \r
 # Spring\r
 log4j.logger.org.springframework=INFO\r
index 0ef2bd723b1fde2cc28bd5d64e451ce239894e64..901aa28ff8526283479a9fa426f67e928671d840 100644 (file)
@@ -353,6 +353,11 @@ limitations under the License.
                                <artifactId>org.springframework.jdbc</artifactId>
                                <version>${version.spring}</version>
                        </dependency>
                                <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>
                        <dependency>
                                <groupId>org.springframework</groupId>
                                <artifactId>org.springframework.web</artifactId>
@@ -368,6 +373,11 @@ limitations under the License.
                                <artifactId>org.springframework.aop</artifactId>
                                <version>${version.spring}</version>
                        </dependency>
                                <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>
 
                        <dependency>
                                <groupId>org.springframework.ws</groupId>
@@ -604,6 +614,13 @@ limitations under the License.
                                <artifactId>com.springsource.javax.jms</artifactId>
                                <version>1.1.0</version>
                        </dependency>
                                <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>
                        <dependency>
                                <groupId>org.apache.activemq</groupId>
                                <artifactId>com.springsource.org.apache.activemq</artifactId>
@@ -614,16 +631,23 @@ limitations under the License.
                                <artifactId>com.springsource.org.apache.activemq.web</artifactId>
                                <version>${version.activemq}</version>
                        </dependency>
                                <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.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>
                </dependencies>
        </dependencyManagement>
        <repositories>
index 5057746a6e93288a724627e0e7b523eb21e1db7f..1d59972e97ac5fa0cd0fdde98526ea76b166b4cb 100644 (file)
                        <artifactId>org.argeo.slc.support.simple</artifactId>
                        <version>${project.version}</version>
                </dependency>
                        <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>
                <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
 
        </dependencies>
 </project>
\ No newline at end of file
index c4193369a0b172b3b66eb165503538a1b43f005d..32c3ce90660f3c8ffc87a745e5b9eb153e1a7c0c 100644 (file)
@@ -18,6 +18,9 @@ import org.argeo.slc.SlcException;
 import org.argeo.slc.logging.Log4jUtils;
 import org.argeo.slc.runtime.SlcExecutionContext;
 import org.argeo.slc.runtime.SlcRuntime;
 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 {
 
 public class SlcMain {
        public enum Mode {
@@ -168,6 +171,32 @@ public class SlcMain {
                                System.exit(1);
                        }
                }
                                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() {
        }
 
        public static void printUsage() {
index 26efbecd6d4da1d5051f1a53008bc54bad84aba8..6638962114578e2f3b74827935d112c32e9ed4fd 100644 (file)
@@ -1,23 +1,29 @@
-<?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>
diff --git a/runtime/org.argeo.slc.server/.springBeans b/runtime/org.argeo.slc.server/.springBeans
new file mode 100644 (file)
index 0000000..76d11cb
--- /dev/null
@@ -0,0 +1,14 @@
+<?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>
index 223116e07802826efe19d6b33f0cf6a1ff554f7e..a74058c2fc4577e03fe522294d691860f8744ace 100644 (file)
@@ -60,6 +60,7 @@
                </plugins>
        </build>
        <dependencies>
                </plugins>
        </build>
        <dependencies>
+               <!-- SLC -->
                <dependency>
                        <groupId>org.argeo.slc.runtime</groupId>
                        <artifactId>org.argeo.slc.support.hibernate</artifactId>
                <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>
                        <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>
                <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>
                </dependency>
+
+               <!-- Spring -->
                <dependency>
                        <groupId>org.springframework.ws</groupId>
                        <artifactId>org.springframework.ws</artifactId>
                <dependency>
                        <groupId>org.springframework.ws</groupId>
                        <artifactId>org.springframework.ws</artifactId>
                        <groupId>org.springframework</groupId>
                        <artifactId>org.springframework.aop</artifactId>
                </dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>org.springframework.aop</artifactId>
                </dependency>
+
+               <!-- J2EE -->
                <dependency>
                <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>
                </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>
                </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>
 
                </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>
                <dependency>
                        <groupId>org.apache.activemq</groupId>
-                       <artifactId>com.springsource.org.apache.activemq</artifactId>
+                       <artifactId>com.springsource.org.apache.activemq.web</artifactId>
                </dependency>
                </dependency>
+
+               <!-- Various -->
                <dependency>
                <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>
                </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>
                </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>
                </dependency>
 
        </dependencies>
diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/impl/runtime/AgentServiceImpl.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/impl/runtime/AgentServiceImpl.java
new file mode 100644 (file)
index 0000000..a4a67c1
--- /dev/null
@@ -0,0 +1,22 @@
+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());
+       }
+
+}
diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/impl/test/TestManagerServiceImpl.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/impl/test/TestManagerServiceImpl.java
new file mode 100644 (file)
index 0000000..0b2b565
--- /dev/null
@@ -0,0 +1,81 @@
+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
diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/runtime/AgentService.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/runtime/AgentService.java
new file mode 100644 (file)
index 0000000..c4bf2c0
--- /dev/null
@@ -0,0 +1,7 @@
+package org.argeo.slc.services.runtime;
+
+import org.argeo.slc.runtime.SlcAgentDescriptor;
+
+public interface AgentService {
+       public void register(SlcAgentDescriptor slcAgentDescriptor);
+}
diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/impl/TestManagerServiceImpl.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/impl/TestManagerServiceImpl.java
deleted file mode 100644 (file)
index 1cb9112..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-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
diff --git a/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/activemq.xml b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/activemq.xml
new file mode 100644 (file)
index 0000000..df37901
--- /dev/null
@@ -0,0 +1,42 @@
+<?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
diff --git a/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/db.xml b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/db.xml
new file mode 100644 (file)
index 0000000..f18ed82
--- /dev/null
@@ -0,0 +1,122 @@
+<?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
index 8b5b2e488dcbca687243ac990e63c82299c81ba0..ab64f945017011649fae65bf4e87c5699adfebc3 100644 (file)
 <?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
 <?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"
        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>
                 </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
 
 </beans>
\ No newline at end of file
index 43cabb8eac3c36fdfbfe6a99decc8edbf3414394..7f69fa4da820ff8fc4b07b06e2edcfc8cc1d260b 100644 (file)
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
 <?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
        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: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: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: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>
 
        </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>
                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>
                        <tx:method name="*" propagation="REQUIRED" />
                </tx:attributes>
        </tx:advice>
diff --git a/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/dao/runtime/SlcAgentDescriptorDao.java b/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/dao/runtime/SlcAgentDescriptorDao.java
new file mode 100644 (file)
index 0000000..3ad3070
--- /dev/null
@@ -0,0 +1,12 @@
+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();
+
+}
diff --git a/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/runtime/SlcAgent.java b/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/runtime/SlcAgent.java
new file mode 100644 (file)
index 0000000..fc3c2d5
--- /dev/null
@@ -0,0 +1,5 @@
+package org.argeo.slc.runtime;
+
+/** A local agent, able to run SLC Execution locally. */
+public interface SlcAgent {
+}
diff --git a/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/runtime/SlcAgentDescriptor.java b/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/runtime/SlcAgentDescriptor.java
new file mode 100644 (file)
index 0000000..39eadf6
--- /dev/null
@@ -0,0 +1,23 @@
+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;
+       }
+
+}
index 25253467d12424d350e573da7985db3d341c19fd..5e33d9f2971b40283f17690de4875e3f25c06951 100644 (file)
                </plugins>
        </build>
        <dependencies>
                </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>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.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
        </dependencies>
 </project>
\ No newline at end of file
diff --git a/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAgent.java b/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAgent.java
new file mode 100644 (file)
index 0000000..7aff0ab
--- /dev/null
@@ -0,0 +1,61 @@
+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;
+       }
+
+}
diff --git a/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/MarshallerMessageConverter.java b/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/MarshallerMessageConverter.java
new file mode 100644 (file)
index 0000000..dfab1e4
--- /dev/null
@@ -0,0 +1,55 @@
+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;
+       }
+
+}
diff --git a/runtime/org.argeo.slc.support.activemq/src/main/resources/org/argeo/slc/jms/spring.xml b/runtime/org.argeo.slc.support.activemq/src/main/resources/org/argeo/slc/jms/spring.xml
new file mode 100644 (file)
index 0000000..c8536ca
--- /dev/null
@@ -0,0 +1,14 @@
+<?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
diff --git a/runtime/org.argeo.slc.support.castor/src/main/resources/org/argeo/slc/castor/runtime.xml b/runtime/org.argeo.slc.support.castor/src/main/resources/org/argeo/slc/castor/runtime.xml
new file mode 100644 (file)
index 0000000..839603d
--- /dev/null
@@ -0,0 +1,16 @@
+<?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
diff --git a/runtime/org.argeo.slc.support.castor/src/main/resources/org/argeo/slc/castor/spring.xml b/runtime/org.argeo.slc.support.castor/src/main/resources/org/argeo/slc/castor/spring.xml
new file mode 100644 (file)
index 0000000..46f0ad2
--- /dev/null
@@ -0,0 +1,46 @@
+<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>
index 21c0ce59521124e06089fb40dbf0eff5543b0e4f..4e12b55671bd60101442eeb399b6aa64ac3e59f1 100644 (file)
@@ -3,6 +3,10 @@
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
        default-lazy-init="true">
 
        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">
        <bean id="slcDefault.castor.marshaller"
                class="org.springframework.oxm.castor.CastorMarshaller">
                <property name="mappingLocations">
@@ -39,5 +43,5 @@
                <property name="basePath" value="${slc.workDir}/process" />
                <property name="marshaller" ref="slcDefault.castor.marshaller" />
        </bean>
                <property name="basePath" value="${slc.workDir}/process" />
                <property name="marshaller" ref="slcDefault.castor.marshaller" />
        </bean>
-
+ -->
 </beans>
 </beans>
diff --git a/runtime/org.argeo.slc.support.hibernate/src/main/java/org/argeo/slc/hibernate/runtime/SlcAgentDescriptorDaoHibernate.java b/runtime/org.argeo.slc.support.hibernate/src/main/java/org/argeo/slc/hibernate/runtime/SlcAgentDescriptorDaoHibernate.java
new file mode 100644 (file)
index 0000000..c6b6ac9
--- /dev/null
@@ -0,0 +1,21 @@
+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
index 968e97373aceefc705f57f124f55bc0f738ed1ac..7cb97e1890adc9a871a86d10622e8c141d8d7fcb 100644 (file)
@@ -15,8 +15,7 @@
                maxElementsInMemory="10000" />
        <cache name="org.argeo.slc.core.test.SimpleResultPart"
                maxElementsInMemory="10000" />
                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" />
                maxElementsInMemory="10000" />
        <cache name="org.argeo.slc.core.test.tree.TreeTestResult.elements"
                maxElementsInMemory="10000" />
@@ -27,8 +26,7 @@
 
        <cache name="org.argeo.slc.core.test.tree.TreeTestResultCollection"
                maxElementsInMemory="100" />
 
        <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"
                maxElementsInMemory="1000" />
 
        <cache name="org.argeo.slc.process.SlcExecution"
        <cache name="org.argeo.slc.process.SlcExecutionStep.logLines"
                maxElementsInMemory="100000" />
 
        <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" />
 
                maxElementsInMemory="1000" />
 
+       <cache name="org.argeo.slc.runtime.SlcAgentDescriptor"
+               maxElementsInMemory="100" />
+
 </ehcache>
\ No newline at end of file
 </ehcache>
\ No newline at end of file
diff --git a/runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/runtime/SlcAgentDescriptor.hbm.xml b/runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/runtime/SlcAgentDescriptor.hbm.xml
new file mode 100644 (file)
index 0000000..dbc7649
--- /dev/null
@@ -0,0 +1,12 @@
+<?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
index 1d59de1a6660f05c4ad66c130445b83b33a38f1f..ed52529339b0e69dd1370a121a5b3c6b63051f2c 100644 (file)
@@ -14,8 +14,7 @@
                <property name="suppressClose" value="true" />
        </bean>
 
                <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>
                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/process/SlcExecutionStep.hbm.xml
                                </value>
+                               <value>
+                                       org/argeo/slc/hibernate/runtime/SlcAgentDescriptor.hbm.xml
+                               </value>
                        </list>
                </property>
                        </list>
                </property>
-               <property name="cacheProvider"
-                       ref="slcDefault.cacheProvider.ehCache" />
+               <property name="cacheProvider" ref="slcDefault.cacheProvider.ehCache" />
        </bean>
 
        </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>
 
                depends-on="slcDefault.cacheProvider.ehCacheManager">
        </bean>
 
                        value="classpath:/org/argeo/slc/hibernate/cache/ehcache.xml" />
        </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
                <property name="hibernateProperties">
                        <value><![CDATA[\r
                                hibernate.dialect=org.hibernate.dialect.HSQLDialect\r
@@ -93,5 +91,9 @@
                class="org.argeo.slc.hibernate.process.SlcExecutionDaoHibernate"
                abstract="true">
        </bean>
                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
 </beans>
\ No newline at end of file