]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Update XML formats
authorMathieu Baudier <mbaudier@argeo.org>
Tue, 29 Apr 2008 19:11:24 +0000 (19:11 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Tue, 29 Apr 2008 19:11:24 +0000 (19:11 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1079 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

13 files changed:
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecution.java
org.argeo.slc.core/src/main/java/org/argeo/slc/unit/UnitXmlUtils.java [new file with mode: 0644]
org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/process/mapping.xml
org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/test/tree/mapping.xml
org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/process/SlcExecution.hbm.xml
org.argeo.slc.core/src/main/resources/org/argeo/slc/xml/slc.xsd
org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionCastorTest.java
org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionTestUtils.java
org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultCastorTest.java
org.argeo.slc.core/src/test/resources/log4j.properties
org.argeo.slc.core/src/test/resources/org/argeo/slc/core/process/execution.xml
org.argeo.slc.core/src/test/resources/org/argeo/slc/core/test/tree/applicationContext.xml

index c222d5ff78671fa58fb8e92a39da9f0acd4797e9..001ead97bd28db91d77d5bbea186bcde54aa4675 100644 (file)
@@ -168,10 +168,9 @@ public class SlcProjectHelper extends ProjectHelper2 {
        }\r
 \r
        /** Gets the path of a project (root). */\r
-//     private static TreeSPath getProjectPath(Project project) {\r
-//             return (TreeSPath) project.getReference(REF_PROJECT_PATH);\r
-//     }\r
-\r
+       // private static TreeSPath getProjectPath(Project project) {\r
+       // return (TreeSPath) project.getReference(REF_PROJECT_PATH);\r
+       // }\r
        /** Initializes the Spring application context. */\r
        private void initSpringContext(Project project) {\r
                System.getProperties().putAll((Map<?, ?>) project.getProperties());\r
@@ -188,11 +187,11 @@ public class SlcProjectHelper extends ProjectHelper2 {
 \r
                createAndRegisterSlcExecution(project);\r
                // Add build listeners declared in Spring context\r
-//             Map<String, BuildListener> listeners = context.getBeansOfType(\r
-//                             BuildListener.class, false, true);\r
-//             for (BuildListener listener : listeners.values()) {\r
-//                     project.addBuildListener(listener);\r
-//             }\r
+               // Map<String, BuildListener> listeners = context.getBeansOfType(\r
+               // BuildListener.class, false, true);\r
+               // for (BuildListener listener : listeners.values()) {\r
+               // project.addBuildListener(listener);\r
+               // }\r
        }\r
 \r
        /** Loads the SLC specific Ant tasks. */\r
@@ -246,8 +245,10 @@ public class SlcProjectHelper extends ProjectHelper2 {
                        slcExecution.setType(SlcExecutionBuildListener.ANT_TYPE);\r
                }\r
 \r
-               slcExecution.setPath(project.getProperty("ant.file"));\r
+               slcExecution.setUser(System.getProperty("user.name"));\r
                slcExecution.setStatus(SlcExecution.STATUS_RUNNING);\r
+               slcExecution.getAttributes().put("ant.file",\r
+                               project.getProperty("ant.file"));\r
 \r
                project.addReference(SlcExecutionBuildListener.REF_SLC_EXECUTION,\r
                                slcExecution);\r
index 5b9b995cdc389c8db67d9bfec19ef5d11b05f1f2..4df206815b5ed43a5288bf641ce9665fabc2d9af 100644 (file)
@@ -1,6 +1,8 @@
 package org.argeo.slc.core.process;\r
 \r
 import java.util.List;\r
+import java.util.Map;\r
+import java.util.TreeMap;\r
 import java.util.Vector;\r
 \r
 public class SlcExecution {\r
@@ -14,9 +16,10 @@ public class SlcExecution {
 \r
        private String uuid;\r
        private String host;\r
-       private String path;\r
+       private String user;\r
        private String type;\r
        private String status;\r
+       private Map<String, String> attributes = new TreeMap<String, String>();\r
 \r
        private List<SlcExecutionStep> steps = new Vector<SlcExecutionStep>();\r
 \r
@@ -44,12 +47,12 @@ public class SlcExecution {
                this.host = host;\r
        }\r
 \r
-       public String getPath() {\r
-               return path;\r
+       public String getUser() {\r
+               return user;\r
        }\r
 \r
-       public void setPath(String path) {\r
-               this.path = path;\r
+       public void setUser(String path) {\r
+               this.user = path;\r
        }\r
 \r
        public String getType() {\r
@@ -88,4 +91,11 @@ public class SlcExecution {
                return getUuid().hashCode();\r
        }\r
 \r
+       public Map<String, String> getAttributes() {\r
+               return attributes;\r
+       }\r
+\r
+       public void setAttributes(Map<String, String> attributes) {\r
+               this.attributes = attributes;\r
+       }\r
 }\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/UnitXmlUtils.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/UnitXmlUtils.java
new file mode 100644 (file)
index 0000000..710b7e8
--- /dev/null
@@ -0,0 +1,34 @@
+package org.argeo.slc.unit;\r
+\r
+import java.io.IOException;\r
+\r
+import javax.xml.transform.Source;\r
+\r
+import junit.framework.TestCase;\r
+\r
+import org.springframework.xml.validation.XmlValidator;\r
+import org.springframework.xml.xsd.XsdSchema;\r
+import org.xml.sax.SAXParseException;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+public abstract class UnitXmlUtils {\r
+       private final static Log log = LogFactory.getLog(UnitXmlUtils.class);\r
+\r
+       public static void assertXsdSchemaValidation(XsdSchema schema, Source source)\r
+                       throws IOException {\r
+               XmlValidator validator = schema.createValidator();\r
+               SAXParseException[] exceptions = validator.validate(source);\r
+               if (exceptions.length != 0) {\r
+                       for (SAXParseException ex : exceptions) {\r
+                               log.error(ex.getMessage());\r
+                       }\r
+                       TestCase.fail("Could not validate with schema " + schema);\r
+               }\r
+       }\r
+\r
+       private UnitXmlUtils() {\r
+\r
+       }\r
+}\r
index 091ca8cdfbdd5a7da31638680157dc16c010b9b5..b02c16fddb6a97be382c0411f5ea6c19483e854a 100644 (file)
@@ -5,36 +5,61 @@
 <mapping>\r
        <description>Process objects XML mapping</description>\r
 \r
-       <class name="org.argeo.slc.msg.process.SlcExecutionStepsRequest"\r
-               auto-complete="true">\r
-               <map-to ns-uri="http://argeo.org/projects/slc/schemas" />\r
+       <class name="org.argeo.slc.msg.process.SlcExecutionStepsRequest">\r
+               <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+                       ns-prefix="slc" />\r
+               <field name="slcExecutionUuid" />\r
                <field name="steps" collection="vector"\r
                        type="org.argeo.slc.core.process.SlcExecutionStep">\r
                        <bind-xml auto-naming="deriveByClass" location="steps" />\r
                </field>\r
        </class>\r
 \r
-       <class name="org.argeo.slc.msg.process.SlcExecutionRequest"\r
-               auto-complete="true">\r
-               <map-to ns-uri="http://argeo.org/projects/slc/schemas" />\r
+       <class name="org.argeo.slc.msg.process.SlcExecutionRequest">\r
+               <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+                       ns-prefix="slc" />\r
+               <field name="slcExecution"\r
+                       type="org.argeo.slc.core.process.SlcExecution" />\r
        </class>\r
 \r
-       <class name="org.argeo.slc.core.process.SlcExecution"\r
-               auto-complete="true">\r
+       <class name="org.argeo.slc.core.process.SlcExecution">\r
+               <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+                       ns-prefix="slc" />\r
                <field name="uuid" identity="true">\r
                        <bind-xml node="attribute" />\r
                </field>\r
+               <field name="status" />\r
+               <field name="type" />\r
+               <field name="host" />\r
+               <field name="user" />\r
                <field name="steps" collection="vector"\r
                        type="org.argeo.slc.core.process.SlcExecutionStep">\r
                        <bind-xml auto-naming="deriveByClass" location="steps" />\r
                </field>\r
+               <field name="attributes" collection="map">\r
+                       <bind-xml name="attribute" location="attributes">\r
+                               <class name="org.exolab.castor.mapping.MapItem">\r
+                                       <map-to\r
+                                               ns-uri="http://argeo.org/projects/slc/schemas" ns-prefix="slc" />\r
+                                       <field name="key" type="string">\r
+                                               <bind-xml name="name" node="attribute" />\r
+                                       </field>\r
+                                       <field name="value" type="string">\r
+                                               <bind-xml node="text" />\r
+                                       </field>\r
+                               </class>\r
+                       </bind-xml>\r
+               </field>\r
        </class>\r
 \r
-       <class name="org.argeo.slc.core.process.SlcExecutionStep"\r
-               auto-complete="true">\r
+       <class name="org.argeo.slc.core.process.SlcExecutionStep">\r
+               <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+                       ns-prefix="slc" />\r
                <field name="uuid" identity="true">\r
                        <bind-xml node="attribute" />\r
                </field>\r
+               <field name="type" />\r
+               <field name="begin" />\r
                <field name="logLines" collection="vector" type="string">\r
                        <bind-xml name="log-line" location="log-lines" />\r
                </field>\r
index 61c4e874be5f69eea34702122b59fe48934fe134..16b4970e4ee0bf14af472932ec73f4714dbd6543 100644 (file)
-<?xml version="1.0"?>
-
-<mapping>
-       <description>TreeTestResult objects XML mapping</description>
-
-       <class name="org.argeo.slc.core.test.tree.TreeTestResult"
-               auto-complete="false">
-               <field name="numericResultId"
-                       type="org.argeo.slc.core.test.NumericTRId" />
-               <field name="closeDate" />
-               <field name="resultParts" collection="map">
-                       <bind-xml name="result-part" location="result-parts">
-                               <class name="org.exolab.castor.mapping.MapItem">
-                                       <field name="key"
-                                               type="org.argeo.slc.core.structure.tree.TreeSPath">
-                                               <bind-xml name="path" node="attribute" />
-                                       </field>
-                                       <field name="value"
-                                               type="org.argeo.slc.core.test.tree.PartSubList">
-                                               <bind-xml name="part-sub-list" />
-                                       </field>
-                               </class>
-                       </bind-xml>
-               </field>
-               <field name="elements" collection="map">
-                       <bind-xml name="element" location="elements">
-                               <class name="org.exolab.castor.mapping.MapItem">
-                                       <field name="key"
-                                               type="org.argeo.slc.core.structure.tree.TreeSPath">
-                                               <bind-xml name="path" node="attribute" />
-                                       </field>
-                                       <field name="value"
-                                               type="org.argeo.slc.core.structure.SimpleSElement">
-                                               <bind-xml name="simpleSElement" />
-                                       </field>
-                               </class>
-                       </bind-xml>
-               </field>
-       </class>
-
-       <class name="org.argeo.slc.core.test.tree.PartSubList"
-               auto-complete="false">
-               <field name="slcExecutionUuid" type="string" />
-               <field name="slcExecutionStepUuid" type="string" />
-               <field name="parts" collection="vector"
-                       type="org.argeo.slc.core.test.SimpleResultPart">
-                       <bind-xml auto-naming="deriveByClass" location="parts" />
-               </field>
-       </class>
-
-       <class name="org.argeo.slc.core.test.SimpleResultPart"
-               auto-complete="false">
-               <field name="message" type="string" />
-               <field name="status" type="string"
-                       handler="org.argeo.slc.castor.test.tree.StatusFieldHandler" />
-               <field name="exception" type="java.lang.Exception" />
-       </class>
-
-       <class name="org.argeo.slc.core.structure.tree.TreeSPath"
-               auto-complete="false">
-               <field name="asUniqueString" type="string" />
-       </class>
-
-       <class name="org.argeo.slc.core.structure.SimpleSElement"
-               auto-complete="false">
-               <field name="label" type="string" />
-               <field name="tags" collection="map">
-                       <bind-xml name="tag" location="tags">
-                               <class name="org.exolab.castor.mapping.MapItem">
-                                       <field name="key" type="string">
-                                               <bind-xml name="name" node="attribute" />
-                                       </field>
-                                       <field name="value" type="string">
-                                               <bind-xml name="value" />
-                                       </field>
-                               </class>
-                       </bind-xml>
-               </field>
-       </class>
-
-       <class name="java.lang.Exception" auto-complete="false">
-               <field name="message"></field>
-               <field name="stackTrace" collection="array"
-                       type="java.lang.StackTraceElement">
-                       <bind-xml auto-naming="deriveByClass"
-                               location="stack-trace" />
-               </field>
-       </class>
-
-       <class name="java.lang.StackTraceElement" auto-complete="false"
-               verify-constructable="false">
-               <field name="declaringClass" type="string" set-method="%1"
-                       get-method="getClassName">
-                       <bind-xml node="attribute" />
-               </field>
-               <field name="methodName" type="string" set-method="%2"
-                       get-method="getMethodName">
-                       <bind-xml node="attribute" />
-               </field>
-               <field name="fileName" type="string" set-method="%3"
-                       get-method="getFileName">
-                       <bind-xml node="attribute" />
-               </field>
-               <field name="lineNumber" type="integer" set-method="%4"
-                       get-method="getLineNumber">
-                       <bind-xml node="attribute" />
-               </field>
-       </class>
+<?xml version="1.0"?>\r
+\r
+<mapping>\r
+       <description>TreeTestResult objects XML mapping</description>\r
+\r
+       <class name="org.argeo.slc.core.test.tree.TreeTestResult"\r
+               auto-complete="false">\r
+               <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+                       ns-prefix="slc" />\r
+               <field name="closeDate" />\r
+               <field name="numericResultId"\r
+                       type="org.argeo.slc.core.test.NumericTRId">\r
+                       <bind-xml auto-naming="deriveByClass"\r
+                               location="result-id">\r
+                       </bind-xml>\r
+               </field>\r
+               <field name="resultParts" collection="map">\r
+                       <bind-xml name="result-part" location="result-parts">\r
+                               <class name="org.exolab.castor.mapping.MapItem">\r
+                                       <map-to\r
+                                               ns-uri="http://argeo.org/projects/slc/schemas" ns-prefix="slc" />\r
+                                       <field name="key"\r
+                                               type="org.argeo.slc.core.structure.tree.TreeSPath">\r
+                                               <bind-xml name="path" node="attribute" />\r
+                                       </field>\r
+                                       <field name="value"\r
+                                               type="org.argeo.slc.core.test.tree.PartSubList">\r
+                                               <bind-xml name="part-sub-list" />\r
+                                       </field>\r
+                               </class>\r
+                       </bind-xml>\r
+               </field>\r
+               <field name="elements" collection="map">\r
+                       <bind-xml name="element" location="elements">\r
+                               <class name="org.exolab.castor.mapping.MapItem">\r
+                                       <map-to\r
+                                               ns-uri="http://argeo.org/projects/slc/schemas" ns-prefix="slc" />\r
+                                       <field name="key"\r
+                                               type="org.argeo.slc.core.structure.tree.TreeSPath">\r
+                                               <bind-xml name="path" node="attribute" />\r
+                                       </field>\r
+                                       <field name="value"\r
+                                               type="org.argeo.slc.core.structure.SimpleSElement">\r
+                                               <bind-xml auto-naming="deriveByClass" />\r
+                                       </field>\r
+                               </class>\r
+                       </bind-xml>\r
+               </field>\r
+       </class>\r
+\r
+       <class name="org.argeo.slc.core.test.NumericTRId"\r
+               auto-complete="false">\r
+               <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+                       ns-prefix="slc" />\r
+               <field name="value">\r
+                       <bind-xml node="attribute" />\r
+               </field>\r
+       </class>\r
+\r
+       <class name="org.argeo.slc.core.test.tree.PartSubList"\r
+               auto-complete="false">\r
+               <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+                       ns-prefix="slc" />\r
+               <field name="slcExecutionUuid" type="string" />\r
+               <field name="slcExecutionStepUuid" type="string" />\r
+               <field name="parts" collection="vector"\r
+                       type="org.argeo.slc.core.test.SimpleResultPart">\r
+                       <bind-xml auto-naming="deriveByClass" location="parts" />\r
+               </field>\r
+       </class>\r
+\r
+       <class name="org.argeo.slc.core.test.SimpleResultPart"\r
+               auto-complete="false">\r
+               <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+                       ns-prefix="slc" />\r
+               <field name="message" type="string" />\r
+               <field name="status" type="string"\r
+                       handler="org.argeo.slc.castor.test.tree.StatusFieldHandler" />\r
+               <field name="exception" type="java.lang.Exception" />\r
+       </class>\r
+\r
+       <class name="org.argeo.slc.core.structure.tree.TreeSPath"\r
+               auto-complete="false">\r
+               <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+                       ns-prefix="slc" />\r
+               <field name="asUniqueString" type="string" />\r
+       </class>\r
+\r
+       <class name="org.argeo.slc.core.structure.SimpleSElement"\r
+               auto-complete="false">\r
+               <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+                       ns-prefix="slc" />\r
+               <field name="label" type="string" />\r
+               <field name="tags" collection="map">\r
+                       <bind-xml name="tag" location="tags">\r
+                               <class name="org.exolab.castor.mapping.MapItem">\r
+                                       <map-to\r
+                                               ns-uri="http://argeo.org/projects/slc/schemas" ns-prefix="slc" />\r
+                                       <field name="key" type="string">\r
+                                               <bind-xml name="name" node="attribute" />\r
+                                       </field>\r
+                                       <field name="value" type="string">\r
+                                               <bind-xml name="tag-value" />\r
+                                       </field>\r
+                               </class>\r
+                       </bind-xml>\r
+               </field>\r
+       </class>\r
+\r
+       <class name="java.lang.Exception" auto-complete="false">\r
+               <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+                       ns-prefix="slc" />\r
+               <field name="message"></field>\r
+               <field name="stackTrace" collection="array"\r
+                       type="java.lang.StackTraceElement">\r
+                       <bind-xml auto-naming="deriveByClass"\r
+                               location="stack-trace" />\r
+               </field>\r
+       </class>\r
+\r
+       <class name="java.lang.StackTraceElement" auto-complete="false"\r
+               verify-constructable="false">\r
+               <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
+                       ns-prefix="slc" />\r
+               <field name="declaringClass" type="string" set-method="%1"\r
+                       get-method="getClassName">\r
+                       <bind-xml node="attribute" />\r
+               </field>\r
+               <field name="methodName" type="string" set-method="%2"\r
+                       get-method="getMethodName">\r
+                       <bind-xml node="attribute" />\r
+               </field>\r
+               <field name="fileName" type="string" set-method="%3"\r
+                       get-method="getFileName">\r
+                       <bind-xml node="attribute" />\r
+               </field>\r
+               <field name="lineNumber" type="integer" set-method="%4"\r
+                       get-method="getLineNumber">\r
+                       <bind-xml node="attribute" />\r
+               </field>\r
+       </class>\r
 </mapping>
\ No newline at end of file
index bc41c4d67b93e2e270ed166ef57d09b4955d581b..bde8cc54d701e26c92859e1c1322760e0ff4a407 100644 (file)
@@ -6,7 +6,7 @@
        <class name="SlcExecution" table="SLC_EXECUTION">\r
                <id name="uuid" column="UUID" />\r
                <property name="host" column="HOST" />\r
-               <property name="path" column="PATH" />\r
+               <property name="user" column="USER" />\r
                <property name="type" column="TYPE" />\r
                <property name="status" column="STATUS" />\r
 \r
                        <one-to-many\r
                                class="org.argeo.slc.core.process.SlcExecutionStep" />\r
                </list>\r
+\r
+               <map name="attributes" table="SLC_EXEC_ATTRS_MAP" cascade="all"\r
+                       lazy="false" sort="natural">\r
+                       <key column="PARENT_ID" />\r
+                       <map-key type="string" column="ATTR_NAME" />\r
+                       <element column="NAME" type="string" />\r
+               </map>\r
+\r
        </class>\r
 </hibernate-mapping>
\ No newline at end of file
index 243fbd9c5f5eb5fabe7abd8558127f4806d3f038..fc8493e42ab241e7b4e77d649528302916bb4764 100644 (file)
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
-       xmlns:slc="http://argeo.org/projects/slc/schemas"
-       elementFormDefault="qualified"
-       targetNamespace="http://argeo.org/projects/slc/schemas">
-       <!-- TREE TEST RESULT -->
-       <xs:complexType name="TreeTestResultType">
-               <xs:all>
-                       <xs:element name="close-date" type="xs:dateTime" />
-                       <xs:element name="result-parts" minOccurs="0"
-                               type="slc:ResultPartsType" />
-                       <xs:element name="elements" minOccurs="0"
-                               type="slc:ElementsType" />
-               </xs:all>
-       </xs:complexType>
-       <xs:complexType name="ResultPartsType">
-               <xs:sequence>
-                       <xs:element name="result-part" type="slc:ResultPartType"
-                               maxOccurs="unbounded">
-                       </xs:element>
-               </xs:sequence>
-       </xs:complexType>
-       <xs:complexType name="ResultPartType">
-               <xs:all>
-                       <xs:element name="part-sub-list" type="slc:PartSubListType" />
-               </xs:all>
-               <xs:attribute name="path" type="xs:string" use="required" />
-       </xs:complexType>
-       <xs:complexType name="PartSubListType">
-               <xs:all>
-                       <xs:element name="slc-execution-uuid" type="xs:string" />
-                       <xs:element name="slc-execution-step-uuid" type="xs:string" />
-                       <xs:element name="parts" minOccurs="0" type="slc:PartsType" />
-               </xs:all>
-               <xs:attribute name="path" type="xs:string" use="required" />
-       </xs:complexType>
-       <xs:complexType name="PartsType">
-               <xs:sequence>
-                       <xs:element name="simple-result-part"
-                               type="slc:SimpleResultPartType" maxOccurs="unbounded">
-                       </xs:element>
-               </xs:sequence>
-       </xs:complexType>
-       <xs:complexType name="SimpleResultPartType">
-               <xs:all>
-                       <xs:element name="status">
-                               <xs:simpleType>
-                                       <xs:restriction base="xs:string">
-                                               <xs:enumeration value="PASSED" />
-                                               <xs:enumeration value="FAILED" />
-                                               <xs:enumeration value="ERROR" />
-                                       </xs:restriction>
-                               </xs:simpleType>
-                       </xs:element>
-                       <xs:element name="message" type="xs:string" />
-                       <xs:element name="exception" minOccurs="0"
-                               type="slc:ExceptionType" />
-               </xs:all>
-       </xs:complexType>
-       <xs:complexType name="ExceptionType">
-               <xs:all>
-                       <xs:element name="localized-message" type="xs:string" />
-                       <xs:element name="message" type="xs:string" />
-                       <xs:element name="exception" minOccurs="0"
-                               type="slc:StackTraceType" />
-               </xs:all>
-       </xs:complexType>
-       <xs:complexType name="StackTraceType">
-               <xs:sequence>
-                       <xs:element name="stack-trace-element"
-                               type="slc:StackTraceElementType" maxOccurs="unbounded">
-                       </xs:element>
-               </xs:sequence>
-       </xs:complexType>
-       <xs:complexType name="StackTraceElementType">
-               <xs:attribute name="delaring-class" type="xs:string"
-                       use="required" />
-               <xs:attribute name="method-name" type="xs:string"
-                       use="required" />
-               <xs:attribute name="file-name" type="xs:string" use="required" />
-               <xs:attribute name="line-number" type="xs:integer"
-                       use="required" />
-       </xs:complexType>
-       <xs:complexType name="ElementsType">
-               <xs:sequence>
-                       <xs:element name="element" type="slc:ElementType"
-                               maxOccurs="unbounded">
-                       </xs:element>
-               </xs:sequence>
-       </xs:complexType>
-       <xs:complexType name="ElementType">
-               <xs:all>
-                       <xs:element name="simpleSElement" type="slc:SimpleSElementType" />
-               </xs:all>
-               <xs:attribute name="path" type="xs:string" use="required" />
-       </xs:complexType>
-       <xs:complexType name="SimpleSElementType">
-               <xs:all>
-                       <xs:element name="label" type="xs:string" />
-                       <xs:element name="tags" type="slc:TagsType" minOccurs="0"/>
-               </xs:all>
-       </xs:complexType>
-       <xs:complexType name="TagsType">
-               <xs:sequence>
-                       <xs:element name="tag" type="slc:TagType"
-                               maxOccurs="unbounded">
-                       </xs:element>
-               </xs:sequence>
-       </xs:complexType>
-       <xs:complexType name="TagType">
-               <xs:all>
-                       <xs:element name="value" type="xs:string" />
-               </xs:all>
-               <xs:attribute name="name" type="xs:string" use="required" />
-       </xs:complexType>
-
-       <!-- SLC EXECUTION -->
-       <xs:element name="slc-execution-request">
-               <xs:complexType>
-                       <xs:all>
-                               <xs:element name="slc-execution"
-                                       type="slc:SlcExecutionType" />
-                       </xs:all>
-               </xs:complexType>
-       </xs:element>
-       <xs:element name="slc-execution-steps-request">
-               <xs:complexType>
-                       <xs:sequence>
-                               <xs:element name="steps"
-                                       type="slc:SlcExecutionStepsType" />
-                               <xs:element name="slc-execution-uuid" type="xs:string" />
-                       </xs:sequence>
-               </xs:complexType>
-       </xs:element>
-       <xs:complexType name="SlcExecutionType">
-               <xs:all>
-                       <xs:element name="status" type="xs:string" />
-                       <xs:element name="type" type="xs:string" />
-                       <xs:element name="host" type="xs:string" />
-                       <xs:element name="path" type="xs:string" />
-                       <xs:element name="steps" minOccurs="0"
-                               type="slc:SlcExecutionStepsType" />
-               </xs:all>
-               <xs:attribute name="uuid" type="xs:string" use="required" />
-       </xs:complexType>
-       <xs:complexType name="SlcExecutionStepType">
-               <xs:all>
-                       <xs:element name="type" type="xs:string" />
-                       <xs:element name="begin" type="xs:dateTime" />
-                       <xs:element name="log-lines" minOccurs="0">
-                               <xs:complexType>
-                                       <xs:sequence>
-                                               <xs:element name="log-line" type="xs:string"
-                                                       maxOccurs="unbounded" />
-                                       </xs:sequence>
-                               </xs:complexType>
-                       </xs:element>
-               </xs:all>
-               <xs:attribute name="uuid" type="xs:string" use="required" />
-       </xs:complexType>
-       <xs:complexType name="SlcExecutionStepsType">
-               <xs:sequence>
-                       <xs:element name="slc-execution-step"
-                               type="slc:SlcExecutionStepType" maxOccurs="unbounded">
-                       </xs:element>
-               </xs:sequence>
-       </xs:complexType>
-
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"\r
+       xmlns:slc="http://argeo.org/projects/slc/schemas"\r
+       elementFormDefault="qualified"\r
+       targetNamespace="http://argeo.org/projects/slc/schemas">\r
+       <!-- TREE TEST RESULT -->\r
+       <xs:element name="tree-test-result" type="slc:TreeTestResultType" />\r
+       <xs:complexType name="TreeTestResultType">\r
+               <xs:all>\r
+                       <xs:element name="result-id" type="slc:ResultIdType" />\r
+                       <xs:element name="close-date" type="xs:dateTime" />\r
+                       <xs:element name="result-parts" minOccurs="0"\r
+                               type="slc:ResultPartsType" />\r
+                       <xs:element name="elements" minOccurs="0"\r
+                               type="slc:ElementsType" />\r
+               </xs:all>\r
+       </xs:complexType>\r
+       <xs:complexType name="ResultIdType">\r
+               <xs:all>\r
+                       <xs:element name="numeric-tRId"\r
+                               type="slc:NumericResultIdType" />\r
+               </xs:all>\r
+       </xs:complexType>\r
+       <xs:complexType name="NumericResultIdType">\r
+               <xs:attribute name="value" type="xs:integer" use="required" />\r
+       </xs:complexType>\r
+       <xs:complexType name="ResultPartsType">\r
+               <xs:sequence>\r
+                       <xs:element name="result-part" type="slc:ResultPartType"\r
+                               maxOccurs="unbounded">\r
+                       </xs:element>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+       <xs:complexType name="ResultPartType">\r
+               <xs:all>\r
+                       <xs:element name="part-sub-list" type="slc:PartSubListType" />\r
+               </xs:all>\r
+               <xs:attribute name="path" type="xs:string" use="required" />\r
+       </xs:complexType>\r
+       <xs:complexType name="PartSubListType">\r
+               <xs:all>\r
+                       <xs:element name="slc-execution-uuid" type="xs:string" />\r
+                       <xs:element name="slc-execution-step-uuid" type="xs:string" />\r
+                       <xs:element name="parts" minOccurs="0" type="slc:PartsType" />\r
+               </xs:all>\r
+       </xs:complexType>\r
+       <xs:complexType name="PartsType">\r
+               <xs:sequence>\r
+                       <xs:element name="simple-result-part"\r
+                               type="slc:SimpleResultPartType" maxOccurs="unbounded">\r
+                       </xs:element>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+       <xs:complexType name="SimpleResultPartType">\r
+               <xs:all>\r
+                       <xs:element name="status">\r
+                               <xs:simpleType>\r
+                                       <xs:restriction base="xs:string">\r
+                                               <xs:enumeration value="PASSED" />\r
+                                               <xs:enumeration value="FAILED" />\r
+                                               <xs:enumeration value="ERROR" />\r
+                                       </xs:restriction>\r
+                               </xs:simpleType>\r
+                       </xs:element>\r
+                       <xs:element name="message" type="xs:string" />\r
+                       <xs:element name="exception" minOccurs="0"\r
+                               type="slc:ExceptionType" />\r
+               </xs:all>\r
+       </xs:complexType>\r
+       <xs:complexType name="ExceptionType">\r
+               <xs:all>\r
+                       <xs:element name="message" type="xs:string" />\r
+                       <xs:element name="stack-trace" minOccurs="0"\r
+                               type="slc:StackTraceType" />\r
+               </xs:all>\r
+       </xs:complexType>\r
+       <xs:complexType name="StackTraceType">\r
+               <xs:sequence>\r
+                       <xs:element name="stack-trace-element"\r
+                               type="slc:StackTraceElementType" maxOccurs="unbounded">\r
+                       </xs:element>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+       <xs:complexType name="StackTraceElementType">\r
+               <xs:attribute name="declaring-class" type="xs:string"\r
+                       use="required" />\r
+               <xs:attribute name="method-name" type="xs:string"\r
+                       use="required" />\r
+               <xs:attribute name="file-name" type="xs:string" use="required" />\r
+               <xs:attribute name="line-number" type="xs:integer"\r
+                       use="required" />\r
+       </xs:complexType>\r
+       <xs:complexType name="ElementsType">\r
+               <xs:sequence>\r
+                       <xs:element name="element" type="slc:ElementType"\r
+                               maxOccurs="unbounded">\r
+                       </xs:element>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+       <xs:complexType name="ElementType">\r
+               <xs:all>\r
+                       <xs:element name="simple-sElement"\r
+                               type="slc:SimpleSElementType" />\r
+               </xs:all>\r
+               <xs:attribute name="path" type="xs:string" use="required" />\r
+       </xs:complexType>\r
+       <xs:complexType name="SimpleSElementType">\r
+               <xs:all>\r
+                       <xs:element name="label" type="xs:string" />\r
+                       <xs:element name="tags" type="slc:TagsType" minOccurs="0" />\r
+               </xs:all>\r
+       </xs:complexType>\r
+       <xs:complexType name="TagsType">\r
+               <xs:sequence>\r
+                       <xs:element name="tag" type="slc:TagType"\r
+                               maxOccurs="unbounded">\r
+                       </xs:element>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+       <xs:complexType name="TagType">\r
+               <xs:all>\r
+                       <xs:element name="tag-value" type="xs:string" />\r
+               </xs:all>\r
+               <xs:attribute name="name" type="xs:string" use="required" />\r
+       </xs:complexType>\r
+\r
+       <!-- SLC EXECUTION -->\r
+       <xs:element name="slc-execution" type="slc:SlcExecutionType" />\r
+       <xs:complexType name="SlcExecutionType">\r
+               <xs:all>\r
+                       <xs:element name="status" type="xs:string" />\r
+                       <xs:element name="type" type="xs:string" />\r
+                       <xs:element name="host" type="xs:string" />\r
+                       <xs:element name="user" type="xs:string" />\r
+                       <xs:element name="steps" minOccurs="0"\r
+                               type="slc:SlcExecutionStepsType" />\r
+                       <xs:element name="attributes" minOccurs="0"\r
+                               type="slc:AttributesType" />\r
+               </xs:all>\r
+               <xs:attribute name="uuid" type="xs:string" use="required" />\r
+       </xs:complexType>\r
+       <xs:complexType name="SlcExecutionStepsType">\r
+               <xs:sequence>\r
+                       <xs:element name="slc-execution-step"\r
+                               type="slc:SlcExecutionStepType" maxOccurs="unbounded">\r
+                       </xs:element>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+       <xs:complexType name="SlcExecutionStepType">\r
+               <xs:all>\r
+                       <xs:element name="type" type="xs:string" />\r
+                       <xs:element name="begin" type="xs:dateTime" />\r
+                       <xs:element name="log-lines" minOccurs="0">\r
+                               <xs:complexType>\r
+                                       <xs:sequence>\r
+                                               <xs:element name="log-line" type="xs:string"\r
+                                                       maxOccurs="unbounded" />\r
+                                       </xs:sequence>\r
+                               </xs:complexType>\r
+                       </xs:element>\r
+               </xs:all>\r
+               <xs:attribute name="uuid" type="xs:string" use="required" />\r
+       </xs:complexType>\r
+       <xs:complexType name="AttributesType">\r
+               <xs:sequence>\r
+                       <xs:element name="attribute" type="slc:AttributeType"\r
+                               maxOccurs="unbounded">\r
+                       </xs:element>\r
+               </xs:sequence>\r
+       </xs:complexType>\r
+       <xs:complexType name="AttributeType">\r
+               <xs:simpleContent>\r
+                       <xs:extension base="xs:string">\r
+                               <xs:attribute name="name" type="xs:string"\r
+                                       use="required" />\r
+                       </xs:extension>\r
+               </xs:simpleContent>\r
+       </xs:complexType>\r
+\r
+       <!-- SLC EXECUTION REQUESTS-->\r
+       <xs:element name="slc-execution-request">\r
+               <xs:complexType>\r
+                       <xs:all>\r
+                               <xs:element name="slc-execution"\r
+                                       type="slc:SlcExecutionType" />\r
+                       </xs:all>\r
+               </xs:complexType>\r
+       </xs:element>\r
+       <xs:element name="slc-execution-steps-request">\r
+               <xs:complexType>\r
+                       <xs:all>\r
+                               <xs:element name="slc-execution-uuid" type="xs:string" />\r
+                               <xs:element name="steps"\r
+                                       type="slc:SlcExecutionStepsType" />\r
+                       </xs:all>\r
+               </xs:complexType>\r
+       </xs:element>\r
+\r
 </xs:schema>
\ No newline at end of file
index 105ef79836df187a426d28cbbb1ef518d01c5bad..062fbb003e163d9d559b12f4d9749b264dbf073a 100644 (file)
@@ -16,8 +16,13 @@ import org.apache.commons.logging.LogFactory;
 import org.argeo.slc.msg.process.SlcExecutionRequest;\r
 import org.argeo.slc.msg.process.SlcExecutionStepsRequest;\r
 import org.argeo.slc.unit.AbstractSpringTestCase;\r
+import org.argeo.slc.unit.UnitXmlUtils;\r
+\r
 import org.springframework.oxm.Marshaller;\r
 import org.springframework.oxm.Unmarshaller;\r
+import org.springframework.xml.transform.StringResult;\r
+import org.springframework.xml.transform.StringSource;\r
+import org.springframework.xml.xsd.XsdSchema;\r
 \r
 public class SlcExecutionCastorTest extends AbstractSpringTestCase {\r
        private Log log = LogFactory.getLog(getClass());\r
@@ -25,6 +30,7 @@ public class SlcExecutionCastorTest extends AbstractSpringTestCase {
        private Marshaller marshaller;\r
        private Unmarshaller unmarshaller;\r
 \r
+       @Override\r
        public void setUp() {\r
                marshaller = getBean("marshaller");\r
                unmarshaller = getBean("marshaller");\r
@@ -79,7 +85,7 @@ public class SlcExecutionCastorTest extends AbstractSpringTestCase {
                SlcExecutionRequest msgUpdate = new SlcExecutionRequest();\r
                msgUpdate.setSlcExecution(slcExecUnm);\r
                String msgUpdateXml = marshallAndLog(marshaller, msgUpdate);\r
-               \r
+\r
                SlcExecutionRequest msgUpdateUnm = unmarshall(unmarshaller,\r
                                msgUpdateXml);\r
                assertNotNull(msgUpdateUnm);\r
@@ -87,12 +93,15 @@ public class SlcExecutionCastorTest extends AbstractSpringTestCase {
 \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
+               StringResult xml = new StringResult();\r
+               marshaller.marshal(obj, xml);\r
+               log.info("Marshalled object: " + xml);\r
+\r
+               XsdSchema schema = getBean("schema");\r
+               UnitXmlUtils.assertXsdSchemaValidation(schema, new StringSource(xml\r
+                               .toString()));\r
+\r
+               return xml.toString();\r
        }\r
 \r
        private <T> T unmarshall(Unmarshaller unmarshaller, String xml)\r
index ac32189bc77ef3b770b85dafc585fc0045ac6031..d75fdfa60ed9a8586851be454e6889f7334ab2f4 100644 (file)
@@ -4,24 +4,34 @@ import java.util.UUID;
 \r
 import junit.framework.TestCase;\r
 \r
-public abstract class SlcExecutionTestUtils extends TestCase{\r
+public abstract class SlcExecutionTestUtils extends TestCase {\r
 \r
        public static SlcExecution createSimpleSlcExecution() {\r
                SlcExecution slcExec = new SlcExecution();\r
                slcExec.setUuid(UUID.randomUUID().toString());\r
                slcExec.setHost("localhost");\r
-               slcExec.setPath("/test");\r
+               slcExec.setUser("user");\r
                slcExec.setType("slcAnt");\r
                slcExec.setStatus("STARTED");\r
+               slcExec.getAttributes().put("ant.file", "/test");\r
                return slcExec;\r
        }\r
 \r
-       public static void assertSlcExecution(SlcExecution expected, SlcExecution reached) {\r
+       public static void assertSlcExecution(SlcExecution expected,\r
+                       SlcExecution reached) {\r
                assertNotNull(reached);\r
                assertEquals(expected.getHost(), reached.getHost());\r
-               assertEquals(expected.getPath(), reached.getPath());\r
+               assertEquals(expected.getUser(), reached.getUser());\r
                assertEquals(expected.getType(), reached.getType());\r
                assertEquals(expected.getStatus(), reached.getStatus());\r
+               assertEquals(expected.getAttributes().size(), reached.getAttributes()\r
+                               .size());\r
+               for (String key : expected.getAttributes().keySet()) {\r
+                       String expectedValue = expected.getAttributes().get(key);\r
+                       String reachedValue = reached.getAttributes().get(key);\r
+                       assertNotNull(reachedValue);\r
+                       assertEquals(expectedValue, reachedValue);\r
+               }\r
        }\r
 \r
        public static void assertSlcExecutionStep(SlcExecutionStep expected,\r
@@ -30,10 +40,10 @@ public abstract class SlcExecutionTestUtils extends TestCase{
                assertEquals(expected.getUuid(), reached.getUuid());\r
                assertEquals(expected.getType(), reached.getType());\r
                assertEquals(expected.logAsString(), reached.logAsString());\r
-               //assertEquals(expected.getBegin(), reached.getBegin());\r
+               // assertEquals(expected.getBegin(), reached.getBegin());\r
        }\r
 \r
-       private SlcExecutionTestUtils(){\r
-               \r
+       private SlcExecutionTestUtils() {\r
+\r
        }\r
 }\r
index 974ebce6cc8261a0ac387aca6de02bc96f25bb6e..8479c95ca5a91622675aab7e9d2989304e28a669 100644 (file)
@@ -4,6 +4,7 @@ import org.springframework.oxm.Marshaller;
 import org.springframework.oxm.Unmarshaller;\r
 import org.springframework.xml.transform.StringResult;\r
 import org.springframework.xml.transform.StringSource;\r
+import org.springframework.xml.xsd.XsdSchema;\r
 \r
 import org.apache.commons.logging.Log;\r
 import org.apache.commons.logging.LogFactory;\r
@@ -11,6 +12,7 @@ import org.apache.commons.logging.LogFactory;
 import static org.argeo.slc.core.test.tree.TreeTestResultTestUtils.createCompleteTreeTestResult;\r
 \r
 import org.argeo.slc.unit.AbstractSpringTestCase;\r
+import org.argeo.slc.unit.UnitXmlUtils;\r
 import org.argeo.slc.unit.test.tree.UnitTestTreeUtil;\r
 \r
 public class TreeTestResultCastorTest extends AbstractSpringTestCase {\r
@@ -27,6 +29,10 @@ public class TreeTestResultCastorTest extends AbstractSpringTestCase {
 \r
                log.info("Marshalled TreeTestResult: " + xml);\r
 \r
+               XsdSchema schema = getBean("schema");\r
+               UnitXmlUtils.assertXsdSchemaValidation(schema, new StringSource(xml\r
+                               .toString()));\r
+\r
                TreeTestResult ttrUnm = (TreeTestResult) unmarshaller\r
                                .unmarshal(new StringSource(xml.toString()));\r
 \r
index 4f2e333bd4820315bd99adc22f4462654a24a2b9..9f479e35a0da63e23c1a124b0420b7e895785672 100644 (file)
@@ -7,6 +7,7 @@ log4j.logger.org.argeo.slc=DEBUG
 log4j.logger.org.argeo.slc.core.process=DEBUG\r
 \r
 # Castor\r
+log4j.logger.org.exolab.castor=WARN\r
 \r
 # Spring\r
 log4j.logger.org.springframework=INFO\r
index f3e50f2210159a46eb23f821ad9223ed8464d234..81b734c2ef4845e03b6e506453c961592675e3d1 100644 (file)
@@ -32,8 +32,8 @@
        <bean id="webServiceTemplate"\r
                class="org.springframework.ws.client.core.WebServiceTemplate">\r
                <constructor-arg ref="messageFactory" />\r
-               <property name="marshaller" ref="marshaller"/>\r
-               <property name="unmarshaller" ref="marshaller"/>\r
+               <property name="marshaller" ref="marshaller" />\r
+               <property name="unmarshaller" ref="marshaller" />\r
                <property name="defaultUri"\r
                        value="http://localhost:8080/org.argeo.slc.webapp/slcService/" />\r
        </bean>\r
        <bean id="messageFactory"\r
                class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory" />\r
 \r
+       <bean id="schema"\r
+               class="org.springframework.xml.xsd.SimpleXsdSchema">\r
+               <property name="xsd"\r
+                       value="classpath:/org/argeo/slc/xml/slc.xsd" />\r
+       </bean>\r
+\r
 </beans>
\ No newline at end of file
index 59aad7800462874f74174adbfdf2526622fd054e..cbbd540e191e907cf396a69bc3671b8a202d21bc 100644 (file)
@@ -8,4 +8,10 @@
                <property name="mappingLocation"\r
                        value="classpath:org/argeo/slc/castor/test/tree/mapping.xml" />\r
        </bean>\r
+\r
+       <bean id="schema"\r
+               class="org.springframework.xml.xsd.SimpleXsdSchema">\r
+               <property name="xsd"\r
+                       value="classpath:/org/argeo/slc/xml/slc.xsd" />\r
+       </bean>\r
 </beans>
\ No newline at end of file