1 package org
.argeo
.slc
.core
.process
;
3 import java
.io
.IOException
;
4 import java
.io
.StringReader
;
5 import java
.io
.StringWriter
;
6 import java
.text
.SimpleDateFormat
;
9 import javax
.xml
.transform
.stream
.StreamResult
;
10 import javax
.xml
.transform
.stream
.StreamSource
;
12 import org
.apache
.commons
.io
.IOUtils
;
13 import org
.apache
.commons
.logging
.Log
;
14 import org
.apache
.commons
.logging
.LogFactory
;
15 import org
.argeo
.slc
.msg
.process
.SlcExecutionRequest
;
16 import org
.argeo
.slc
.msg
.process
.SlcExecutionStepsRequest
;
17 import org
.argeo
.slc
.unit
.AbstractSpringTestCase
;
18 import org
.springframework
.oxm
.Marshaller
;
19 import org
.springframework
.oxm
.Unmarshaller
;
21 public class SlcExecutionCastorTest
extends AbstractSpringTestCase
{
22 private Log log
= LogFactory
.getLog(getClass());
24 public void testMarshalling() throws Exception
{
25 Marshaller marshaller
= getBean("marshaller");
26 Unmarshaller unmarshaller
= getBean("marshaller");
28 SlcExecution slcExec
= createSimpleSlcExecution();
30 SlcExecutionRequest msgSave
= new SlcExecutionRequest();
31 msgSave
.setSlcExecution(slcExec
);
33 String msgSaveXml
= marshallAndLog(marshaller
, msgSave
);
35 SimpleDateFormat sdf
= new SimpleDateFormat("yyyy-MM-dd HH:mm");
36 SlcExecutionStep step0
= new SlcExecutionStep();
37 step0
.setBegin(sdf
.parse("2008-04-17 18:21"));
39 step0
.addLog("A log message\nand another line");
41 SlcExecutionStep step1
= new SlcExecutionStep();
42 step1
.setBegin(sdf
.parse("2008-04-17 18:25"));
44 step1
.addLog("A nother log message");
46 SlcExecutionStepsRequest msgNotif
= new SlcExecutionStepsRequest();
47 msgNotif
.addStep(step0
);
48 msgNotif
.addStep(step1
);
49 msgNotif
.setSlcExecutionUuid(slcExec
.getUuid());
51 String msgNotifXml
= marshallAndLog(marshaller
, msgNotif
);
53 SlcExecutionRequest msgSaveUnm
= unmarshall(unmarshaller
, msgSaveXml
);
54 assertNotNull(msgSaveUnm
);
55 assertSlcExecution(slcExec
, msgSaveUnm
.getSlcExecution());
57 SlcExecutionStepsRequest msgNotifUnm
= unmarshall(unmarshaller
,
59 assertNotNull(msgNotifUnm
);
60 assertEquals(slcExec
.getUuid(), msgNotifUnm
.getSlcExecutionUuid());
61 assertEquals(2, msgNotifUnm
.getSteps().size());
62 assertSlcExecutionStep(step0
, msgNotifUnm
.getSteps().get(0));
63 assertSlcExecutionStep(step1
, msgNotifUnm
.getSteps().get(1));
65 SlcExecution slcExecUnm
= msgSaveUnm
.getSlcExecution();
66 slcExecUnm
.getSteps().addAll(msgNotifUnm
.getSteps());
68 SlcExecutionRequest msgUpdate
= new SlcExecutionRequest();
69 msgUpdate
.setSlcExecution(slcExecUnm
);
70 String msgUpdateXml
= marshallAndLog(marshaller
, msgUpdate
);
73 private String
marshallAndLog(Marshaller marshaller
, Object obj
)
75 StringWriter writer
= new StringWriter();
76 marshaller
.marshal(obj
, new StreamResult(writer
));
77 String xml
= writer
.toString();
79 IOUtils
.closeQuietly(writer
);
83 private <T
> T
unmarshall(Unmarshaller unmarshaller
, String xml
)
85 StringReader reader
= new StringReader(xml
);
86 Object obj
= unmarshaller
.unmarshal(new StreamSource(reader
));
87 IOUtils
.closeQuietly(reader
);
91 private void assertSlcExecution(SlcExecution expected
, SlcExecution reached
) {
92 assertNotNull(reached
);
93 assertEquals(expected
.getHost(), reached
.getHost());
94 assertEquals(expected
.getPath(), reached
.getPath());
95 assertEquals(expected
.getType(), reached
.getType());
96 assertEquals(expected
.getStatus(), reached
.getStatus());
99 private void assertSlcExecutionStep(SlcExecutionStep expected
,
100 SlcExecutionStep reached
) {
101 assertNotNull(reached
);
102 assertEquals(expected
.getType(), reached
.getType());
103 assertEquals(expected
.logAsString(), reached
.logAsString());
104 assertEquals(expected
.getBegin(), reached
.getBegin());
107 public static SlcExecution
createSimpleSlcExecution() {
108 SlcExecution slcExec
= new SlcExecution();
109 slcExec
.setUuid(UUID
.randomUUID().toString());
110 slcExec
.setHost("localhost");
111 slcExec
.setPath("/test");
112 slcExec
.setType("slcAnt");
113 slcExec
.setStatus("STARTED");