Improve Spring templates and defaults
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 30 Apr 2008 10:58:26 +0000 (10:58 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 30 Apr 2008 10:58:26 +0000 (10:58 +0000)
Add WS client validation
Improve Spring tests with powerful getBean based on class

git-svn-id: https://svn.argeo.org/slc/trunk@1086 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

20 files changed:
org.argeo.slc.core/src/main/java/org/argeo/slc/unit/AbstractSpringTestCase.java
org.argeo.slc.core/src/main/java/org/argeo/slc/unit/UnitXmlUtils.java
org.argeo.slc.core/src/main/java/org/argeo/slc/ws/client/ValidatingClientInterceptor.java [new file with mode: 0644]
org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/spring/applicationContext.xml [new file with mode: 0644]
org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/spring/applicationContext.xml [new file with mode: 0644]
org.argeo.slc.core/src/main/resources/org/argeo/slc/spring/templates.xml [deleted file]
org.argeo.slc.core/src/main/resources/org/argeo/slc/ws/client/spring/applicationContext.xml [new file with mode: 0644]
org.argeo.slc.core/src/main/resources/org/argeo/slc/xml/spring/applicationContext.xml [new file with mode: 0644]
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/SlcExecutionWsIntegrationTest.java
org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultCastorTest.java
org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultWsIntegrationTest.java
org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/process/SlcExecutionHibernateTest.java
org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSPathDaoHibernateTest.java
org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/structure/tree/TreeSRegistryDaoHibernateTest.java
org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/test/tree/CastorTestResultDaoHibernateTest.java [new file with mode: 0644]
org.argeo.slc.core/src/test/resources/org/argeo/slc/castor/applicationContext.xml
org.argeo.slc.core/src/test/resources/org/argeo/slc/core/process/execution.xml
org.argeo.slc.core/src/test/resources/org/argeo/slc/hibernate/applicationContext.xml
org.argeo.slc.core/src/test/resources/org/argeo/slc/hibernate/withCastor.xml [new file with mode: 0644]

index 06c6cf6b529b49dd642d11cb7baf391b7bda3878..5166242b4626c9c4873997565af672068eea715f 100644 (file)
@@ -1,10 +1,15 @@
 package org.argeo.slc.unit;\r
 \r
+import java.util.Map;\r
+\r
 import junit.framework.TestCase;\r
 \r
 import org.springframework.context.ApplicationContext;\r
 import org.springframework.context.support.ClassPathXmlApplicationContext;\r
 \r
+import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.core.process.SlcExecution;\r
+\r
 /** Helper for tests using a Spring application co,text. */\r
 public abstract class AbstractSpringTestCase extends TestCase {\r
        private ApplicationContext context;\r
@@ -21,10 +26,20 @@ public abstract class AbstractSpringTestCase extends TestCase {
                }\r
                return context;\r
        }\r
-       \r
+\r
        /** Returns a bean from the underlying context */\r
-       protected <T> T getBean(String beanId){\r
-               return (T)getContext().getBean(beanId);\r
+       protected <T> T getBean(String beanId) {\r
+               return (T) getContext().getBean(beanId);\r
+       }\r
+\r
+       protected <T> T getBean(Class<? extends T> clss) {\r
+               Map<String, T> map = getContext().getBeansOfType(clss);\r
+               if (map.size() == 1) {\r
+                       return map.values().iterator().next();\r
+               } else {\r
+                       throw new SlcException("Cannot retrieve a unique bean of type "\r
+                                       + clss);\r
+               }\r
        }\r
 \r
        /**\r
index 710b7e8172956fdff69838b356bbf605cfac6c40..af6f92320cee18efe4ebbf8159fa9138bfe0c994 100644 (file)
@@ -19,12 +19,17 @@ public abstract class UnitXmlUtils {
        public static void assertXsdSchemaValidation(XsdSchema schema, Source source)\r
                        throws IOException {\r
                XmlValidator validator = schema.createValidator();\r
+               assertXmlValidation(validator, source);\r
+       }\r
+\r
+       public static void assertXmlValidation(XmlValidator validator, Source source)\r
+                       throws IOException {\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
+                       TestCase.fail("Could not validate");\r
                }\r
        }\r
 \r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ws/client/ValidatingClientInterceptor.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ws/client/ValidatingClientInterceptor.java
new file mode 100644 (file)
index 0000000..ff439d8
--- /dev/null
@@ -0,0 +1,90 @@
+package org.argeo.slc.ws.client;\r
+\r
+import java.io.IOException;\r
+\r
+import javax.xml.transform.Source;\r
+\r
+import junit.framework.TestCase;\r
+\r
+import org.springframework.ws.client.WebServiceClientException;\r
+import org.springframework.ws.client.WebServiceIOException;\r
+import org.springframework.ws.client.support.interceptor.ClientInterceptor;\r
+import org.springframework.ws.context.MessageContext;\r
+import org.springframework.xml.validation.XmlValidator;\r
+import org.xml.sax.SAXParseException;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+public class ValidatingClientInterceptor implements ClientInterceptor {\r
+       private final static Log log = LogFactory\r
+                       .getLog(ValidatingClientInterceptor.class);\r
+\r
+       private Boolean validateRequest = true;\r
+       private Boolean validateResponse = false;\r
+       private XmlValidator validator = null;\r
+\r
+       public boolean handleFault(MessageContext messageContext)\r
+                       throws WebServiceClientException {\r
+               return true;\r
+       }\r
+\r
+       public boolean handleRequest(MessageContext messageContext)\r
+                       throws WebServiceClientException {\r
+               if (validateRequest) {\r
+                       if (messageContext.getRequest() == null)\r
+                               return true;\r
+\r
+                       Source source = messageContext.getRequest().getPayloadSource();\r
+                       try {\r
+                               return validate(source);\r
+                       } catch (IOException e) {\r
+                               throw new WebServiceIOException("Cannot validate request", e);\r
+                       }\r
+               } else {\r
+                       return true;\r
+               }\r
+       }\r
+\r
+       public boolean handleResponse(MessageContext messageContext)\r
+                       throws WebServiceClientException {\r
+               if (validateResponse) {\r
+                       if (messageContext.getResponse() == null)\r
+                               return true;\r
+                       \r
+                       Source source = messageContext.getResponse().getPayloadSource();\r
+                       try {\r
+                               return validate(source);\r
+                       } catch (IOException e) {\r
+                               throw new WebServiceIOException("Cannot validate response", e);\r
+                       }\r
+               } else {\r
+                       return true;\r
+               }\r
+       }\r
+\r
+       protected boolean validate(Source source) throws IOException {\r
+               SAXParseException[] exceptions = validator.validate(source);\r
+               if (exceptions.length != 0) {\r
+                       for (SAXParseException ex : exceptions) {\r
+                               log.error(ex.getMessage());\r
+                       }\r
+                       return false;\r
+               } else {\r
+                       return true;\r
+               }\r
+       }\r
+\r
+       public void setValidateRequest(Boolean validateRequest) {\r
+               this.validateRequest = validateRequest;\r
+       }\r
+\r
+       public void setValidateResponse(Boolean validateResponse) {\r
+               this.validateResponse = validateResponse;\r
+       }\r
+\r
+       public void setValidator(XmlValidator validator) {\r
+               this.validator = validator;\r
+       }\r
+\r
+}\r
diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/spring/applicationContext.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/spring/applicationContext.xml
new file mode 100644 (file)
index 0000000..d7c089f
--- /dev/null
@@ -0,0 +1,20 @@
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"\r
+       default-lazy-init="true">\r
+\r
+       <bean id="slcDefault.castor.marshaller"\r
+               class="org.springframework.oxm.castor.CastorMarshaller">\r
+               <property name="mappingLocations">\r
+                       <list>\r
+                               <value>\r
+                                       classpath:org/argeo/slc/castor/process/mapping.xml\r
+                               </value>\r
+                               <value>\r
+                                       classpath:org/argeo/slc/castor/test/tree/mapping.xml\r
+                               </value>\r
+                       </list>\r
+               </property>\r
+       </bean>\r
+\r
+</beans>\r
diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/spring/applicationContext.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/spring/applicationContext.xml
new file mode 100644 (file)
index 0000000..a840e0a
--- /dev/null
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"\r
+       default-lazy-init="true">\r
+\r
+       <bean id="slcDefault.dataSource.inMemoryTestHSQL"\r
+               class="org.springframework.jdbc.datasource.SingleConnectionDataSource"\r
+               destroy-method="destroy">\r
+               <property name="driverClassName" value="org.hsqldb.jdbcDriver" />\r
+               <property name="url" value="jdbc:hsqldb:mem:test" />\r
+               <property name="username" value="sa" />\r
+               <property name="password" value="" />\r
+               <property name="suppressClose" value="true" />\r
+       </bean>\r
+\r
+       <bean id="slcTemplates.sessionFactory.hibernateBasic"\r
+               abstract="true"\r
+               class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">\r
+               <property name="mappingResources">\r
+                       <list>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml\r
+                               </value>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/structure/tree/TreeSPath.hbm.xml\r
+                               </value>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/structure/tree/TreeSRegistry.hbm.xml\r
+                               </value>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/test/NumericTRId.hbm.xml\r
+                               </value>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml\r
+                               </value>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml\r
+                               </value>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml\r
+                               </value>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/process/SlcExecution.hbm.xml\r
+                               </value>\r
+                               <value>\r
+                                       org/argeo/slc/hibernate/process/SlcExecutionStep.hbm.xml\r
+                               </value>\r
+                       </list>\r
+               </property>\r
+       </bean>\r
+\r
+       <bean id="slcDefault.sessionFactory.hibernateTestHSQL"\r
+               parent="slcTemplates.sessionFactory.hibernateBasic">\r
+               <property name="dataSource"\r
+                       ref="slcDefault.dataSource.inMemoryTestHSQL" />\r
+               <property name="hibernateProperties">\r
+                       <value><![CDATA[\r
+                               hibernate.dialect=org.hibernate.dialect.HSQLDialect\r
+                               hibernate.hbm2ddl.auto=create\r
+                       ]]></value>\r
+               </property>\r
+       </bean>\r
+\r
+       <bean id="slcTemplates.dao.treeSPathDao"\r
+               class="org.argeo.slc.hibernate.structure.tree.TreeSPathDaoHibernate"\r
+               abstract="true">\r
+       </bean>\r
+\r
+       <bean id="slcTemplates.dao.treeSRegistryDao"\r
+               class="org.argeo.slc.hibernate.structure.tree.TreeSRegistryDaoHibernate"\r
+               abstract="true">\r
+       </bean>\r
+\r
+       <bean id="slcTemplates.dao.testResultDao"\r
+               class="org.argeo.slc.hibernate.test.tree.TestResultDaoHibernate"\r
+               abstract="true">\r
+       </bean>\r
+\r
+       <bean id="slcTemplates.dao.slcExecutionDao"\r
+               class="org.argeo.slc.hibernate.process.SlcExecutionDaoHibernate"\r
+               abstract="true">\r
+       </bean>\r
+</beans>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/spring/templates.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/spring/templates.xml
deleted file mode 100644 (file)
index dc4cdd5..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans xmlns="http://www.springframework.org/schema/beans"\r
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"\r
-       default-lazy-init="true">\r
-\r
-       <bean id="slcTemplates.dataSource.inMemoryTestHSQL"\r
-               class="org.springframework.jdbc.datasource.SingleConnectionDataSource"\r
-               destroy-method="destroy">\r
-               <property name="driverClassName" value="org.hsqldb.jdbcDriver" />\r
-               <property name="url" value="jdbc:hsqldb:mem:test" />\r
-               <property name="username" value="sa" />\r
-               <property name="password" value="" />\r
-               <property name="suppressClose" value="true" />\r
-       </bean>\r
-\r
-       <bean id="slcTemplates.sessionFactory.hibernateBasic"\r
-               abstract="true"\r
-               class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">\r
-               <property name="mappingResources">\r
-                       <list>\r
-                               <value>\r
-                                       org/argeo/slc/hibernate/structure/SimpleSElement.hbm.xml\r
-                               </value>\r
-                               <value>\r
-                                       org/argeo/slc/hibernate/structure/tree/TreeSPath.hbm.xml\r
-                               </value>\r
-                               <value>\r
-                                       org/argeo/slc/hibernate/structure/tree/TreeSRegistry.hbm.xml\r
-                               </value>\r
-                               <value>\r
-                                       org/argeo/slc/hibernate/test/NumericTRId.hbm.xml\r
-                               </value>\r
-                               <value>\r
-                                       org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml\r
-                               </value>\r
-                               <value>\r
-                                       org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml\r
-                               </value>\r
-                               <value>\r
-                                       org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml\r
-                               </value>\r
-                               <value>\r
-                                       org/argeo/slc/hibernate/process/SlcExecution.hbm.xml\r
-                               </value>\r
-                               <value>\r
-                                       org/argeo/slc/hibernate/process/SlcExecutionStep.hbm.xml\r
-                               </value>\r
-                       </list>\r
-               </property>\r
-       </bean>\r
-\r
-       <bean id="slcTemplates.sessionFactory.hibernateTestHSQL"\r
-               parent="slcTemplates.sessionFactory.hibernateBasic">\r
-               <property name="dataSource"\r
-                       ref="slcTemplates.dataSource.inMemoryTestHSQL" />\r
-               <property name="hibernateProperties">\r
-                       <value><![CDATA[\r
-                               hibernate.dialect=org.hibernate.dialect.HSQLDialect\r
-                               hibernate.hbm2ddl.auto=create\r
-                       ]]></value>\r
-               </property>\r
-       </bean>\r
-\r
-       <bean id="slcTemplates.dao.treeSPathDao"\r
-               class="org.argeo.slc.hibernate.structure.tree.TreeSPathDaoHibernate">\r
-       </bean>\r
-\r
-       <bean id="slcTemplates.dao.treeSRegistryDao"\r
-               class="org.argeo.slc.hibernate.structure.tree.TreeSRegistryDaoHibernate">\r
-       </bean>\r
-\r
-       <bean id="slcTemplates.dao.testResultDao"\r
-               class="org.argeo.slc.hibernate.test.tree.TestResultDaoHibernate">\r
-       </bean>\r
-\r
-       <bean id="slcTemplates.dao.slcExecutionDao"\r
-               class="org.argeo.slc.hibernate.process.SlcExecutionDaoHibernate">\r
-       </bean>\r
-</beans>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/ws/client/spring/applicationContext.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/ws/client/spring/applicationContext.xml
new file mode 100644 (file)
index 0000000..e128c32
--- /dev/null
@@ -0,0 +1,33 @@
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"\r
+       default-lazy-init="true">\r
+\r
+       <import\r
+               resource="classpath:/org/argeo/slc/castor/spring/applicationContext.xml" />\r
+       <import\r
+               resource="classpath:/org/argeo/slc/xml/spring/applicationContext.xml" />\r
+\r
+       <bean id="slcDefault.ws.client.webServiceTemplate"\r
+               class="org.springframework.ws.client.core.WebServiceTemplate">\r
+               <constructor-arg ref="slcDefault.ws.client.messageFactory" />\r
+               <property name="marshaller" ref="slcDefault.castor.marshaller" />\r
+               <property name="unmarshaller"\r
+                       ref="slcDefault.castor.marshaller" />\r
+               <property name="defaultUri"\r
+                       value="http://localhost:8080/org.argeo.slc.webapp/slcService/" />\r
+               <property name="interceptors">\r
+                       <list>\r
+                               <bean\r
+                                       class="org.argeo.slc.ws.client.ValidatingClientInterceptor">\r
+                                       <property name="validator"\r
+                                               ref="slcDefault.xml.xsdValidator" />\r
+                               </bean>\r
+                       </list>\r
+               </property>\r
+       </bean>\r
+\r
+       <bean id="slcDefault.ws.client.messageFactory"\r
+               class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory" />\r
+\r
+</beans>\r
diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/xml/spring/applicationContext.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/xml/spring/applicationContext.xml
new file mode 100644 (file)
index 0000000..13bd1dd
--- /dev/null
@@ -0,0 +1,14 @@
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"\r
+       default-lazy-init="true">\r
+\r
+       <bean id="slcDefault.xml.xsdValidator"\r
+               factory-bean="slcDefault.xml.xsdSchema" factory-method="createValidator" />\r
+\r
+       <bean id="slcDefault.xml.xsdSchema"\r
+               class="org.springframework.xml.xsd.SimpleXsdSchema">\r
+               <property name="xsd"\r
+                       value="classpath:/org/argeo/slc/xml/slc.xsd" />\r
+       </bean>\r
+</beans>\r
index 062fbb003e163d9d559b12f4d9749b264dbf073a..55fba622f85d28183e4f5c56e72e31451e629578 100644 (file)
@@ -22,6 +22,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.validation.XmlValidator;\r
 import org.springframework.xml.xsd.XsdSchema;\r
 \r
 public class SlcExecutionCastorTest extends AbstractSpringTestCase {\r
@@ -32,8 +33,8 @@ public class SlcExecutionCastorTest extends AbstractSpringTestCase {
 \r
        @Override\r
        public void setUp() {\r
-               marshaller = getBean("marshaller");\r
-               unmarshaller = getBean("marshaller");\r
+               marshaller = getBean(Marshaller.class);\r
+               unmarshaller = getBean(Unmarshaller.class);\r
        }\r
 \r
        public void testMarshalling() throws Exception {\r
@@ -97,9 +98,8 @@ public class SlcExecutionCastorTest extends AbstractSpringTestCase {
                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
+               UnitXmlUtils.assertXmlValidation(getBean(XmlValidator.class),\r
+                               new StringSource(xml.toString()));\r
 \r
                return xml.toString();\r
        }\r
index d117cc047f9a9631bf0d08fad7b672830b8dc65c..95bc048ee26eeae140f0027fb2ca331232c27041 100644 (file)
@@ -10,9 +10,8 @@ public class SlcExecutionWsIntegrationTest extends AbstractSpringTestCase {
        private Log log = LogFactory.getLog(getClass());
 
        public void testSendSlcExecutionrequest() {
-               WebServiceTemplate template = getBean("webServiceTemplate");
-               SlcExecution slcExec = SlcExecutionTestUtils
-                               .createSimpleSlcExecution();
+               WebServiceTemplate template = getBean(WebServiceTemplate.class);
+               SlcExecution slcExec = SlcExecutionTestUtils.createSimpleSlcExecution();
 
                SlcExecutionRequest req = new SlcExecutionRequest();
                req.setSlcExecution(slcExec);
index fbce288c1d6418f8f18449482d6cb2ea73f18bd0..ee09d0391d134114ee63e29782cf00d9f2f9c33e 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.validation.XmlValidator;\r
 import org.springframework.xml.xsd.XsdSchema;\r
 \r
 import org.apache.commons.logging.Log;\r
@@ -18,18 +19,16 @@ import org.argeo.slc.unit.test.tree.UnitTestTreeUtil;
 \r
 public class TreeTestResultCastorTest extends AbstractSpringTestCase {\r
        private Log log = LogFactory.getLog(getClass());\r
-       \r
+\r
        private Marshaller marshaller;\r
        private Unmarshaller unmarshaller;\r
 \r
        @Override\r
        public void setUp() {\r
-               marshaller = getBean("marshaller");\r
-               unmarshaller = getBean("marshaller");\r
+               marshaller = getBean(Marshaller.class);\r
+               unmarshaller = getBean(Unmarshaller.class);\r
        }\r
 \r
-\r
-\r
        public void testMarshUnmarsh() throws Exception {\r
                TreeTestResult ttr = createCompleteTreeTestResult();\r
 \r
@@ -38,32 +37,31 @@ 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
+               UnitXmlUtils.assertXmlValidation(getBean(XmlValidator.class),\r
+                               new StringSource(xml.toString()));\r
 \r
                TreeTestResult ttrUnm = (TreeTestResult) unmarshaller\r
                                .unmarshal(new StringSource(xml.toString()));\r
 \r
                UnitTestTreeUtil.assertTreeTestResult(ttr, ttrUnm);\r
        }\r
-       \r
-       public void testTreeTestResultRequest() throws Exception{\r
+\r
+       public void testTreeTestResultRequest() throws Exception {\r
                TreeTestResultRequest req = new TreeTestResultRequest();\r
                req.setTreeTestResult(createCompleteTreeTestResult());\r
-               \r
+\r
                StringResult xml = new StringResult();\r
                marshaller.marshal(req, xml);\r
 \r
                log.info("Marshalled TreeTestResult Request: " + xml);\r
 \r
-               XsdSchema schema = getBean("schema");\r
-               UnitXmlUtils.assertXsdSchemaValidation(schema, new StringSource(xml\r
-                               .toString()));\r
+               UnitXmlUtils.assertXmlValidation(getBean(XmlValidator.class),\r
+                               new StringSource(xml.toString()));\r
 \r
                TreeTestResultRequest reqUnm = (TreeTestResultRequest) unmarshaller\r
                                .unmarshal(new StringSource(xml.toString()));\r
 \r
-               UnitTestTreeUtil.assertTreeTestResult(req.getTreeTestResult(), reqUnm.getTreeTestResult());\r
+               UnitTestTreeUtil.assertTreeTestResult(req.getTreeTestResult(), reqUnm\r
+                               .getTreeTestResult());\r
        }\r
 }\r
index 3f1df773d16c512d8c4e6f4210d793114fa27d40..cf485952554ec66f4a215928b8b8692173a63061 100644 (file)
@@ -14,7 +14,7 @@ public class TreeTestResultWsIntegrationTest extends AbstractSpringTestCase {
        private Log log = LogFactory.getLog(getClass());
 
        public void testSendSlcExecutionrequest() {
-               WebServiceTemplate template = getBean("webServiceTemplate");
+               WebServiceTemplate template = getBean(WebServiceTemplate.class);
                TreeTestResultRequest req = new TreeTestResultRequest();
                req.setTreeTestResult(createCompleteTreeTestResult());
 
index dd31872270372d7c61eb4285571a202af6f22301..f821dbd9b5329acf6b629425e9272eacf514ad5f 100644 (file)
@@ -11,7 +11,7 @@ import org.argeo.slc.unit.AbstractSpringTestCase;
 public class SlcExecutionHibernateTest extends AbstractSpringTestCase {\r
 \r
        public void testSave() {\r
-               SlcExecutionDao dao = getBean("slcExecutionDao");\r
+               SlcExecutionDao dao = getBean(SlcExecutionDao.class);\r
 \r
                SlcExecution slcExec = SlcExecutionTestUtils.createSimpleSlcExecution();\r
                slcExec.getSteps().add(new SlcExecutionStep("LOG", "A log line"));\r
@@ -29,38 +29,41 @@ public class SlcExecutionHibernateTest extends AbstractSpringTestCase {
        }\r
 \r
        public void testModify() {\r
-               SlcExecutionDao dao = getBean("slcExecutionDao");\r
+               SlcExecutionDao dao = getBean(SlcExecutionDao.class);\r
 \r
-               // slcExecution Creation \r
+               // slcExecution Creation\r
                SlcExecution slcExec = SlcExecutionTestUtils.createSimpleSlcExecution();\r
                slcExec.getSteps().add(new SlcExecutionStep("LOG", "A log line"));\r
                slcExec.getSteps().add(new SlcExecutionStep("LOG", "Two log\nlines"));\r
 \r
                dao.create(slcExec);\r
-               \r
-               // slcExecution retrieval and update \r
+\r
+               // slcExecution retrieval and update\r
                SlcExecution slcExecRetrieved = dao.getSlcExecution(slcExec.getUuid());\r
-               \r
-               List<String> logLineListStep0 = slcExecRetrieved.getSteps().get(0).getLogLines();\r
-               for (String logLine : logLineListStep0) \r
+\r
+               List<String> logLineListStep0 = slcExecRetrieved.getSteps().get(0)\r
+                               .getLogLines();\r
+               for (String logLine : logLineListStep0)\r
                        logLine = logLine + "appended Log text";\r
-               \r
+\r
                slcExecRetrieved.getSteps().get(0).setLogLines(logLineListStep0);\r
-               slcExecRetrieved.getSteps().add(new SlcExecutionStep("LOG", "Three \n log \n lines"));\r
-               \r
+               slcExecRetrieved.getSteps().add(\r
+                               new SlcExecutionStep("LOG", "Three \n log \n lines"));\r
+\r
                dao.update(slcExecRetrieved);\r
-       \r
-               // updated slcExecution retrieval and comparison \r
-               SlcExecution slcExecUpdated = dao.getSlcExecution(slcExec.getUuid()); \r
-       \r
-               SlcExecutionTestUtils.assertSlcExecution(slcExecRetrieved, slcExecUpdated);\r
+\r
+               // updated slcExecution retrieval and comparison\r
+               SlcExecution slcExecUpdated = dao.getSlcExecution(slcExec.getUuid());\r
+\r
+               SlcExecutionTestUtils.assertSlcExecution(slcExecRetrieved,\r
+                               slcExecUpdated);\r
                assertEquals(3, slcExecUpdated.getSteps().size());\r
-               SlcExecutionTestUtils.assertSlcExecutionStep(slcExecUpdated.getSteps().get(0),\r
-                               slcExecRetrieved.getSteps().get(0));\r
-               SlcExecutionTestUtils.assertSlcExecutionStep(slcExecUpdated.getSteps().get(1),\r
-                               slcExecRetrieved.getSteps().get(1));\r
-               SlcExecutionTestUtils.assertSlcExecutionStep(slcExecUpdated.getSteps().get(2),\r
-                               slcExecRetrieved.getSteps().get(2));\r
+               SlcExecutionTestUtils.assertSlcExecutionStep(slcExecUpdated.getSteps()\r
+                               .get(0), slcExecRetrieved.getSteps().get(0));\r
+               SlcExecutionTestUtils.assertSlcExecutionStep(slcExecUpdated.getSteps()\r
+                               .get(1), slcExecRetrieved.getSteps().get(1));\r
+               SlcExecutionTestUtils.assertSlcExecutionStep(slcExecUpdated.getSteps()\r
+                               .get(2), slcExecRetrieved.getSteps().get(2));\r
        }\r
 \r
        @Override\r
index 28ab1c7bc3bf075846faf6622851345cf9088a80..3cb906b247680446dde996a6847e08474e92fb81 100644 (file)
@@ -7,8 +7,7 @@ import org.argeo.slc.unit.AbstractSpringTestCase;
 public class TreeSPathDaoHibernateTest extends AbstractSpringTestCase {\r
 \r
        public void testCreate() {\r
-               TreeSPathDao treeSPathDao = (TreeSPathDao) getContext().getBean(\r
-                               "treeSPathDao");\r
+               TreeSPathDao treeSPathDao = getBean(TreeSPathDao.class);\r
 \r
                String pathParentStr = "/root/testParent";\r
                String pathStr = pathParentStr + "/test";\r
index 1fe66c75ad4dfad2458f004a0f9034e58d8bab22..c9d0a99cdc6c3275a6275717336994ff433e7df6 100644 (file)
@@ -10,8 +10,7 @@ import org.argeo.slc.unit.AbstractSpringTestCase;
 public class TreeSRegistryDaoHibernateTest extends AbstractSpringTestCase {\r
 \r
        public void testCreate() {\r
-               TreeSRegistryDao treeSRegistryDao = (TreeSRegistryDao) getContext()\r
-                               .getBean("treeSRegistryDao");\r
+               TreeSRegistryDao treeSRegistryDao = getBean(TreeSRegistryDao.class);\r
 \r
                TreeSPathDao treeSPathDao = (TreeSPathDao) getContext().getBean(\r
                                "treeSPathDao");\r
diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/test/tree/CastorTestResultDaoHibernateTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/test/tree/CastorTestResultDaoHibernateTest.java
new file mode 100644 (file)
index 0000000..dda823d
--- /dev/null
@@ -0,0 +1,39 @@
+package org.argeo.slc.hibernate.test.tree;\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
+\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+import org.argeo.slc.core.test.tree.TreeTestResultTestUtils;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
+import org.argeo.slc.unit.AbstractSpringTestCase;\r
+import org.argeo.slc.unit.test.tree.UnitTestTreeUtil;\r
+\r
+public class CastorTestResultDaoHibernateTest extends AbstractSpringTestCase {\r
+\r
+       public void testUnmarshallAndCreate() throws Exception {\r
+               TreeTestResult ttr = TreeTestResultTestUtils\r
+                               .createCompleteTreeTestResult();\r
+\r
+               StringResult result = new StringResult();\r
+               getBean(Marshaller.class).marshal(ttr, result);\r
+\r
+               StringSource source = new StringSource(result.toString());\r
+               TreeTestResult ttrUnm = (TreeTestResult) getBean(Unmarshaller.class)\r
+                               .unmarshal(source);\r
+\r
+               TreeTestResultDao ttrDao = getBean(TreeTestResultDao.class);\r
+               ttrDao.create(ttrUnm);\r
+               TreeTestResult ttrPersist = ttrDao.getTestResult(ttr.getUuid());\r
+\r
+               UnitTestTreeUtil.assertTreeTestResult(ttr, ttrPersist);\r
+       }\r
+\r
+       @Override\r
+       protected String getApplicationContextLocation() {\r
+               return "org/argeo/slc/hibernate/withCastor.xml";\r
+       }\r
+\r
+}\r
index e6334a978df37f553afaca79f20174c7fc77e385..eb0b2c3d62807238d3c226db2e4f19d911f28ee1 100644 (file)
@@ -2,35 +2,9 @@
        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.5.xsd">\r
 \r
-       <bean id="marshaller"\r
-               class="org.springframework.oxm.castor.CastorMarshaller">\r
-               <property name="mappingLocations">\r
-                       <list>\r
-                               <value>\r
-                                       classpath:org/argeo/slc/castor/process/mapping.xml\r
-                               </value>\r
-                               <value>\r
-                                       classpath:org/argeo/slc/castor/test/tree/mapping.xml\r
-                               </value>\r
-                       </list>\r
-               </property>\r
-       </bean>\r
+       <import\r
+               resource="classpath:/org/argeo/slc/castor/spring/applicationContext.xml" />\r
+       <import\r
+               resource="classpath:/org/argeo/slc/ws/client/spring/applicationContext.xml" />\r
 \r
-       <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="defaultUri"\r
-                       value="http://localhost:8080/org.argeo.slc.webapp/slcService/" />\r
-       </bean>\r
-\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
 </beans>\r
index 605339877294de47080e439f5cec56632b2a3a77..bdb071b0c6e69882e51e71395a98f18c3e3f39c6 100644 (file)
@@ -3,7 +3,8 @@
        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.5.xsd">\r
 \r
-       <import resource="classpath:/org/argeo/slc/castor/applicationContext.xml" />\r
+       <import\r
+               resource="classpath:/org/argeo/slc/ws/client/spring/applicationContext.xml" />\r
 \r
        <bean name="executionBuildListener"\r
                class="org.argeo.slc.ant.SlcExecutionBuildListener">\r
        <bean name="fileNotifier"\r
                class="org.argeo.slc.core.process.FileSlcExecutionNotifier">\r
                <property name="basePath" value="${slc.workDir}/process" />\r
-               <property name="marshaller" ref="marshaller" />\r
+               <property name="marshaller" ref="slcDefault.castor.marshaller" />\r
        </bean>\r
 \r
        <bean name="webServiceNotifier"\r
                class="org.argeo.slc.core.process.WebServiceSlcExecutionNotifier">\r
-               <property name="template" ref="webServiceTemplate" />\r
+               <property name="template"\r
+                       ref="slcDefault.ws.client.webServiceTemplate" />\r
        </bean>\r
 \r
 </beans>
\ No newline at end of file
index 76c1622a9d51b9fa448a5d16bb9cdfdb6385b4d8..8c6c433c1168328c2f2f28067e0de54ebee07d89 100644 (file)
@@ -3,29 +3,30 @@
        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.5.xsd">\r
 \r
-       <import resource="classpath:/org/argeo/slc/spring/templates.xml" />\r
+       <import\r
+               resource="classpath:/org/argeo/slc/hibernate/spring/applicationContext.xml" />\r
 \r
        <bean id="sessionFactory"\r
-               parent="slcTemplates.sessionFactory.hibernateTestHSQL">\r
+               parent="slcDefault.sessionFactory.hibernateTestHSQL">\r
        </bean>\r
 \r
-       <bean id="treeSPathDao"\r
-               class="org.argeo.slc.hibernate.structure.tree.TreeSPathDaoHibernate">\r
+       <bean id="testResultDao"\r
+               parent="slcTemplates.dao.testResultDao">\r
                <property name="sessionFactory" ref="sessionFactory" />\r
        </bean>\r
 \r
-       <bean id="treeSRegistryDao"\r
-               class="org.argeo.slc.hibernate.structure.tree.TreeSRegistryDaoHibernate">\r
+       <bean id="slcExecutionDao"\r
+               parent="slcTemplates.dao.slcExecutionDao">\r
                <property name="sessionFactory" ref="sessionFactory" />\r
        </bean>\r
-\r
-       <bean id="testResultDao"\r
-               class="org.argeo.slc.hibernate.test.tree.TestResultDaoHibernate">\r
+       \r
+       <bean id="treeSPathDao"\r
+               parent="slcTemplates.dao.treeSPathDao">\r
                <property name="sessionFactory" ref="sessionFactory" />\r
        </bean>\r
 \r
-       <bean id="slcExecutionDao"\r
-               class="org.argeo.slc.hibernate.process.SlcExecutionDaoHibernate">\r
+       <bean id="treeSRegistryDao"\r
+               parent="slcTemplates.dao.treeSRegistryDao">\r
                <property name="sessionFactory" ref="sessionFactory" />\r
        </bean>\r
 </beans>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/test/resources/org/argeo/slc/hibernate/withCastor.xml b/org.argeo.slc.core/src/test/resources/org/argeo/slc/hibernate/withCastor.xml
new file mode 100644 (file)
index 0000000..ae7f971
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+       <import resource="applicationContext.xml" />\r
+       <import\r
+               resource="classpath:/org/argeo/slc/castor/spring/applicationContext.xml" />\r
+</beans>
\ No newline at end of file