--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<classpath>\r
+ <classpathentry kind="src" path="src/main/java"/>\r
+ <classpathentry kind="src" path="src/main/resources"/>\r
+ <classpathentry kind="src" path="src/test/java"/>\r
+ <classpathentry kind="src" path="src/test/resources"/>\r
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre1.5.0_07"/>\r
+ <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v5.5"/>\r
+ <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>\r
+ <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>\r
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>\r
+ <classpathentry kind="output" path="build/classes"/>\r
+</classpath>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+ <name>argeo.slc.ws</name>\r
+ <comment></comment>\r
+ <projects>\r
+ </projects>\r
+ <buildSpec>\r
+ <buildCommand>\r
+ <name>org.maven.ide.eclipse.maven2Builder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.eclipse.jdt.core.javabuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.eclipse.wst.common.project.facet.core.builder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.eclipse.wst.validation.validationbuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ </buildSpec>\r
+ <natures>\r
+ <nature>org.eclipse.wst.common.project.facet.core.nature</nature>\r
+ <nature>org.eclipse.jdt.core.javanature</nature>\r
+ <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>\r
+ <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>\r
+ <nature>org.maven.ide.eclipse.maven2Nature</nature>\r
+ </natures>\r
+</projectDescription>\r
--- /dev/null
+#Mon Apr 14 09:41:37 CEST 2008\r
+eclipse.preferences.version=1\r
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5\r
+org.eclipse.jdt.core.compiler.compliance=1.5\r
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\r
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error\r
+org.eclipse.jdt.core.compiler.source=1.5\r
--- /dev/null
+#Mon Apr 14 09:41:45 CEST 2008\r
+classpath.helper/org.eclipse.jdt.launching.JRE_CONTAINER\:\:org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType\:\:jre1.5.0_07/owners=jst.java\:5.0\r
+classpath.helper/org.eclipse.jst.server.core.container\:\:org.eclipse.jst.server.tomcat.runtimeTarget\:\:Apache\ Tomcat\ v5.5/owners=jst.web\:2.4\r
+eclipse.preferences.version=1\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<project-modules id="moduleCoreId" project-version="1.5.0">\r
+<wb-module deploy-name="argeo.slc.ws">\r
+<wb-resource deploy-path="/" source-path="/src/main/webapp"/>\r
+<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>\r
+<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>\r
+<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/java"/>\r
+<wb-resource deploy-path="/WEB-INF/classes" source-path="/resources"/>\r
+<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/resources"/>\r
+<property name="context-root" value="argeo.slc.ws"/>\r
+<property name="java-output-path" value="build/classes"/>\r
+</wb-module>\r
+</project-modules>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<faceted-project>\r
+ <runtime name="Apache Tomcat v5.5"/>\r
+ <fixed facet="jst.web"/>\r
+ <fixed facet="jst.java"/>\r
+ <installed facet="jst.java" version="5.0"/>\r
+ <installed facet="jst.web" version="2.4"/>\r
+</faceted-project>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<project xmlns="http://maven.apache.org/POM/4.0.0"\r
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
+ <modelVersion>4.0.0</modelVersion>\r
+ <groupId>org.argeo.slc</groupId>\r
+ <artifactId>argeo.slc.ws</artifactId>\r
+ <packaging>war</packaging>\r
+ <version>0.1-SNAPSHOT</version>\r
+ <description>SLC Web Services</description>\r
+ <build>\r
+ <plugins>\r
+ <plugin>\r
+ <groupId>org.apache.maven.plugins</groupId>\r
+ <artifactId>maven-eclipse-plugin</artifactId>\r
+ <version>2.5-SNAPSHOT</version>\r
+ <configuration>\r
+ <wtpversion>2.0</wtpversion>\r
+ <downloadSources>true</downloadSources>\r
+ <!-- \r
+ <workspace>C:\mbaudier\workspace</workspace>\r
+ -->\r
+ </configuration>\r
+ </plugin>\r
+ <plugin>\r
+ <groupId>org.apache.maven.plugins</groupId>\r
+ <artifactId>maven-compiler-plugin</artifactId>\r
+ <configuration>\r
+ <source>1.5</source>\r
+ <target>1.5</target>\r
+ </configuration>\r
+ </plugin>\r
+ <!-- \r
+ <plugin>\r
+ <groupId>org.apache.maven.plugins</groupId>\r
+ <artifactId>maven-dependency-plugin</artifactId>\r
+ <executions>\r
+ <execution>\r
+ <id>copy-dependencies</id>\r
+ <phase>package</phase>\r
+ <goals>\r
+ <goal>copy-dependencies</goal>\r
+ </goals>\r
+ <configuration>\r
+ <outputDirectory>\r
+ src/main/webapp/WEB-INF/lib\r
+ </outputDirectory>\r
+ </configuration>\r
+ </execution>\r
+ </executions>\r
+ \r
+ </plugin>\r
+ -->\r
+ </plugins>\r
+ </build>\r
+ <dependencies>\r
+ <dependency>\r
+ <groupId>log4j</groupId>\r
+ <artifactId>log4j</artifactId>\r
+ <version>1.2.14</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>commons-logging</groupId>\r
+ <artifactId>commons-logging</artifactId>\r
+ <version>1.1.1</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.apache.commons</groupId>\r
+ <artifactId>commons-io</artifactId>\r
+ <version>1.3.2</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.springframework.ws</groupId>\r
+ <artifactId>spring-ws-core</artifactId>\r
+ <version>1.5.0</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.springframework.ws</groupId>\r
+ <artifactId>spring-oxm</artifactId>\r
+ <version>1.5.0</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>javax.servlet</groupId>\r
+ <artifactId>servlet-api</artifactId>\r
+ <version>2.5</version>\r
+ <scope>provided</scope>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>junit</groupId>\r
+ <artifactId>junit</artifactId>\r
+ <version>3.8.2</version>\r
+ </dependency>\r
+\r
+ <dependency>\r
+ <groupId>org.codehaus.castor</groupId>\r
+ <artifactId>castor</artifactId>\r
+ <version>1.1.2.1</version>\r
+ <exclusions>\r
+ <exclusion>\r
+ <groupId>xerces</groupId>\r
+ <artifactId>xerces</artifactId>\r
+ </exclusion>\r
+ </exclusions>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>xerces</groupId>\r
+ <artifactId>xercesImpl</artifactId>\r
+ <version>2.8.1</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.argeo.slc</groupId>\r
+ <artifactId>argeo-slc-core</artifactId>\r
+ <version>0.9-SNAPSHOT</version>\r
+ </dependency>\r
+ </dependencies>\r
+ <repositories>\r
+ <repository>\r
+ <id>central</id>\r
+ <url>http://www.argeo.org/maven/proxy</url>\r
+ <releases>\r
+ <enabled>true</enabled>\r
+ <updatePolicy>daily</updatePolicy>\r
+ <checksumPolicy>warn</checksumPolicy>\r
+ </releases>\r
+ </repository>\r
+ </repositories>\r
+</project>
\ No newline at end of file
--- /dev/null
+package org.argeo.slc.core.process;\r
+\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+public class Message {\r
+ private List<Object> parts = new Vector<Object>();\r
+ \r
+ public void addPart(Object obj){\r
+ parts.add(obj);\r
+ }\r
+\r
+ public List<Object> getParts() {\r
+ return parts;\r
+ }\r
+\r
+ public void setParts(List<Object> parts) {\r
+ this.parts = parts;\r
+ }\r
+ \r
+ \r
+}\r
--- /dev/null
+package org.argeo.slc.core.process;\r
+\r
+public class SlcExecution {\r
+ private String uuid;\r
+ private String host;\r
+ private String path;\r
+ private String type;\r
+ private String status;\r
+\r
+ public String getUuid() {\r
+ return uuid;\r
+ }\r
+\r
+ public void setUuid(String uuid) {\r
+ this.uuid = uuid;\r
+ }\r
+\r
+ public String getHost() {\r
+ return host;\r
+ }\r
+\r
+ public void setHost(String host) {\r
+ this.host = host;\r
+ }\r
+\r
+ public String getPath() {\r
+ return path;\r
+ }\r
+\r
+ public void setPath(String path) {\r
+ this.path = path;\r
+ }\r
+\r
+ public String getType() {\r
+ return type;\r
+ }\r
+\r
+ public void setType(String type) {\r
+ this.type = type;\r
+ }\r
+\r
+ public String getStatus() {\r
+ return status;\r
+ }\r
+\r
+ public void setStatus(String status) {\r
+ this.status = status;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.process;\r
+\r
+import java.util.Date;\r
+\r
+public class SlcExecutionStep {\r
+ private SlcExecution slcExecution;\r
+ private String type;\r
+ private Date begin;\r
+ private String log;\r
+\r
+ public SlcExecution getSlcExecution() {\r
+ return slcExecution;\r
+ }\r
+\r
+ public void setSlcExecution(SlcExecution slcExecution) {\r
+ this.slcExecution = slcExecution;\r
+ }\r
+\r
+ public String getType() {\r
+ return type;\r
+ }\r
+\r
+ public void setType(String type) {\r
+ this.type = type;\r
+ }\r
+\r
+ public Date getBegin() {\r
+ return begin;\r
+ }\r
+\r
+ public void setBegin(Date begin) {\r
+ this.begin = begin;\r
+ }\r
+\r
+ public String getLog() {\r
+ return log;\r
+ }\r
+\r
+ public void setLog(String log) {\r
+ this.log = log;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.xml;\r
+\r
+import java.io.IOException;\r
+import java.io.StringWriter;\r
+\r
+import javax.xml.transform.OutputKeys;\r
+import javax.xml.transform.Transformer;\r
+import javax.xml.transform.TransformerConfigurationException;\r
+import javax.xml.transform.TransformerException;\r
+import javax.xml.transform.TransformerFactory;\r
+import javax.xml.transform.dom.DOMSource;\r
+import javax.xml.transform.stream.StreamResult;\r
+\r
+import org.w3c.dom.Document;\r
+\r
+import org.apache.commons.io.IOUtils;\r
+\r
+public class XmlUtils {\r
+ private static TransformerFactory transformerFactory = TransformerFactory\r
+ .newInstance();\r
+\r
+ public static String getDomAsString(Document doc, boolean indent)\r
+ throws IOException, TransformerConfigurationException,\r
+ TransformerException {\r
+ StringWriter out = new StringWriter();\r
+ try {\r
+ // Create identity transformer\r
+ Transformer transformer = transformerFactory.newTransformer();\r
+ if (indent) {\r
+ transformer.setOutputProperty(OutputKeys.INDENT, "yes");\r
+ }\r
+ DOMSource source = new DOMSource(doc);\r
+ StreamResult result = new StreamResult(out);\r
+ transformer.transform(source, result);\r
+ return out.toString();\r
+ } finally {\r
+ IOUtils.closeQuietly(out);\r
+ }\r
+ }\r
+}\r
--- /dev/null
+<?xml version="1.0"?>\r
+\r
+<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN" "http://castor.org/mapping.dtd">\r
+\r
+<mapping>\r
+ <description>Process objects XML mapping</description>\r
+\r
+ <class name="org.argeo.slc.core.process.Message"\r
+ auto-complete="true">\r
+ <field name="parts" collection="vector">\r
+ <bind-xml auto-naming="deriveByClass"/>\r
+ </field>\r
+ </class>\r
+\r
+ <class name="org.argeo.slc.core.process.SlcExecution"\r
+ auto-complete="true">\r
+ <field name="uuid" identity="true">\r
+ <bind-xml node="attribute" />\r
+ </field>\r
+ </class>\r
+\r
+ <class name="org.argeo.slc.core.process.SlcExecutionStep"\r
+ auto-complete="true">\r
+ <field name="slcExecution">\r
+ <bind-xml reference="true" node="attribute" />\r
+ </field>\r
+ <field name="log">\r
+ <bind-xml node="element" />\r
+ </field>\r
+ </class>\r
+</mapping>
\ 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.0.xsd">
+
+
+</beans>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
+ version="2.4">
+
+ <display-name>Archetype Created Web Application</display-name>
+
+ <servlet>
+ <servlet-name>spring-ws</servlet-name>
+ <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>spring-ws</servlet-name>
+ <url-pattern>/*</url-pattern>
+ </servlet-mapping>
+
+</web-app>
--- /dev/null
+package org.argeo.slc.core.process;\r
+\r
+import java.io.StringReader;\r
+import java.text.SimpleDateFormat;\r
+import java.util.UUID;\r
+\r
+import javax.xml.parsers.DocumentBuilder;\r
+import javax.xml.parsers.DocumentBuilderFactory;\r
+import javax.xml.transform.dom.DOMResult;\r
+import javax.xml.transform.dom.DOMSource;\r
+\r
+import org.springframework.oxm.Marshaller;\r
+import org.springframework.oxm.Unmarshaller;\r
+import org.w3c.dom.Document;\r
+import org.xml.sax.InputSource;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import org.argeo.slc.core.xml.XmlUtils;\r
+import org.argeo.slc.unit.AbstractSpringTestCase;\r
+\r
+public class SlcExecutionCastorTest extends AbstractSpringTestCase {\r
+ private Log log = LogFactory.getLog(getClass());\r
+\r
+ public void testMarshalling() throws Exception {\r
+ Marshaller marshaller = getBean("castorMarshaller");\r
+\r
+ SlcExecution exec1 = new SlcExecution();\r
+ exec1.setUuid(UUID.randomUUID().toString());\r
+ exec1.setHost("localhost");\r
+ exec1.setPath("/test");\r
+ exec1.setType("slcAnt");\r
+ exec1.setStatus("STARTED");\r
+\r
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");\r
+ SlcExecutionStep step1 = new SlcExecutionStep();\r
+ step1.setBegin(sdf.parse("2008-04-17 18:21"));\r
+ step1.setType("LOG");\r
+ step1.setLog("A log message\nand another line");\r
+ step1.setSlcExecution(exec1);\r
+\r
+ Message msg1 = new Message();\r
+ msg1.addPart(exec1);\r
+ msg1.addPart(step1);\r
+\r
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();\r
+ DocumentBuilder parser = factory.newDocumentBuilder();\r
+ Document doc = parser.newDocument();\r
+ // Element rootElem = doc.createElement("msg");\r
+ // doc.appendChild(rootElem);\r
+ DOMResult domResult = new DOMResult(doc);\r
+\r
+ marshaller.marshal(msg1, domResult);\r
+ // marshaller.marshal(step1, domResult);\r
+ // marshaller.marshal(exec1, domResult);\r
+\r
+ String xml = XmlUtils.getDomAsString(doc, true);\r
+ log.info(xml);\r
+\r
+ Unmarshaller unmarshaller = getBean("castorMarshaller");\r
+\r
+ StringReader reader = new StringReader(xml);\r
+ Document parsedDoc = parser.parse(new InputSource(reader));\r
+\r
+ Message message = (Message) unmarshaller.unmarshal(new DOMSource(\r
+ parsedDoc));\r
+\r
+ assertNotNull(message);\r
+\r
+ for (Object obj : message.getParts()) {\r
+ if (obj instanceof SlcExecutionStep) {\r
+ assertSlcExecution(exec1, ((SlcExecutionStep) obj)\r
+ .getSlcExecution());\r
+ log.debug("Execution step ok");\r
+ }\r
+ }\r
+\r
+ log.info(message.getParts());\r
+\r
+ // NodeList lstSteps = parsedDoc\r
+ // .getElementsByTagName("slc-execution-step");\r
+ // SlcExecutionStep slcExecutionStep = (SlcExecutionStep) unmarshaller\r
+ // .unmarshal(new DOMSource(lstSteps.item(0)));\r
+\r
+ // assertNotNull(slcExecutionStep);\r
+ //\r
+ // SlcExecution slcExecution = slcExecutionStep.getSlcExecution();\r
+ //\r
+ // assertNotNull(slcExecution);\r
+ // assertEquals(exec1.getHost(), slcExecution.getHost());\r
+ // assertEquals(exec1.getPath(), slcExecution.getPath());\r
+ // assertEquals(exec1.getType(), slcExecution.getType());\r
+ // assertEquals(exec1.getStatus(), slcExecution.getStatus());\r
+\r
+ }\r
+\r
+ private void assertSlcExecution(SlcExecution expected, SlcExecution reached) {\r
+ assertNotNull(reached);\r
+ assertEquals(expected.getHost(), reached.getHost());\r
+ assertEquals(expected.getPath(), reached.getPath());\r
+ assertEquals(expected.getType(), reached.getType());\r
+ assertEquals(expected.getStatus(), reached.getStatus());\r
+ }\r
+}\r
--- /dev/null
+# Set root logger level to DEBUG and its only appender to A1.\r
+log4j.rootLogger=INFO, console\r
+\r
+## Levels\r
+# Slc\r
+log4j.logger.org.argeo.slc=DEBUG\r
+log4j.logger.argeo.slc=DEBUG\r
+# Spring\r
+log4j.logger.org.springframework=INFO\r
+# Hibernate\r
+log4j.logger.org.hibernate=WARN\r
+#log4j.logger.org.hibernate.SQL=TRACE\r
+#log4j.logger.org.hibernate.tool.hbm2ddl=TRACE\r
+#log4j.logger.org.hibernate.type=TRACE\r
+\r
+\r
+## Appenders\r
+# A1 is set to be a ConsoleAppender.\r
+log4j.appender.console=org.apache.log4j.ConsoleAppender\r
+\r
+# A1 uses PatternLayout.\r
+log4j.appender.console.layout=org.apache.log4j.PatternLayout\r
+log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c%n\r
+\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">\r
+\r
+ <bean id="castorMarshaller"\r
+ class="org.springframework.oxm.castor.CastorMarshaller">\r
+ <property name="mappingLocation"\r
+ value="classpath:org/argeo/slc/castor/process/castorMapping.xml" />\r
+ </bean>\r
+\r
+</beans>
\ No newline at end of file