From: Mathieu Baudier Date: Mon, 5 May 2008 08:48:48 +0000 (+0000) Subject: Improve SlcExecution notifications X-Git-Tag: argeo-slc-2.1.7~2920 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;ds=inline;h=545cec1ea41db57c8e00f1b1a239fada86e0358f;p=gpl%2Fargeo-slc.git Improve SlcExecution notifications git-svn-id: https://svn.argeo.org/slc/trunk@1120 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcExecutionBuildListener.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcExecutionBuildListener.java index f2bedce40..a8dd15c7d 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcExecutionBuildListener.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcExecutionBuildListener.java @@ -28,12 +28,14 @@ public class SlcExecutionBuildListener extends AppenderSkeleton implements private List notifiers = new Vector(); - // private Map currentStep = new - // HashMap(); - - // private SlcExecutionStep currentStep = null; private boolean currentStepNotified = true; + // CUSTOMIZATIONS + private boolean logBeforeFirstTarget = false; + private boolean firstTargetStarted = false; + + private boolean logTaskStartFinish = true; + public void init(Project project) { if (this.project != null) { throw new SlcAntException("Build listener already initialized"); @@ -57,20 +59,23 @@ public class SlcExecutionBuildListener extends AppenderSkeleton implements } public void buildStarted(BuildEvent event) { - // SlcExecution slcExecution = getSlcExecution(event); - } public void buildFinished(BuildEvent event) { SlcExecution slcExecution = getSlcExecution(event); + String oldStatus = slcExecution.getStatus(); slcExecution.setStatus(SlcExecution.STATUS_FINISHED); for (SlcExecutionNotifier notifier : notifiers) { - notifier.updateExecution(slcExecution); + notifier.updateStatus(slcExecution, oldStatus, slcExecution + .getStatus()); } } public void messageLogged(BuildEvent event) { + if (!shouldLog()) + return; + SlcExecution slcExecution = getSlcExecution(event); if (slcExecution != null) { if (currentStepNotified) { @@ -87,6 +92,9 @@ public class SlcExecutionBuildListener extends AppenderSkeleton implements } public void targetStarted(BuildEvent event) { + if (!firstTargetStarted) + firstTargetStarted = true; + addLogStep(event, "Target " + event.getTarget().getName() + " started"); } @@ -95,23 +103,35 @@ public class SlcExecutionBuildListener extends AppenderSkeleton implements } public void taskStarted(BuildEvent event) { + if (!shouldLog()) + return; + SlcExecution slcExecution = getSlcExecution(event); if (!currentStepNotified) { notifyStep(slcExecution, slcExecution.currentStep()); currentStepNotified = true; } - slcExecution.getSteps().add( - new SlcExecutionStep("LOG", "Task " - + event.getTask().getTaskName() + " started")); + String msg = null; + if (logTaskStartFinish) + msg = "Task " + event.getTask().getTaskName() + " started"; + + slcExecution.getSteps().add(new SlcExecutionStep("LOG", msg)); + currentStepNotified = false; } public void taskFinished(BuildEvent event) { + if (!shouldLog()) + return; + SlcExecution slcExecution = getSlcExecution(event); if (!currentStepNotified) { - slcExecution.currentStep().addLog( - "Task " + event.getTask().getTaskName() + " finished"); + + if (logTaskStartFinish) + slcExecution.currentStep().addLog( + "Task " + event.getTask().getTaskName() + " finished"); + notifyStep(slcExecution, slcExecution.currentStep()); currentStepNotified = true; } @@ -193,15 +213,16 @@ public class SlcExecutionBuildListener extends AppenderSkeleton implements } + protected boolean shouldLog() { + return logBeforeFirstTarget || firstTargetStarted; + } + @Override public void close() { - // TODO Auto-generated method stub - } @Override public boolean requiresLayout() { - // TODO Auto-generated method stub return false; } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/FileSlcExecutionNotifier.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/FileSlcExecutionNotifier.java index 1bf415672..1559635bd 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/FileSlcExecutionNotifier.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/FileSlcExecutionNotifier.java @@ -45,6 +45,11 @@ public class FileSlcExecutionNotifier implements SlcExecutionNotifier { writeSlcExecution(slcExecution); } + public void updateStatus(SlcExecution slcExecution, String oldStatus, + String newStatus) { + writeSlcExecution(slcExecution); + } + protected void writeSlcExecution(SlcExecution slcExecution) { FileWriter out = null; try { @@ -75,6 +80,5 @@ public class FileSlcExecutionNotifier implements SlcExecutionNotifier { public void setMarshaller(Marshaller marshaller) { this.marshaller = marshaller; } - - + } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionNotifier.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionNotifier.java index 183d99add..bf3b67ba5 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionNotifier.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionNotifier.java @@ -9,4 +9,7 @@ public interface SlcExecutionNotifier { List additionalSteps); public void updateExecution(SlcExecution slcExecution); + + public void updateStatus(SlcExecution slcExecution, String oldStatus, + String newStatus); } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionStep.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionStep.java index b18411136..56b6ba020 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionStep.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionStep.java @@ -67,6 +67,9 @@ public class SlcExecutionStep { } public void addLog(String log) { + if (log == null) + return; + try { List lines = IOUtils.readLines(new StringReader(log)); logLines.addAll(lines); diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/WebServiceSlcExecutionNotifier.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/WebServiceSlcExecutionNotifier.java index 09e37122d..4befbe6a2 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/WebServiceSlcExecutionNotifier.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/WebServiceSlcExecutionNotifier.java @@ -9,6 +9,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.slc.msg.process.SlcExecutionRequest; +import org.argeo.slc.msg.process.SlcExecutionStatusRequest; import org.argeo.slc.msg.process.SlcExecutionStepsRequest; import org.argeo.slc.ws.client.WebServiceUtils; @@ -43,6 +44,20 @@ public class WebServiceSlcExecutionNotifier implements SlcExecutionNotifier { } } + public void updateStatus(SlcExecution slcExecution, String oldStatus, + String newStatus) { + SlcExecutionStatusRequest req = new SlcExecutionStatusRequest( + slcExecution.getUuid(), newStatus); + try { + WebServiceUtils.marshalSendAndReceive(template, req); + if (log.isTraceEnabled()) + log.trace("Notified status update of slc execution " + + slcExecution.getUuid()); + } catch (SoapFaultClientException e) { + WebServiceUtils.manageSoapException(e); + } + } + public void addSteps(SlcExecution slcExecution, List additionalSteps) { SlcExecutionStepsRequest req = new SlcExecutionStepsRequest(); diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/SimpleSElement.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/SimpleSElement.java index 369f951b6..9faea935f 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/SimpleSElement.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/SimpleSElement.java @@ -3,6 +3,8 @@ package org.argeo.slc.core.structure; import java.util.Map; import java.util.TreeMap; +import javax.swing.tree.TreeSelectionModel; + /** * Basic implementation of StructureElement. * @@ -28,6 +30,12 @@ public class SimpleSElement implements StructureElement { this(label != null ? label : defaultLabel); } + /** Constructor */ + public SimpleSElement(SimpleSElement sElement) { + setLabel(sElement.getLabel()); + setTags(new TreeMap(sElement.getTags())); + } + public String getLabel() { return label; } @@ -55,10 +63,7 @@ public class SimpleSElement implements StructureElement { @Override public SimpleSElement clone(){ - SimpleSElement clone = new SimpleSElement(); - clone.setLabel(getLabel()); - clone.setTags(getTags()); - return clone; + return new SimpleSElement(this); } } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/WebServiceTreeTestResultNotifier.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/WebServiceTreeTestResultNotifier.java index 698c24cb7..7ca2f7da0 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/WebServiceTreeTestResultNotifier.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/WebServiceTreeTestResultNotifier.java @@ -24,9 +24,11 @@ public class WebServiceTreeTestResultNotifier implements TestResultPart testResultPart) { if (onlyOnClose) return; - + try { - if (testResult.getResultParts().size() == 1) { + if (testResult.getResultParts().size() == 1 + && testResult.getResultParts().values().iterator().next() + .getParts().size() == 1) { CreateTreeTestResultRequest req = new CreateTreeTestResultRequest( testResult); diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/process/SlcExecutionStatusRequest.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/process/SlcExecutionStatusRequest.java new file mode 100644 index 000000000..78afc830f --- /dev/null +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/process/SlcExecutionStatusRequest.java @@ -0,0 +1,30 @@ +package org.argeo.slc.msg.process; + +public class SlcExecutionStatusRequest { + private String slcExecutionUuid; + private String newStatus; + + public SlcExecutionStatusRequest() { + } + + public SlcExecutionStatusRequest(String slcExecutionUuid, String newStatus) { + this.slcExecutionUuid = slcExecutionUuid; + this.newStatus = newStatus; + } + + public String getSlcExecutionUuid() { + return slcExecutionUuid; + } + + public void setSlcExecutionUuid(String slcExecutionUuid) { + this.slcExecutionUuid = slcExecutionUuid; + } + + public String getNewStatus() { + return newStatus; + } + + public void setNewStatus(String newStatus) { + this.newStatus = newStatus; + } +} diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/msg/mapping.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/msg/mapping.xml index 9972cac7d..f695f9573 100644 --- a/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/msg/mapping.xml +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/msg/mapping.xml @@ -64,6 +64,13 @@ + + + + + + diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/xml/slc.xsd b/org.argeo.slc.core/src/main/resources/org/argeo/slc/xml/slc.xsd index bb44d77bf..b457f18f0 100644 --- a/org.argeo.slc.core/src/main/resources/org/argeo/slc/xml/slc.xsd +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/xml/slc.xsd @@ -223,5 +223,13 @@ + + + + + + + + \ No newline at end of file