-<?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
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/main/resources"/>
+ <classpathentry kind="src" path="src/test/java"/>
+ <classpathentry kind="src" path="src/test/resources"/>
+ <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v5.5"/>
+ <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="output" path="build/classes"/>
+</classpath>
-<?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
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+ <groupId>org.argeo.slc</groupId>
+ <artifactId>argeo.slc.ws</artifactId>
+ <packaging>war</packaging>
+ <version>0.1-SNAPSHOT</version>
+ <description>SLC Web Services</description>
+ <build>
+ <plugins>
+ <!--
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-eclipse-plugin</artifactId>
+ <version>2.5-SNAPSHOT</version>
+ <configuration>
+ <wtpversion>2.0</wtpversion>
+ <downloadSources>true</downloadSources>
+ <workspace>C:\mbaudier\workspace</workspace>
+ </configuration>
+ </plugin>
+ -->
+ <plugin>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>maven-jetty-plugin</artifactId>
+ <dependencies>
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty</artifactId>
+ <version>6.1.9</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.eclipse.jdt</groupId>
+ <artifactId>core</artifactId>
+ </exclusion>
+ </exclusions>
+
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-project</artifactId>
+ <version>2.0.3</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.eclipse.jdt</groupId>
+ <artifactId>core</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-api</artifactId>
+ <version>2.0.3</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.eclipse.jdt</groupId>
+ <artifactId>core</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+
+ <artifactId>maven-artifact</artifactId>
+ <version>2.0.3</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.eclipse.jdt</groupId>
+ <artifactId>core</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-tools-api</artifactId>
+ <version>2.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.eclipse.jdt</groupId>
+ <artifactId>core</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty-plus</artifactId>
+ <version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.eclipse.jdt</groupId>
+ <artifactId>core</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+
+ <artifactId>jetty-naming</artifactId>
+ <version>6.1.9</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.eclipse.jdt</groupId>
+ <artifactId>core</artifactId>
+ </exclusion>
+ </exclusions>
+
+ </dependency>
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty-management</artifactId>
+ <version>6.1.9</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.eclipse.jdt</groupId>
+ <artifactId>core</artifactId>
+ </exclusion>
+ </exclusions>
+
+ </dependency>
+ </dependencies>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ <!--
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-dependencies</id>
+ <phase>package</phase>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>
+ src/main/webapp/WEB-INF/lib
+ </outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+
+ </plugin>
+ -->
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.14</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.3.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.ws</groupId>
+ <artifactId>spring-ws-core</artifactId>
+ <version>1.5.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.ws</groupId>
+ <artifactId>spring-oxm</artifactId>
+ <version>1.5.0</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.5</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.codehaus.castor</groupId>
+ <artifactId>castor</artifactId>
+ <version>1.1.2.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>xerces</groupId>
+ <artifactId>xerces</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ <version>2.8.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty</artifactId>
+ <version>6.1.9</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.eclipse.jdt</groupId>
+ <artifactId>core</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty-spring</artifactId>
+ <version>6.1.9</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+
+ <dependency>
+ <groupId>org.argeo.slc</groupId>
+ <artifactId>argeo-slc-core</artifactId>
+ <version>0.9-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+ <repositories>
+ <repository>
+ <id>central</id>
+ <url>http://www.argeo.org/maven/proxy</url>
+ <releases>
+ <enabled>true</enabled>
+ <updatePolicy>daily</updatePolicy>
+ <checksumPolicy>warn</checksumPolicy>
+ </releases>
+ </repository>
+ </repositories>
</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
package org.argeo.slc.core.process;\r
\r
+import java.util.List;\r
+import java.util.Vector;\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
+ private List<SlcExecutionStep> steps = new Vector<SlcExecutionStep>();\r
+ \r
+ \r
+\r
+ public List<SlcExecutionStep> getSteps() {\r
+ return steps;\r
+ }\r
+\r
+ public void setSteps(List<SlcExecutionStep> steps) {\r
+ this.steps = steps;\r
+ }\r
\r
public String getUuid() {\r
return uuid;\r
package org.argeo.slc.core.process;\r
\r
+import java.io.IOException;\r
+import java.io.StringReader;\r
+import java.io.StringWriter;\r
import java.util.Date;\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import org.apache.commons.io.IOUtils;\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
+ private List<String> logLines = new Vector<String>();\r
\r
public String getType() {\r
return type;\r
this.begin = begin;\r
}\r
\r
- public String getLog() {\r
+ public List<String> getLogLines() {\r
+ return logLines;\r
+ }\r
+\r
+ public void setLogLines(List<String> logLines) {\r
+ this.logLines = logLines;\r
+ }\r
+\r
+ public String logAsString() {\r
+ StringWriter writer = new StringWriter();\r
+ String log = writer.toString();\r
+ IOUtils.closeQuietly(writer);\r
return log;\r
}\r
\r
- public void setLog(String log) {\r
- this.log = log;\r
+ public void addLog(String log) {\r
+ try {\r
+ List<String> lines = IOUtils.readLines(new StringReader(log));\r
+ logLines.addAll(lines);\r
+ } catch (IOException e) {\r
+ throw new RuntimeException("Cannot add log", e);\r
+ }\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"?>
+
+<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN" "http://castor.org/mapping.dtd">
+
+<mapping>
+ <description>Process objects XML mapping</description>
+
+ <class name="org.argeo.slc.msg.process.SlcExecutionNotification"
+ auto-complete="true">
+ <field name="steps" collection="vector"
+ type="org.argeo.slc.core.process.SlcExecutionStep">
+ <bind-xml auto-naming="deriveByClass" location="steps"/>
+ </field>
+ </class>
+
+ <class name="org.argeo.slc.msg.process.SlcExecutionSaveOrUpdate"
+ auto-complete="true">
+ </class>
+
+ <class name="org.argeo.slc.core.process.SlcExecution"
+ auto-complete="true">
+ <field name="uuid" identity="true">
+ <bind-xml node="attribute" />
+ </field>
+ <field name="steps" collection="vector">
+ <bind-xml auto-naming="deriveByClass" location="steps"/>
+ </field>
+ </class>
+
+ <class name="org.argeo.slc.core.process.SlcExecutionStep"
+ auto-complete="true">
+ <field name="logLines" collection="vector" type="string">
+ <bind-xml name="log-line" location="log-lines"/>
+ </field>
+ </class>
+</mapping>
\ No newline at end of file
package org.argeo.slc.core.process;\r
\r
+import java.io.IOException;\r
import java.io.StringReader;\r
+import java.io.StringWriter;\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
+import javax.xml.transform.stream.StreamResult;\r
+import javax.xml.transform.stream.StreamSource;\r
\r
+import org.apache.commons.io.IOUtils;\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.msg.process.SlcExecutionNotification;\r
+import org.argeo.slc.msg.process.SlcExecutionSaveOrUpdate;\r
import org.argeo.slc.unit.AbstractSpringTestCase;\r
+import org.springframework.oxm.Marshaller;\r
+import org.springframework.oxm.Unmarshaller;\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
+ Marshaller marshaller = getBean("marshaller");\r
+ Unmarshaller unmarshaller = getBean("marshaller");\r
+\r
+ SlcExecution slcExec = new SlcExecution();\r
+ slcExec.setUuid(UUID.randomUUID().toString());\r
+ slcExec.setHost("localhost");\r
+ slcExec.setPath("/test");\r
+ slcExec.setType("slcAnt");\r
+ slcExec.setStatus("STARTED");\r
+\r
+ SlcExecutionSaveOrUpdate msgSave = new SlcExecutionSaveOrUpdate();\r
+ msgSave.setSlcExecution(slcExec);\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
+ String msgSaveXml = marshallAndLog(marshaller, msgSave);\r
\r
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");\r
+ SlcExecutionStep step0 = new SlcExecutionStep();\r
+ step0.setBegin(sdf.parse("2008-04-17 18:21"));\r
+ step0.setType("LOG");\r
+ step0.addLog("A log message\nand another line");\r
+\r
SlcExecutionStep step1 = new SlcExecutionStep();\r
- step1.setBegin(sdf.parse("2008-04-17 18:21"));\r
+ step1.setBegin(sdf.parse("2008-04-17 18:25"));\r
step1.setType("LOG");\r
- step1.setLog("A log message\nand another line");\r
- step1.setSlcExecution(exec1);\r
+ step1.addLog("A nothe rlog message");\r
\r
- Message msg1 = new Message();\r
- msg1.addPart(exec1);\r
- msg1.addPart(step1);\r
+ SlcExecutionNotification msgNotif = new SlcExecutionNotification();\r
+ msgNotif.addStep(step0);\r
+ msgNotif.addStep(step1);\r
+ msgNotif.setSlcExecutionUuid(slcExec.getUuid());\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
+ String msgNotifXml = marshallAndLog(marshaller, msgNotif);\r
\r
- marshaller.marshal(msg1, domResult);\r
- // marshaller.marshal(step1, domResult);\r
- // marshaller.marshal(exec1, domResult);\r
+ SlcExecutionSaveOrUpdate msgSaveUnm = unmarshall(unmarshaller,\r
+ msgSaveXml);\r
+ assertNotNull(msgSaveUnm);\r
+ assertSlcExecution(slcExec, msgSaveUnm.getSlcExecution());\r
\r
- String xml = XmlUtils.getDomAsString(doc, true);\r
- log.info(xml);\r
+ SlcExecutionNotification msgNotifUnm = unmarshall(unmarshaller,\r
+ msgNotifXml);\r
+ assertNotNull(msgNotifUnm);\r
+ assertEquals(slcExec.getUuid(), msgNotifUnm.getSlcExecutionUuid());\r
+ assertEquals(2, msgNotifUnm.getSteps().size());\r
+ assertSlcExecutionStep(step0, msgNotifUnm.getSteps().get(0));\r
+ assertSlcExecutionStep(step1, msgNotifUnm.getSteps().get(1));\r
\r
- Unmarshaller unmarshaller = getBean("castorMarshaller");\r
+ }\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
+ private String marshallAndLog(Marshaller marshaller, Object obj)\r
+ throws IOException {\r
+ StringWriter writer = new StringWriter();\r
+ marshaller.marshal(obj, new StreamResult(writer));\r
+ String xml = writer.toString();\r
+ log.info(xml);\r
+ IOUtils.closeQuietly(writer);\r
+ return xml;\r
+ }\r
\r
+ private <T> T unmarshall(Unmarshaller unmarshaller, String xml)\r
+ throws IOException {\r
+ StringReader reader = new StringReader(xml);\r
+ Object obj = unmarshaller.unmarshal(new StreamSource(reader));\r
+ IOUtils.closeQuietly(reader);\r
+ return (T) obj;\r
}\r
\r
private void assertSlcExecution(SlcExecution expected, SlcExecution reached) {\r
assertEquals(expected.getType(), reached.getType());\r
assertEquals(expected.getStatus(), reached.getStatus());\r
}\r
+\r
+ private void assertSlcExecutionStep(SlcExecutionStep expected,\r
+ SlcExecutionStep reached) {\r
+ assertNotNull(reached);\r
+ assertEquals(expected.getType(), reached.getType());\r
+ assertEquals(expected.logAsString(), reached.logAsString());\r
+ assertEquals(expected.getBegin(), reached.getBegin());\r
+ }\r
}\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
+ <bean id="marshaller"\r
class="org.springframework.oxm.castor.CastorMarshaller">\r
<property name="mappingLocation"\r
- value="classpath:org/argeo/slc/castor/process/castorMapping.xml" />\r
+ value="classpath:org/argeo/slc/castor/process/mapping.xml" />\r
</bean>\r
\r
</beans>
\ No newline at end of file