package org.argeo.slc.core.process;\r
\r
import java.io.IOException;\r
+import java.io.InputStream;\r
import java.io.StringReader;\r
import java.io.StringWriter;\r
import java.text.SimpleDateFormat;\r
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
+import org.argeo.slc.unit.process.SlcExecutionTestUtils;\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.validation.XmlValidator;\r
+import org.springframework.xml.xsd.XsdSchema;\r
\r
public class SlcExecutionCastorTest extends AbstractSpringTestCase {\r
private Log log = LogFactory.getLog(getClass());\r
\r
- public void testMarshalling() throws Exception {\r
- Marshaller marshaller = getBean("marshaller");\r
- Unmarshaller unmarshaller = getBean("marshaller");\r
+ private Marshaller marshaller;\r
+ private Unmarshaller unmarshaller;\r
\r
- SlcExecution slcExec = createSimpleSlcExecution();\r
+ @Override\r
+ public void setUp() {\r
+ marshaller = getBean(Marshaller.class);\r
+ unmarshaller = getBean(Unmarshaller.class);\r
+ }\r
+\r
+ public void testMarshalling() throws Exception {\r
+ SlcExecution slcExec = SlcExecutionTestUtils.createSimpleSlcExecution();\r
\r
SlcExecutionRequest msgSave = new SlcExecutionRequest();\r
msgSave.setSlcExecution(slcExec);\r
\r
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");\r
SlcExecutionStep step0 = new SlcExecutionStep();\r
+ step0.setUuid(UUID.randomUUID().toString());\r
step0.setBegin(sdf.parse("2008-04-17 18:21"));\r
step0.setType("LOG");\r
step0.addLog("A log message\nand another line");\r
\r
SlcExecutionStep step1 = new SlcExecutionStep();\r
+ step1.setUuid(UUID.randomUUID().toString());\r
step1.setBegin(sdf.parse("2008-04-17 18:25"));\r
step1.setType("LOG");\r
step1.addLog("A nother log message");\r
\r
SlcExecutionRequest msgSaveUnm = unmarshall(unmarshaller, msgSaveXml);\r
assertNotNull(msgSaveUnm);\r
- assertSlcExecution(slcExec, msgSaveUnm.getSlcExecution());\r
+ SlcExecutionTestUtils.assertSlcExecution(slcExec, msgSaveUnm\r
+ .getSlcExecution());\r
\r
SlcExecutionStepsRequest msgNotifUnm = unmarshall(unmarshaller,\r
msgNotifXml);\r
assertNotNull(msgNotifUnm);\r
assertEquals(slcExec.getUuid(), msgNotifUnm.getSlcExecutionUuid());\r
assertEquals(2, msgNotifUnm.getSteps().size());\r
- assertSlcExecutionStep(step0, msgNotifUnm.getSteps().get(0));\r
- assertSlcExecutionStep(step1, msgNotifUnm.getSteps().get(1));\r
+ SlcExecutionTestUtils.assertSlcExecutionStep(step0, msgNotifUnm\r
+ .getSteps().get(0));\r
+ SlcExecutionTestUtils.assertSlcExecutionStep(step1, msgNotifUnm\r
+ .getSteps().get(1));\r
\r
SlcExecution slcExecUnm = msgSaveUnm.getSlcExecution();\r
slcExecUnm.getSteps().addAll(msgNotifUnm.getSteps());\r
SlcExecutionRequest msgUpdate = new SlcExecutionRequest();\r
msgUpdate.setSlcExecution(slcExecUnm);\r
String msgUpdateXml = marshallAndLog(marshaller, msgUpdate);\r
+\r
+ SlcExecutionRequest msgUpdateUnm = unmarshall(unmarshaller,\r
+ msgUpdateXml);\r
+ assertNotNull(msgUpdateUnm);\r
}\r
\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
+ UnitXmlUtils.assertXmlValidation(getBean(XmlValidator.class),\r
+ new StringSource(xml.toString()));\r
+\r
+ return xml.toString();\r
}\r
\r
private <T> T unmarshall(Unmarshaller unmarshaller, String xml)\r
IOUtils.closeQuietly(reader);\r
return (T) obj;\r
}\r
-\r
- private void assertSlcExecution(SlcExecution expected, SlcExecution reached) {\r
- assertNotNull(reached);\r
- assertEquals(expected.getHost(), reached.getHost());\r
- assertEquals(expected.getPath(), reached.getPath());\r
- assertEquals(expected.getType(), reached.getType());\r
- assertEquals(expected.getStatus(), reached.getStatus());\r
- }\r
-\r
- private void assertSlcExecutionStep(SlcExecutionStep expected,\r
- SlcExecutionStep reached) {\r
- assertNotNull(reached);\r
- assertEquals(expected.getType(), reached.getType());\r
- assertEquals(expected.logAsString(), reached.logAsString());\r
- assertEquals(expected.getBegin(), reached.getBegin());\r
- }\r
-\r
- 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.setType("slcAnt");\r
- slcExec.setStatus("STARTED");\r
- return slcExec;\r
- }\r
}\r