<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
- </plugin>
+ </plugin>\r
+ <!--
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
</goals>
</execution>
</executions>
- </plugin>
+ </plugin>\r
+ -->
<plugin>\r
<groupId>org.apache.maven.plugins</groupId>\r
<artifactId>maven-surefire-plugin</artifactId>\r
import org.argeo.slc.core.process.SlcExecution;\r
import org.argeo.slc.core.process.SlcExecutionNotifier;\r
import org.argeo.slc.core.process.SlcExecutionStep;\r
+import org.argeo.slc.core.process.WebServiceSlcExecutionNotifier;\r
\r
public class SlcExecutionBuildListener extends AppenderSkeleton implements\r
ProjectRelatedBuildListener {\r
\r
public void init(Project project) {\r
if (this.project != null) {\r
- throw new SlcAntException("BuildListener already initialized");\r
+ throw new SlcAntException("Build listener already initialized");\r
}\r
\r
this.project = project;\r
if (currentStep == null) {\r
currentStep = new SlcExecutionStep("LOG", event.getMessage());\r
notifyStep(slcExecution, currentStep);\r
+ currentStep = null;\r
} else {\r
currentStep.addLog(event.getMessage());\r
}\r
// avoid StackOverflow if notification calls Log4j itself.\r
return;\r
}\r
+\r
+ if (event.getLoggerName().equals(\r
+ WebServiceSlcExecutionNotifier.class.getName())) {\r
+ return;\r
+ }\r
+\r
isLogging = true;\r
\r
try {\r
if (currentStep == null) {\r
currentStep = new SlcExecutionStep("LOG", event\r
.getMessage().toString());\r
- notifyStep(slcExecution, currentStep);\r
- } else {\r
- currentStep.addLog(event.getMessage().toString());\r
}\r
+ currentStep.addLog(event.getMessage().toString());\r
} else {\r
// TODO: log before initialization?\r
}\r
package org.argeo.slc.core.process;\r
\r
+import java.io.IOException;\r
import java.util.Iterator;\r
import java.util.List;\r
\r
import javax.xml.transform.Source;\r
import javax.xml.transform.dom.DOMSource;\r
\r
+import org.springframework.oxm.XmlMappingException;\r
import org.springframework.ws.client.core.WebServiceTemplate;\r
import org.springframework.ws.soap.SoapFaultDetail;\r
import org.springframework.ws.soap.SoapFaultDetailElement;\r
import org.springframework.ws.soap.client.SoapFaultClientException;\r
+import org.springframework.xml.transform.StringResult;\r
import org.w3c.dom.Node;\r
\r
import com.ibm.wsdl.util.IOUtils;\r
SlcExecutionStepsRequest req = new SlcExecutionStepsRequest();\r
req.setSlcExecutionUuid(slcExecution.getUuid());\r
req.setSteps(additionalSteps);\r
+ if (log.isTraceEnabled()) {\r
+ for (SlcExecutionStep step : additionalSteps) {\r
+ log.trace("Step " + step.getUuid() + ": " + step.logAsString());\r
+ }\r
+ }\r
+\r
try {\r
- template.marshalSendAndReceive(req);\r
+ marshalSendAndReceive(req);\r
if (log.isDebugEnabled())\r
log.debug("Added steps to slc execution "\r
+ slcExecution.getUuid());\r
SlcExecutionRequest req = new SlcExecutionRequest();\r
req.setSlcExecution(slcExecution);\r
try {\r
- template.marshalSendAndReceive(req);\r
+ marshalSendAndReceive(req);\r
if (log.isDebugEnabled())\r
log.debug("Notified creation of slc execution "\r
+ slcExecution.getUuid());\r
SlcExecutionRequest req = new SlcExecutionRequest();\r
req.setSlcExecution(slcExecution);\r
try {\r
- template.marshalSendAndReceive(req);\r
+ marshalSendAndReceive(req);\r
if (log.isDebugEnabled())\r
- log.debug("Notify update of slc execution "\r
+ log.debug("Notified update of slc execution "\r
+ slcExecution.getUuid());\r
} catch (SoapFaultClientException e) {\r
manageSoapException(e);\r
log.error("WS root cause stack: " + stack);\r
}\r
}\r
+\r
+ protected Object marshalSendAndReceive(Object req) {\r
+ if (log.isTraceEnabled()) {\r
+ try {\r
+ StringResult result = new StringResult();\r
+ template.getMarshaller().marshal(req, result);\r
+ log.trace("About to send " + result);\r
+ } catch (Exception e) {\r
+ log.error("Cannot marshall " + req + " for logging", e);\r
+ }\r
+ }\r
+ Object resp = template.marshalSendAndReceive(req);\r
+ return resp;\r
+ }\r
}\r
<field name="uuid" identity="true">\r
<bind-xml node="attribute" />\r
</field>\r
- <field name="steps" collection="vector">\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
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
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
+ public void setUp() {\r
+ marshaller = getBean("marshaller");\r
+ unmarshaller = getBean("marshaller");\r
+ }\r
\r
+ public void testMarshalling() throws Exception {\r
SlcExecution slcExec = SlcExecutionTestUtils.createSimpleSlcExecution();\r
\r
SlcExecutionRequest msgSave = new SlcExecutionRequest();\r
\r
SlcExecutionRequest msgSaveUnm = unmarshall(unmarshaller, msgSaveXml);\r
assertNotNull(msgSaveUnm);\r
- SlcExecutionTestUtils.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
- SlcExecutionTestUtils.assertSlcExecutionStep(step0, msgNotifUnm.getSteps().get(0));\r
- SlcExecutionTestUtils.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
## Levels\r
# Slc\r
log4j.logger.org.argeo.slc=DEBUG\r
+log4j.logger.org.argeo.slc.core.process=DEBUG\r
+\r
+# Castor\r
+\r
# Spring\r
log4j.logger.org.springframework=INFO\r
# Hibernate\r