+++ /dev/null
-package org.argeo.slc.core.process;\r
-\r
-import java.io.IOException;\r
-import java.io.StringReader;\r
-import java.text.SimpleDateFormat;\r
-import java.util.UUID;\r
-\r
-import javax.xml.transform.stream.StreamSource;\r
-\r
-import org.apache.commons.io.IOUtils;\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-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
-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
-\r
-public class SlcExecutionCastorTest extends AbstractSpringTestCase {\r
- private Log log = LogFactory.getLog(getClass());\r
-\r
- private Marshaller marshaller;\r
- private Unmarshaller unmarshaller;\r
-\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
- String msgSaveXml = marshallAndLog(marshaller, msgSave);\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
- SlcExecutionStepsRequest msgNotif = new SlcExecutionStepsRequest();\r
- msgNotif.addStep(step0);\r
- msgNotif.addStep(step1);\r
- msgNotif.setSlcExecutionUuid(slcExec.getUuid());\r
-\r
- String msgNotifXml = marshallAndLog(marshaller, msgNotif);\r
-\r
- SlcExecutionRequest msgSaveUnm = unmarshall(unmarshaller, msgSaveXml);\r
- assertNotNull(msgSaveUnm);\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
- 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
-\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
- 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
- throws IOException {\r
- StringReader reader = new StringReader(xml);\r
- Object obj = unmarshaller.unmarshal(new StreamSource(reader));\r
- IOUtils.closeQuietly(reader);\r
- return (T) obj;\r
- }\r
-}\r