]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcExecutionBuildListener.java
Create separate agent project
[gpl/argeo-slc.git] / org.argeo.slc.core / src / main / java / org / argeo / slc / ant / SlcExecutionBuildListener.java
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
deleted file mode 100644 (file)
index a8dd15c..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-package org.argeo.slc.ant;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-import org.apache.log4j.AppenderSkeleton;\r
-import org.apache.log4j.LogManager;\r
-import org.apache.log4j.spi.LoggingEvent;\r
-import org.apache.tools.ant.BuildEvent;\r
-import org.apache.tools.ant.Project;\r
-\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
-       public static final String ANT_TYPE = "org.apache.tools.ant";\r
-       public static final String SLC_ANT_TYPE = "org.argeo.slc.ant";\r
-\r
-       public static final String REF_SLC_EXECUTION = "slcExecution";\r
-\r
-       private Project project;\r
-\r
-       // to avoid stack overflow when logging for log4j\r
-       private boolean isLogging = false;\r
-\r
-       private List<SlcExecutionNotifier> notifiers = new Vector<SlcExecutionNotifier>();\r
-\r
-       private boolean currentStepNotified = true;\r
-\r
-       // CUSTOMIZATIONS\r
-       private boolean logBeforeFirstTarget = false;\r
-       private boolean firstTargetStarted = false;\r
-\r
-       private boolean logTaskStartFinish = true;\r
-\r
-       public void init(Project project) {\r
-               if (this.project != null) {\r
-                       throw new SlcAntException("Build listener already initialized");\r
-               }\r
-\r
-               this.project = project;\r
-\r
-               if (!LogManager.getRootLogger().isAttached(this)) {\r
-                       LogManager.getRootLogger().addAppender(this);\r
-               }\r
-\r
-               SlcExecution slcExecution = (SlcExecution) project\r
-                               .getReference(REF_SLC_EXECUTION);\r
-               if (slcExecution == null)\r
-                       throw new SlcAntException("No SLC Execution registered.");\r
-\r
-               for (SlcExecutionNotifier notifier : notifiers) {\r
-                       notifier.newExecution(slcExecution);\r
-               }\r
-\r
-       }\r
-\r
-       public void buildStarted(BuildEvent event) {\r
-       }\r
-\r
-       public void buildFinished(BuildEvent event) {\r
-               SlcExecution slcExecution = getSlcExecution(event);\r
-               String oldStatus = slcExecution.getStatus();\r
-               slcExecution.setStatus(SlcExecution.STATUS_FINISHED);\r
-\r
-               for (SlcExecutionNotifier notifier : notifiers) {\r
-                       notifier.updateStatus(slcExecution, oldStatus, slcExecution\r
-                                       .getStatus());\r
-               }\r
-       }\r
-\r
-       public void messageLogged(BuildEvent event) {\r
-               if (!shouldLog())\r
-                       return;\r
-\r
-               SlcExecution slcExecution = getSlcExecution(event);\r
-               if (slcExecution != null) {\r
-                       if (currentStepNotified) {\r
-                               slcExecution.getSteps().add(\r
-                                               new SlcExecutionStep("LOG", event.getMessage()));\r
-                               notifyStep(slcExecution, slcExecution.currentStep());\r
-                               currentStepNotified = true;\r
-                       } else {\r
-                               slcExecution.currentStep().addLog(event.getMessage());\r
-                       }\r
-               } else {\r
-                       // TODO: log before initialization?\r
-               }\r
-       }\r
-\r
-       public void targetStarted(BuildEvent event) {\r
-               if (!firstTargetStarted)\r
-                       firstTargetStarted = true;\r
-\r
-               addLogStep(event, "Target " + event.getTarget().getName() + " started");\r
-       }\r
-\r
-       public void targetFinished(BuildEvent event) {\r
-               addLogStep(event, "Target " + event.getTarget().getName() + " finished");\r
-       }\r
-\r
-       public void taskStarted(BuildEvent event) {\r
-               if (!shouldLog())\r
-                       return;\r
-\r
-               SlcExecution slcExecution = getSlcExecution(event);\r
-               if (!currentStepNotified) {\r
-                       notifyStep(slcExecution, slcExecution.currentStep());\r
-                       currentStepNotified = true;\r
-               }\r
-\r
-               String msg = null;\r
-               if (logTaskStartFinish)\r
-                       msg = "Task " + event.getTask().getTaskName() + " started";\r
-\r
-               slcExecution.getSteps().add(new SlcExecutionStep("LOG", msg));\r
-\r
-               currentStepNotified = false;\r
-       }\r
-\r
-       public void taskFinished(BuildEvent event) {\r
-               if (!shouldLog())\r
-                       return;\r
-\r
-               SlcExecution slcExecution = getSlcExecution(event);\r
-               if (!currentStepNotified) {\r
-\r
-                       if (logTaskStartFinish)\r
-                               slcExecution.currentStep().addLog(\r
-                                               "Task " + event.getTask().getTaskName() + " finished");\r
-\r
-                       notifyStep(slcExecution, slcExecution.currentStep());\r
-                       currentStepNotified = true;\r
-               }\r
-       }\r
-\r
-       public void setNotifiers(List<SlcExecutionNotifier> notifiers) {\r
-               this.notifiers = notifiers;\r
-       }\r
-\r
-       protected SlcExecution getSlcExecution(BuildEvent event) {\r
-               Project projectEvt = event.getProject();\r
-               if (!projectEvt.equals(project))\r
-                       throw new SlcAntException("Event project " + projectEvt\r
-                                       + " not consistent with listener project " + project);\r
-\r
-               SlcExecution slcExecution = (SlcExecution) project\r
-                               .getReference(REF_SLC_EXECUTION);\r
-\r
-               if (slcExecution == null)\r
-                       throw new SlcAntException("No SLC Execution registered.");\r
-               return slcExecution;\r
-       }\r
-\r
-       protected void addLogStep(BuildEvent event, String msg) {\r
-               SlcExecution slcExecution = getSlcExecution(event);\r
-               slcExecution.getSteps().add(new SlcExecutionStep("LOG", msg));\r
-\r
-               notifyStep(slcExecution, slcExecution.currentStep());\r
-               currentStepNotified = true;\r
-       }\r
-\r
-       protected void notifyStep(SlcExecution slcExecution, SlcExecutionStep step) {\r
-               Vector<SlcExecutionStep> additionalSteps = new Vector<SlcExecutionStep>();\r
-               additionalSteps.add(step);\r
-               notifySteps(slcExecution, additionalSteps);\r
-       }\r
-\r
-       protected void notifySteps(SlcExecution slcExecution,\r
-                       List<SlcExecutionStep> additionalSteps) {\r
-               for (SlcExecutionNotifier notifier : notifiers) {\r
-                       notifier.addSteps(slcExecution, additionalSteps);\r
-               }\r
-       }\r
-\r
-       /* Log4j methods */\r
-\r
-       @Override\r
-       protected void append(LoggingEvent event) {\r
-               if (isLogging) {\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
-                       SlcExecution slcExecution = (SlcExecution) project\r
-                                       .getReference(REF_SLC_EXECUTION);\r
-                       if (slcExecution != null) {\r
-                               if (currentStepNotified) {\r
-                                       slcExecution.getSteps().add(\r
-                                                       new SlcExecutionStep("LOG", event.getMessage()\r
-                                                                       .toString()));\r
-                                       currentStepNotified = false;\r
-                               }\r
-                               slcExecution.currentStep()\r
-                                               .addLog(event.getMessage().toString());\r
-                       } else {\r
-                               // TODO: log before initialization?\r
-                       }\r
-               } finally {\r
-                       isLogging = false;\r
-               }\r
-\r
-       }\r
-\r
-       protected boolean shouldLog() {\r
-               return logBeforeFirstTarget || firstTargetStarted;\r
-       }\r
-\r
-       @Override\r
-       public void close() {\r
-       }\r
-\r
-       @Override\r
-       public boolean requiresLayout() {\r
-               return false;\r
-       }\r
-\r
-       public Project getProject() {\r
-               return project;\r
-       }\r
-\r
-}\r