]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Marshalling/unmarshalling of SlcExecution messages
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 19 Apr 2008 17:44:17 +0000 (17:44 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 19 Apr 2008 17:44:17 +0000 (17:44 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1002 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

sandbox/argeo.slc.ws/.classpath
sandbox/argeo.slc.ws/pom.xml
sandbox/argeo.slc.ws/src/main/java/org/argeo/slc/core/process/Message.java [deleted file]
sandbox/argeo.slc.ws/src/main/java/org/argeo/slc/core/process/SlcExecution.java
sandbox/argeo.slc.ws/src/main/java/org/argeo/slc/core/process/SlcExecutionStep.java
sandbox/argeo.slc.ws/src/main/resources/org/argeo/slc/castor/process/castorMapping.xml [deleted file]
sandbox/argeo.slc.ws/src/main/resources/org/argeo/slc/castor/process/mapping.xml [new file with mode: 0644]
sandbox/argeo.slc.ws/src/test/java/org/argeo/slc/core/process/SlcExecutionCastorTest.java
sandbox/argeo.slc.ws/src/test/resources/org/argeo/slc/core/process/applicationContext.xml

index ec7de9c082baee8678c47dc62037c98865122003..73c98b2816cbc337d749f49fa5503762a4d1c441 100644 (file)
@@ -1,13 +1,12 @@
-<?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>
index 1b00a410a2c86e242af1ae388f59cfe475fc1d7f..03f47a69dcbbc9aa7c392bb44d38f296cf514a10 100644 (file)
-<?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
diff --git a/sandbox/argeo.slc.ws/src/main/java/org/argeo/slc/core/process/Message.java b/sandbox/argeo.slc.ws/src/main/java/org/argeo/slc/core/process/Message.java
deleted file mode 100644 (file)
index f416855..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-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
index 3d3b1dacf3b99c1464958e5b9cc45a8039a6f4a3..1450cda9eb14823dfd656cf16b1e73ea1e48650c 100644 (file)
@@ -1,11 +1,26 @@
 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
index c9c41ffd86ce5cd10a7ae50d96653b41d024755f..0237e47b17cf25f77622cc97117fa561a43c9b46 100644 (file)
@@ -1,20 +1,18 @@
 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
@@ -32,12 +30,28 @@ public class SlcExecutionStep {
                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
diff --git a/sandbox/argeo.slc.ws/src/main/resources/org/argeo/slc/castor/process/castorMapping.xml b/sandbox/argeo.slc.ws/src/main/resources/org/argeo/slc/castor/process/castorMapping.xml
deleted file mode 100644 (file)
index df8e978..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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
diff --git a/sandbox/argeo.slc.ws/src/main/resources/org/argeo/slc/castor/process/mapping.xml b/sandbox/argeo.slc.ws/src/main/resources/org/argeo/slc/castor/process/mapping.xml
new file mode 100644 (file)
index 0000000..b608c49
--- /dev/null
@@ -0,0 +1,36 @@
+<?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
index dfb74e7f66731798b37360238f9a2e41ccbfc7e2..e650951ac94360da7101347850d8faf0e9db732c 100644 (file)
@@ -1,98 +1,91 @@
 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
@@ -102,4 +95,12 @@ public class SlcExecutionCastorTest extends AbstractSpringTestCase {
                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
index ae7abc64c8bd7be645b3a00af2ba77699f55033a..e5825051a86abe96e53c4842006edb1026f65c12 100644 (file)
@@ -3,10 +3,10 @@
        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