From 11a9d0e8d3e9f610d0546463cfaf07ae884cb249 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sun, 11 Jan 2009 19:10:40 +0000 Subject: [PATCH] Integrate ActiveMQ git-svn-id: https://svn.argeo.org/slc/trunk@2074 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../src/main/webapp/WEB-INF/activemq.xml | 159 --------------- .../webapp/WEB-INF/applicationContext.xml | 3 +- .../webapp/WEB-INF/classes/log4j.properties | 2 +- org.argeo.slc/pom.xml | 34 +++- runtime/org.argeo.slc.launcher/pom.xml | 16 +- .../main/java/org/argeo/slc/cli/SlcMain.java | 29 +++ runtime/org.argeo.slc.server/.project | 52 ++--- runtime/org.argeo.slc.server/.springBeans | 14 ++ runtime/org.argeo.slc.server/pom.xml | 63 +++--- .../impl/runtime/AgentServiceImpl.java | 22 ++ .../test}/TestManagerServiceImpl.java | 2 +- .../slc/services/runtime/AgentService.java | 7 + .../org/argeo/slc/server/spring/activemq.xml | 42 ++++ .../org/argeo/slc/server/spring/db.xml | 122 +++++++++++ .../slc/server/spring/servletContext.xml | 190 ++++-------------- .../argeo/slc/server/spring/transaction.xml | 33 +-- .../dao/runtime/SlcAgentDescriptorDao.java | 12 ++ .../java/org/argeo/slc/runtime/SlcAgent.java | 5 + .../argeo/slc/runtime/SlcAgentDescriptor.java | 23 +++ .../org.argeo.slc.support.activemq/pom.xml | 42 ++++ .../main/java/org/argeo/slc/jms/JmsAgent.java | 61 ++++++ .../slc/jms/MarshallerMessageConverter.java | 55 +++++ .../resources/org/argeo/slc/jms/spring.xml | 14 ++ .../org/argeo/slc/castor/runtime.xml | 16 ++ .../resources/org/argeo/slc/castor/spring.xml | 46 +++++ .../slc/castor/spring/applicationContext.xml | 6 +- .../SlcAgentDescriptorDaoHibernate.java | 21 ++ .../org/argeo/slc/hibernate/cache/ehcache.xml | 11 +- .../runtime/SlcAgentDescriptor.hbm.xml | 12 ++ .../hibernate/spring/applicationContext.xml | 24 ++- 30 files changed, 737 insertions(+), 401 deletions(-) delete mode 100644 org.argeo.slc.webapp/src/main/webapp/WEB-INF/activemq.xml create mode 100644 runtime/org.argeo.slc.server/.springBeans create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/impl/runtime/AgentServiceImpl.java rename runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/{test/impl => impl/test}/TestManagerServiceImpl.java (95%) create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/runtime/AgentService.java create mode 100644 runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/activemq.xml create mode 100644 runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/db.xml create mode 100644 runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/dao/runtime/SlcAgentDescriptorDao.java create mode 100644 runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/runtime/SlcAgent.java create mode 100644 runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/runtime/SlcAgentDescriptor.java create mode 100644 runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAgent.java create mode 100644 runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/MarshallerMessageConverter.java create mode 100644 runtime/org.argeo.slc.support.activemq/src/main/resources/org/argeo/slc/jms/spring.xml create mode 100644 runtime/org.argeo.slc.support.castor/src/main/resources/org/argeo/slc/castor/runtime.xml create mode 100644 runtime/org.argeo.slc.support.castor/src/main/resources/org/argeo/slc/castor/spring.xml create mode 100644 runtime/org.argeo.slc.support.hibernate/src/main/java/org/argeo/slc/hibernate/runtime/SlcAgentDescriptorDaoHibernate.java create mode 100644 runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/runtime/SlcAgentDescriptor.hbm.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 index 71744743e..000000000 --- a/org.argeo.slc.webapp/src/main/webapp/WEB-INF/activemq.xml +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/org.argeo.slc.webapp/src/main/webapp/WEB-INF/applicationContext.xml b/org.argeo.slc.webapp/src/main/webapp/WEB-INF/applicationContext.xml index 131fb21b0..97ca54365 100644 --- a/org.argeo.slc.webapp/src/main/webapp/WEB-INF/applicationContext.xml +++ b/org.argeo.slc.webapp/src/main/webapp/WEB-INF/applicationContext.xml @@ -12,9 +12,10 @@ --> + \ No newline at end of file diff --git a/org.argeo.slc.webapp/src/main/webapp/WEB-INF/classes/log4j.properties b/org.argeo.slc.webapp/src/main/webapp/WEB-INF/classes/log4j.properties index e80a39052..925c2181b 100644 --- a/org.argeo.slc.webapp/src/main/webapp/WEB-INF/classes/log4j.properties +++ b/org.argeo.slc.webapp/src/main/webapp/WEB-INF/classes/log4j.properties @@ -3,7 +3,7 @@ log4j.rootLogger=WARN, console ## Levels # Slc -log4j.logger.org.argeo.slc=WARN +log4j.logger.org.argeo.slc=DEBUG # Spring log4j.logger.org.springframework=INFO diff --git a/org.argeo.slc/pom.xml b/org.argeo.slc/pom.xml index 0ef2bd723..901aa28ff 100644 --- a/org.argeo.slc/pom.xml +++ b/org.argeo.slc/pom.xml @@ -353,6 +353,11 @@ limitations under the License. org.springframework.jdbc ${version.spring} + + org.springframework + org.springframework.transaction + ${version.spring} + org.springframework org.springframework.web @@ -368,6 +373,11 @@ limitations under the License. org.springframework.aop ${version.spring} + + org.springframework + org.springframework.jms + ${version.spring} + org.springframework.ws @@ -604,6 +614,13 @@ limitations under the License. com.springsource.javax.jms 1.1.0 + + org.apache.geronimo.specs + com.springsource.javax.management.j2ee + 1.0.1 + + + org.apache.activemq com.springsource.org.apache.activemq @@ -614,16 +631,23 @@ limitations under the License. com.springsource.org.apache.activemq.web ${version.activemq} + org.apache.xbean com.springsource.org.apache.xbean.spring 3.3.0 - - org.apache.geronimo.specs - com.springsource.javax.management.j2ee - 1.0.1 - diff --git a/runtime/org.argeo.slc.launcher/pom.xml b/runtime/org.argeo.slc.launcher/pom.xml index 5057746a6..1d59972e9 100644 --- a/runtime/org.argeo.slc.launcher/pom.xml +++ b/runtime/org.argeo.slc.launcher/pom.xml @@ -66,11 +66,25 @@ org.argeo.slc.support.simple ${project.version} - + org.argeo.dep.osgi org.argeo.dep.osgi.commons.cli + + + + org.argeo.slc.runtime + org.argeo.slc.support.activemq + ${project.version} + testing + + + org.argeo.slc.runtime + org.argeo.slc.support.castor + ${project.version} + testing + \ No newline at end of file diff --git a/runtime/org.argeo.slc.launcher/src/main/java/org/argeo/slc/cli/SlcMain.java b/runtime/org.argeo.slc.launcher/src/main/java/org/argeo/slc/cli/SlcMain.java index c4193369a..32c3ce906 100644 --- a/runtime/org.argeo.slc.launcher/src/main/java/org/argeo/slc/cli/SlcMain.java +++ b/runtime/org.argeo.slc.launcher/src/main/java/org/argeo/slc/cli/SlcMain.java @@ -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.springframework.context.ApplicationContext; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.support.FileSystemXmlApplicationContext; public class SlcMain { public enum Mode { @@ -168,6 +171,32 @@ public class SlcMain { 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() { diff --git a/runtime/org.argeo.slc.server/.project b/runtime/org.argeo.slc.server/.project index 26efbecd6..663896211 100644 --- a/runtime/org.argeo.slc.server/.project +++ b/runtime/org.argeo.slc.server/.project @@ -1,23 +1,29 @@ - - - org.argeo.slc.server - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.maven.ide.eclipse.maven2Builder - - - - - - org.eclipse.jdt.core.javanature - org.maven.ide.eclipse.maven2Nature - - + + + org.argeo.slc.server + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.maven.ide.eclipse.maven2Builder + + + + + org.springframework.ide.eclipse.core.springbuilder + + + + + + org.springframework.ide.eclipse.core.springnature + org.eclipse.jdt.core.javanature + org.maven.ide.eclipse.maven2Nature + + diff --git a/runtime/org.argeo.slc.server/.springBeans b/runtime/org.argeo.slc.server/.springBeans new file mode 100644 index 000000000..76d11cb51 --- /dev/null +++ b/runtime/org.argeo.slc.server/.springBeans @@ -0,0 +1,14 @@ + + + 1 + + + + + + + src/main/resources/org/argeo/slc/server/spring/servletContext.xml + + + + diff --git a/runtime/org.argeo.slc.server/pom.xml b/runtime/org.argeo.slc.server/pom.xml index 223116e07..a74058c2f 100644 --- a/runtime/org.argeo.slc.server/pom.xml +++ b/runtime/org.argeo.slc.server/pom.xml @@ -60,6 +60,7 @@ + org.argeo.slc.runtime org.argeo.slc.support.hibernate @@ -70,24 +71,13 @@ org.argeo.slc.support.castor ${project.version} - - - javax.servlet - - com.springsource.javax.servlet.jsp.jstl - - - - org.apache.taglibs - - com.springsource.org.apache.taglibs.standard - - - javax.servlet - com.springsource.javax.servlet - provided + org.argeo.slc.runtime + org.argeo.slc.support.activemq + ${project.version} + + org.springframework.ws org.springframework.ws @@ -100,43 +90,48 @@ org.springframework org.springframework.aop + + - org.aspectj - com.springsource.org.aspectj.weaver + javax.servlet + + com.springsource.javax.servlet.jsp.jstl + - net.sourceforge.jexcelapi - com.springsource.jxl + org.apache.taglibs + + com.springsource.org.apache.taglibs.standard + - com.lowagie.text - com.springsource.com.lowagie.text + javax.servlet + com.springsource.javax.servlet + provided javax.wsdl com.springsource.javax.wsdl - - - javax.jms - com.springsource.javax.jms - + org.apache.activemq - com.springsource.org.apache.activemq + com.springsource.org.apache.activemq.web + + - org.apache.xbean - com.springsource.org.apache.xbean.spring + org.aspectj + com.springsource.org.aspectj.weaver - org.apache.activemq - com.springsource.org.apache.activemq.web + net.sourceforge.jexcelapi + com.springsource.jxl - org.apache.geronimo.specs - com.springsource.javax.management.j2ee + com.lowagie.text + com.springsource.com.lowagie.text 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 index 000000000..a4a67c10e --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/impl/runtime/AgentServiceImpl.java @@ -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/test/impl/TestManagerServiceImpl.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/impl/test/TestManagerServiceImpl.java similarity index 95% rename from runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/impl/TestManagerServiceImpl.java rename to runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/impl/test/TestManagerServiceImpl.java index 1cb9112b7..0b2b5655d 100644 --- 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/impl/test/TestManagerServiceImpl.java @@ -1,4 +1,4 @@ -package org.argeo.slc.services.test.impl; +package org.argeo.slc.services.impl.test; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; 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 index 000000000..c4bf2c05d --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/runtime/AgentService.java @@ -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/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 index 000000000..df37901e1 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/activemq.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 index 000000000..f18ed8292 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/db.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/servletContext.xml b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/servletContext.xml index 8b5b2e488..ab64f9450 100644 --- a/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/servletContext.xml +++ b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/servletContext.xml @@ -1,154 +1,52 @@ - - - - - - - - - - - slcServerDefault.sessionFactory.HSQL + default-lazy-init="false"> + + + + + + + + slcServerDefault.sessionFactory.HSQL - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/transaction.xml b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/transaction.xml index 43cabb8ea..7f69fa4da 100644 --- a/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/transaction.xml +++ b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/transaction.xml @@ -1,7 +1,6 @@ - + - + - + - + + + + + + + + + + + + + - - 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 index 000000000..3ad307014 --- /dev/null +++ b/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/dao/runtime/SlcAgentDescriptorDao.java @@ -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 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 index 000000000..fc3c2d52d --- /dev/null +++ b/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/runtime/SlcAgent.java @@ -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 index 000000000..39eadf69e --- /dev/null +++ b/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/runtime/SlcAgentDescriptor.java @@ -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; + } + +} diff --git a/runtime/org.argeo.slc.support.activemq/pom.xml b/runtime/org.argeo.slc.support.activemq/pom.xml index 25253467d..5e33d9f29 100644 --- a/runtime/org.argeo.slc.support.activemq/pom.xml +++ b/runtime/org.argeo.slc.support.activemq/pom.xml @@ -44,13 +44,55 @@ + + + org.argeo.slc.runtime + org.argeo.slc.support.simple + ${project.version} + + + + + org.springframework + org.springframework.jms + + + org.springframework.ws + org.springframework.oxm + + + org.springframework + org.springframework.transaction + + + javax.jms com.springsource.javax.jms + + org.apache.geronimo.specs + com.springsource.javax.management.j2ee + + + org.apache.activemq com.springsource.org.apache.activemq + + org.apache.xbean + com.springsource.org.apache.xbean.spring + + \ 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 index 000000000..7aff0ab20 --- /dev/null +++ b/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/JmsAgent.java @@ -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 index 000000000..dfab1e4bf --- /dev/null +++ b/runtime/org.argeo.slc.support.activemq/src/main/java/org/argeo/slc/jms/MarshallerMessageConverter.java @@ -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 index 000000000..c8536ca50 --- /dev/null +++ b/runtime/org.argeo.slc.support.activemq/src/main/resources/org/argeo/slc/jms/spring.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + \ 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 index 000000000..839603dc3 --- /dev/null +++ b/runtime/org.argeo.slc.support.castor/src/main/resources/org/argeo/slc/castor/runtime.xml @@ -0,0 +1,16 @@ + + + + + + Runtime objects XML 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 index 000000000..46f0ad212 --- /dev/null +++ b/runtime/org.argeo.slc.support.castor/src/main/resources/org/argeo/slc/castor/spring.xml @@ -0,0 +1,46 @@ + + + + + + + classpath:org/argeo/slc/castor/msg.xml + + + classpath:org/argeo/slc/castor/process.xml + + + classpath:org/argeo/slc/castor/runtime.xml + + + classpath:org/argeo/slc/castor/structure.xml + + + classpath:org/argeo/slc/castor/test.xml + + + + + + + + + + + + + + + + + + + diff --git a/runtime/org.argeo.slc.support.castor/src/main/resources/org/argeo/slc/castor/spring/applicationContext.xml b/runtime/org.argeo.slc.support.castor/src/main/resources/org/argeo/slc/castor/spring/applicationContext.xml index 21c0ce595..4e12b5567 100644 --- a/runtime/org.argeo.slc.support.castor/src/main/resources/org/argeo/slc/castor/spring/applicationContext.xml +++ b/runtime/org.argeo.slc.support.castor/src/main/resources/org/argeo/slc/castor/spring/applicationContext.xml @@ -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"> + + + + 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 index 000000000..c6b6ac90b --- /dev/null +++ b/runtime/org.argeo.slc.support.hibernate/src/main/java/org/argeo/slc/hibernate/runtime/SlcAgentDescriptorDaoHibernate.java @@ -0,0 +1,21 @@ +package org.argeo.slc.hibernate.runtime; + +import java.util.List; + +import org.argeo.slc.dao.runtime.SlcAgentDescriptorDao; +import org.argeo.slc.runtime.SlcAgentDescriptor; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; + +public class SlcAgentDescriptorDaoHibernate extends HibernateDaoSupport + implements SlcAgentDescriptorDao { + + public void create(SlcAgentDescriptor slcAgentDescriptor) { + getHibernateTemplate().save(slcAgentDescriptor); + } + + public List listSlcAgentDescriptors() { + return (List) getHibernateTemplate().loadAll( + SlcAgentDescriptor.class); + } + +} diff --git a/runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/cache/ehcache.xml b/runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/cache/ehcache.xml index 968e97373..7cb97e189 100644 --- a/runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/cache/ehcache.xml +++ b/runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/cache/ehcache.xml @@ -15,8 +15,7 @@ maxElementsInMemory="10000" /> - @@ -27,8 +26,7 @@ - - + + \ 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 index 000000000..dbc764900 --- /dev/null +++ b/runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/runtime/SlcAgentDescriptor.hbm.xml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/spring/applicationContext.xml b/runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/spring/applicationContext.xml index 1d59de1a6..ed5252933 100644 --- a/runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/spring/applicationContext.xml +++ b/runtime/org.argeo.slc.support.hibernate/src/main/resources/org/argeo/slc/hibernate/spring/applicationContext.xml @@ -14,8 +14,7 @@ - @@ -43,14 +42,15 @@ org/argeo/slc/hibernate/process/SlcExecutionStep.hbm.xml + + org/argeo/slc/hibernate/runtime/SlcAgentDescriptor.hbm.xml + - + - @@ -61,10 +61,8 @@ value="classpath:/org/argeo/slc/hibernate/cache/ehcache.xml" /> - - + + - + + + \ No newline at end of file -- 2.39.2