#log4j.logger.org.hibernate.type=TRACE\r
\r
# Active MQ\r
-log4j.logger.org.apache.activemq.web.MessageListenerServlet=DEBUG\r
+log4j.logger.org.apache.activemq.web.MessageListenerServlet=WARN\r
\r
# EhCache\r
log4j.logger.net.sf.ehcache=WARN\r
-amq.sendMessage('TEST.QUEUE','<test>My Test</test>');
+amq.sendMessage('topic://agent.c6fb85cc-200e-41f1-9b63-fade5cad0f14.newExecution','<slc:slc-execution uuid="b0b68669-b598-4518-8ae3-c9c3190e87b4"><slc:status>STARTED</slc:status><slc:type>slcAnt</slc:type><slc:host>localhost</slc:host><slc:user>user</slc:user><slc:attributes><slc:attribute name="ant.file">/test</slc:attribute></slc:attributes></slc:slc-execution>');
alert('Message sent!');
document.write('Message sent');
\ No newline at end of file
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.argeo.slc</groupId>
<Export-Package>
org.argeo.slc.*
</Export-Package>
+ <Main-Class>org.argeo.slc.cli.SlcMain</Main-Class>
</instructions>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>1.1-beta-1</version>
+ <configuration>
+ <mainClass>org.argeo.slc.cli.SlcMain</mainClass>
+ </configuration>
+ </plugin>
</plugins>
</build>
<dependencies>
<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>
package org.argeo.slc.cli;
import java.io.FileInputStream;
+import java.io.IOException;
import java.util.Properties;
import org.apache.commons.cli.CommandLine;
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.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
public class SlcMain {
private static Log log = null;
private final static String BOOTSTRAP_LOG4J_CONFIG = "org/argeo/slc/cli/bootstrapLog4j.properties";
+ private final static String DEFAULT_AGENT_CONTEXT = "classpath:org/argeo/slc/activemq/spring-agent.xml";
private final static Option modeOpt = OptionBuilder.withLongOpt("mode")
.withArgName("mode").hasArg().withDescription(
}
// Agent
else if (mode.equals(Mode.agent)) {
- if (runtimeStr == null)
- runtimeStr = "agent.xml";
- final ConfigurableApplicationContext applicationContext = new FileSystemXmlApplicationContext(
- "agent.xml");
+ final ConfigurableApplicationContext applicationContext;
+ if (runtimeStr == null) {
+ applicationContext = new ClassPathXmlApplicationContext(
+ DEFAULT_AGENT_CONTEXT);
+ } else {
+ applicationContext = new FileSystemXmlApplicationContext(
+ runtimeStr);
+ }
+ applicationContext.registerShutdownHook();
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
- }
- }
}
}
log.info("Registered agent #" + slcAgentDescriptor.getUuid());
}
+ public void unregister(SlcAgentDescriptor slcAgentDescriptor) {
+ slcAgentDescriptorDao.delete(slcAgentDescriptor);
+ log.info("Unregistered agent #" + slcAgentDescriptor.getUuid());
+ }
+
}
--- /dev/null
+package org.argeo.slc.web.mvc.runtime;\r
+\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.servlet.http.HttpServletResponse;\r
+\r
+import org.argeo.slc.dao.runtime.SlcAgentDescriptorDao;\r
+import org.argeo.slc.runtime.SlcAgentDescriptor;\r
+import org.argeo.slc.web.mvc.AbstractServiceController;\r
+import org.springframework.web.servlet.ModelAndView;\r
+\r
+/** Lists results possibly filtering them. */\r
+public class CleanAgentsController extends AbstractServiceController {\r
+ private final SlcAgentDescriptorDao slcAgentDescriptorDao;\r
+\r
+ public CleanAgentsController(SlcAgentDescriptorDao slcAgentDescriptorDao) {\r
+ this.slcAgentDescriptorDao = slcAgentDescriptorDao;\r
+ }\r
+\r
+ @Override\r
+ protected void handleServiceRequest(HttpServletRequest request,\r
+ HttpServletResponse response, ModelAndView modelAndView)\r
+ throws Exception {\r
+ List<SlcAgentDescriptor> list = slcAgentDescriptorDao\r
+ .listSlcAgentDescriptors();\r
+ for (SlcAgentDescriptor t : new Vector<SlcAgentDescriptor>(list)) {\r
+ slcAgentDescriptorDao.delete(t);\r
+ }\r
+ }\r
+}\r
--- /dev/null
+package org.argeo.slc.web.mvc.runtime;\r
+\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.servlet.http.HttpServletResponse;\r
+\r
+import org.argeo.slc.dao.runtime.SlcAgentDescriptorDao;\r
+import org.argeo.slc.msg.ObjectList;\r
+import org.argeo.slc.runtime.SlcAgentDescriptor;\r
+import org.argeo.slc.web.mvc.AbstractServiceController;\r
+import org.springframework.web.servlet.ModelAndView;\r
+\r
+/** Lists results possibly filtering them. */\r
+public class ListAgentsController extends AbstractServiceController {\r
+ private final SlcAgentDescriptorDao slcAgentDescriptorDao;\r
+\r
+ public ListAgentsController(SlcAgentDescriptorDao slcAgentDescriptorDao) {\r
+ this.slcAgentDescriptorDao = slcAgentDescriptorDao;\r
+ }\r
+\r
+ @Override\r
+ protected void handleServiceRequest(HttpServletRequest request,\r
+ HttpServletResponse response, ModelAndView modelAndView)\r
+ throws Exception {\r
+ List<SlcAgentDescriptor> list = slcAgentDescriptorDao\r
+ .listSlcAgentDescriptors();\r
+ modelAndView.addObject("list", new ObjectList(list));\r
+ }\r
+}\r
<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">
+ http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
- <import resource="classpath:org/argeo/slc/jms/spring.xml" />
+ <import resource="classpath:org/argeo/slc/activemq/spring.xml" />
+ <!-- Create embedded broker -->
<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"
+ <bean id="template.jms.listenerContainer" parent="slcTemplate.jms.listenerContainer"
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
<constructor-arg ref="slcAgentDescriptorDao" />
</bean>
- <bean id="agentService.jmsContainer.register" parent="template.listenerContainer">
- <property name="destination" ref="destination.agent.register" />
+ <bean id="agentService.jmsContainer.register" parent="template.jms.listenerContainer">
+ <property name="destination" ref="slcJms.destination.agent.register" />
<property name="messageListener">
- <bean parent="template.listenerAdapter">
+ <bean parent="slcTemplate.jms.listenerAdapter">
<constructor-arg ref="agentService" />
<property name="defaultListenerMethod" value="register" />
</bean>
</property>
</bean>
+ <bean id="agentService.jmsContainer.unregister" parent="template.jms.listenerContainer">
+ <property name="destination" ref="slcJms.destination.agent.unregister" />
+ <property name="messageListener">
+ <bean parent="slcTemplate.jms.listenerAdapter">
+ <constructor-arg ref="agentService" />
+ <property name="defaultListenerMethod" value="unregister" />
+ </bean>
+ </property>
+ </bean>
+
</beans>
\ No newline at end of file
<constructor-arg ref="testResultCollectionDao" />
</bean>
- <bean name="/listResults.service"
- class="org.argeo.slc.web.mvc.result.ListResultsController">
+ <bean name="/listResults.service" class="org.argeo.slc.web.mvc.result.ListResultsController">
<constructor-arg ref="testResultCollectionDao" />
</bean>
+ <bean name="/listAgents.service" class="org.argeo.slc.web.mvc.runtime.ListAgentsController">
+ <constructor-arg ref="slcAgentDescriptorDao" />
+ </bean>
+
+ <bean name="/cleanAgents.service" class="org.argeo.slc.web.mvc.runtime.CleanAgentsController">
+ <constructor-arg ref="slcAgentDescriptorDao" />
+ </bean>
+
<!--
<bean name="/resultList.service"
class="org.argeo.slc.web.mvc.result.ResultListController">
<aop:advisor advice-ref="daoAdvice" pointcut-ref="daoProcessMethods" />
</aop:config>
+ <aop:config>
+ <aop:pointcut id="daoRuntimeMethods"
+ expression="execution(* org.argeo.slc.dao.runtime.*.*(..))" />
+ <aop:advisor advice-ref="daoAdvice" pointcut-ref="daoRuntimeMethods" />
+ </aop:config>
+
<aop:config>
<aop:pointcut id="daoTestMethods"
expression="execution(* org.argeo.slc.dao.test.*.*(..))" />
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
-
+<!--
<aop:config>
<aop:pointcut id="pointcut.services.allMethods"
expression="execution(* org.argeo.slc.services.*.*.*(..))" />
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
-
+ -->
</beans>
\ No newline at end of file
public interface SlcAgentDescriptorDao {
public void create(SlcAgentDescriptor slcAgentDescriptor);
+ public void delete(SlcAgentDescriptor slcAgentDescriptor);
+
public List<SlcAgentDescriptor> listSlcAgentDescriptors();
}
public void setAttributes(Map<String, String> attributes) {\r
this.attributes = attributes;\r
}\r
+\r
+ public String toString() {\r
+ StringBuffer buf = new StringBuffer(getClass().getSimpleName());\r
+ buf.append('#').append(uuid);\r
+ buf.append(" status=").append(status);\r
+ buf.append(" attributes=").append(attributes);\r
+ return buf.toString();\r
+ }\r
}\r
--- /dev/null
+package org.argeo.slc.jms;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.jms.listener.DefaultMessageListenerContainer;
+import org.springframework.jms.listener.adapter.MessageListenerAdapter;
+import org.springframework.jms.support.converter.MessageConverter;
+
+public class AgentListenerContainer extends DefaultMessageListenerContainer
+ implements InitializingBean {
+ private final static Log log = LogFactory.getLog(AgentListenerContainer.class);
+
+ private JmsAgent jmsAgent;
+ private String action;
+ private MessageConverter messageConverter;
+
+ @Override
+ public void afterPropertiesSet() {
+ MessageListenerAdapter messageListenerAdapter = new MessageListenerAdapter(
+ jmsAgent);
+ messageListenerAdapter.setDefaultListenerMethod(action);
+ messageListenerAdapter.setMessageConverter(messageConverter);
+ setMessageListener(messageListenerAdapter);
+ setDestinationName(jmsAgent.actionDestinationName(action));
+ super.afterPropertiesSet();
+
+ log.info("Listening to "+getDestinationName());
+ }
+
+ public void setJmsAgent(JmsAgent jmsAgent) {
+ this.jmsAgent = jmsAgent;
+ }
+
+ public void setAction(String action) {
+ this.action = action;
+ }
+
+ public void setMessageConverter(MessageConverter messageConverter) {
+ this.messageConverter = messageConverter;
+ }
+
+}
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.argeo.slc.SlcException;
+import org.argeo.slc.process.SlcExecution;
import org.argeo.slc.runtime.SlcAgent;
import org.argeo.slc.runtime.SlcAgentDescriptor;
+import org.springframework.beans.factory.DisposableBean;
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 {
+public class JmsAgent implements SlcAgent, InitializingBean, DisposableBean {
private final static Log log = LogFactory.getLog(JmsAgent.class);
private final SlcAgentDescriptor agentDescriptor;
private JmsTemplate jmsTemplate;
private Destination agentRegister;
+ private Destination agentUnregister;
+
+ private String agentDestinationPrefix = "agent.";
+ private String agentDestinationBase;
public JmsAgent() {
try {
}
public void afterPropertiesSet() throws Exception {
+ agentDestinationBase = agentDestinationPrefix
+ + agentDescriptor.getUuid() + ".";
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 destroy() throws Exception {
+ jmsTemplate.convertAndSend(agentUnregister, agentDescriptor);
+ log.info("Agent #" + agentDescriptor.getUuid() + " unregistered to "
+ + agentRegister);
+ }
+ public String actionDestinationName(String action) {
+ return agentDestinationBase + action;
+ }
+
+ public void newExecution(SlcExecution slcExecution) {
+ log.info("Would execute SlcExecution :" + slcExecution);
}
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.agentRegister = agentRegister;
}
+ public void setAgentUnregister(Destination agentUnregister) {
+ this.agentUnregister = agentUnregister;
+ }
+
+ public void setAgentDestinationPrefix(String agentDestinationPrefix) {
+ this.agentDestinationPrefix = agentDestinationPrefix;
+ }
+
}
--- /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.xsd"
+ default-lazy-init="false">
+
+ <bean
+ class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
+ lazy-init="false">
+ <property name="properties">
+ <props>
+ <prop key="org.apache.activemq.brokerURL">
+ tcp://localhost:61616
+ </prop>
+ </props>
+ </property>
+ <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
+ <property name="ignoreUnresolvablePlaceholders" value="true" />
+ </bean>
+
+ <import resource="classpath:org/argeo/slc/activemq/spring.xml" />
+
+ <bean id="slcDefault.jms.agent" class="org.argeo.slc.jms.JmsAgent">
+ <property name="jmsTemplate" ref="slcDefault.jms.jmsTemplate" />
+ <property name="agentRegister" ref="slcJms.destination.agent.register" />
+ <property name="agentUnregister" ref="slcJms.destination.agent.unregister" />
+ </bean>
+
+ <bean id="slcTemplate.jms.agentListenerContainer.newExecution"
+ parent="slcTemplate.jms.agentListenerContainer">
+ <property name="action" value="newExecution" />
+ </bean>
+
+ <!-- Templates -->
+ <bean id="slcTemplate.jms.agentListenerContainer" class="org.argeo.slc.jms.AgentListenerContainer"
+ abstract="true">
+ <property name="jmsAgent" ref="slcDefault.jms.agent" />
+ <property name="connectionFactory" ref="slcDefault.jms.connectionFactory" />
+ <property name="messageConverter" ref="slcDefault.jms.castorMessageConverter" />
+ <property name="pubSubDomain" value="true" />
+ </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: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.xsd"
+ default-lazy-init="false">
+
+ <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>
+
+ <amq:connectionFactory id="slcDefault.jms.amqConnectionFactory"
+ brokerURL="${org.apache.activemq.brokerURL}" />
+
+ <bean id="slcDefault.jms.connectionFactory"
+ class="org.springframework.jms.connection.SingleConnectionFactory">
+ <property name="targetConnectionFactory">
+ <ref local="slcDefault.jms.amqConnectionFactory" />
+ </property>
+ </bean>
+
+ <bean id="slcDefault.jms.jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
+ <property name="connectionFactory" ref="slcDefault.jms.connectionFactory" />
+ <property name="messageConverter" ref="slcDefault.jms.castorMessageConverter" />
+ </bean>
+
+
+ <!-- Destinations -->
+ <amq:topic id="slcJms.destination.agent.register"
+ physicalName="agent.register" />
+ <amq:topic id="slcJms.destination.agent.unregister"
+ physicalName="agent.unregister" />
+
+ <!-- Templates -->
+ <bean id="slcTemplate.jms.listenerContainer"
+ class="org.springframework.jms.listener.DefaultMessageListenerContainer"
+ abstract="true">
+ <property name="connectionFactory" ref="slcDefault.jms.connectionFactory" />
+ </bean>
+
+ <bean id="slcTemplate.jms.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"
- 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
</field>
</class>
+ <class name="org.argeo.slc.msg.ObjectList">
+ <map-to ns-uri="http://argeo.org/projects/slc/schemas"
+ ns-prefix="slc" />
+ <field name="objects" collection="arraylist">
+ <bind-xml auto-naming="deriveByClass" />
+ </field>
+ </class>
+
<class name="org.argeo.slc.core.test.tree.TreeTestResultList">
<map-to ns-uri="http://argeo.org/projects/slc/schemas"
ns-prefix="slc" />
+++ /dev/null
-<project xmlns:artifact="urn:maven-artifact-ant" default="deploy">\r
-\r
- <path id="maven-ant-tasks.classpath"\r
- path="D:\dev\tools\maven-2.0.7\lib\maven-ant-tasks-2.0.7.jar" />\r
- <typedef resource="org/apache/maven/artifact/ant/antlib.xml"\r
- uri="urn:maven-artifact-ant"\r
- classpathref="maven-ant-tasks.classpath" />\r
-\r
- <property name="local" location="D:/dev/mavenLocal/" />\r
- <property name="local.argeo" location="${local}/org/argeo/slc/" />\r
- <property name="repo.argeo"\r
- value="file:///D:/dev/test/mavenArgeoLocalRep/" />\r
-\r
- <target name="deploy">\r
- <deploy artifact="argeo-slc-core" version="0.6.0" />\r
- </target>\r
-\r
- <!-- Macrodefs -->\r
- <macrodef name="deploy">\r
- <attribute name="artifact" />\r
- <attribute name="version" />\r
- <sequential>\r
- <artifact:install-provider artifactId="wagon-file"\r
- version="1.0-beta-2" />\r
- <artifact:deploy file="${local.argeo}/@{artifact}/@{version}/@{artifact}-@{version}.jar">\r
- <artifact:pom file="pom.xml" />\r
- <remoterepository url="${repo.argeo}" />\r
- <attach classifier="sources"\r
- file="${local.argeo}/@{artifact}/@{version}/@{artifact}-@{version}-sources.jar" />\r
- <attach classifier="javadoc"\r
- file="${local.argeo}/@{artifact}/@{version}/@{artifact}-@{version}-javadoc.jar" />\r
- </artifact:deploy>\r
- </sequential>\r
- </macrodef>\r
-</project>
\ No newline at end of file
getHibernateTemplate().save(slcAgentDescriptor);\r
}\r
\r
+ public void delete(SlcAgentDescriptor slcAgentDescriptor) {\r
+ getHibernateTemplate().delete(slcAgentDescriptor);\r
+ }\r
+\r
public List<SlcAgentDescriptor> listSlcAgentDescriptors() {\r
return (List<SlcAgentDescriptor>) getHibernateTemplate().loadAll(\r
SlcAgentDescriptor.class);\r
--- /dev/null
+package org.argeo.slc.msg;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ObjectList {
+ private List<?> objects = new ArrayList<Object>();
+
+ public ObjectList() {
+ }
+
+ public ObjectList(List<?> objects) {
+ this.objects = objects;
+ }
+
+ public List<?> getObjects() {
+ return objects;
+ }
+
+ public void setObjects(List<?> objects) {
+ this.objects = objects;
+ }
+
+}