Improve SlcExecution notifications
authorMathieu Baudier <mbaudier@argeo.org>
Thu, 24 Apr 2008 22:53:51 +0000 (22:53 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Thu, 24 Apr 2008 22:53:51 +0000 (22:53 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1069 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.core/pom.xml
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcExecutionBuildListener.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecution.java

index b46e8a7a0faf20f83589265c2587846d9ecf73a7..6959e7708bf9cdacd578a5efc117fde752e6bf93 100644 (file)
@@ -1,53 +1,53 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-       <modelVersion>4.0.0</modelVersion>
-       <parent>
-               <groupId>org.argeo.slc</groupId>
-               <artifactId>argeo-slc</artifactId>
-               <version>0.9-SNAPSHOT</version>
-               <relativePath>../org.argeo.slc</relativePath>
-       </parent>
-       <artifactId>argeo-slc-core</artifactId>
-       <name>Argeo SLC Core</name>
-       <description>SLC Core</description>
-       <scm>
-               <connection>
-                       scm:svn:https://www.argeo.org/svn/slc/trunk/org.argeo.slc.core
-               </connection>
-               <url>
-                       https://www.argeo.org/svn/slc/trunk/org.argeo.slc.core
-               </url>
-       </scm>
-       <build>
-               <plugins>
-                       <!-- Look to parent pom for inheritances -->
-                       <plugin>
-                               <groupId>org.apache.maven.plugins</groupId>
-                               <artifactId>maven-compiler-plugin</artifactId>
+<?xml version="1.0" encoding="UTF-8"?>\r
+<project xmlns="http://maven.apache.org/POM/4.0.0"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
+       <modelVersion>4.0.0</modelVersion>\r
+       <parent>\r
+               <groupId>org.argeo.slc</groupId>\r
+               <artifactId>argeo-slc</artifactId>\r
+               <version>0.9-SNAPSHOT</version>\r
+               <relativePath>../org.argeo.slc</relativePath>\r
+       </parent>\r
+       <artifactId>argeo-slc-core</artifactId>\r
+       <name>Argeo SLC Core</name>\r
+       <description>SLC Core</description>\r
+       <scm>\r
+               <connection>\r
+                       scm:svn:https://www.argeo.org/svn/slc/trunk/org.argeo.slc.core\r
+               </connection>\r
+               <url>\r
+                       https://www.argeo.org/svn/slc/trunk/org.argeo.slc.core\r
+               </url>\r
+       </scm>\r
+       <build>\r
+               <plugins>\r
+                       <!-- Look to parent pom for inheritances -->\r
+                       <plugin>\r
+                               <groupId>org.apache.maven.plugins</groupId>\r
+                               <artifactId>maven-compiler-plugin</artifactId>\r
+                       </plugin>\r
+                       <plugin>\r
+                               <groupId>org.apache.maven.plugins</groupId>\r
+                               <artifactId>maven-source-plugin</artifactId>\r
                        </plugin>\r
-                       <plugin>
-                               <groupId>org.apache.maven.plugins</groupId>
-                               <artifactId>maven-source-plugin</artifactId>
-                       </plugin>
-                       <plugin>
-                               <groupId>org.apache.maven.plugins</groupId>
-                               <artifactId>maven-assembly-plugin</artifactId>
-                               <configuration>
-                                       <descriptors>
-                                               <descriptor>src/assembly/base.xml</descriptor>
-                                       </descriptors>
-                               </configuration>
-                               <executions>
-                                       <execution>
-                                               <id>assembly-base</id>
-                                               <phase>package</phase>
-                                               <goals>
-                                                       <goal>single</goal>
-                                               </goals>
-                                       </execution>
-                               </executions>
+                       <plugin>\r
+                               <groupId>org.apache.maven.plugins</groupId>\r
+                               <artifactId>maven-assembly-plugin</artifactId>\r
+                               <configuration>\r
+                                       <descriptors>\r
+                                               <descriptor>src/assembly/base.xml</descriptor>\r
+                                       </descriptors>\r
+                               </configuration>\r
+                               <executions>\r
+                                       <execution>\r
+                                               <id>assembly-base</id>\r
+                                               <phase>package</phase>\r
+                                               <goals>\r
+                                                       <goal>single</goal>\r
+                                               </goals>\r
+                                       </execution>\r
+                               </executions>\r
                        </plugin>\r
                        <plugin>\r
                                <groupId>org.apache.maven.plugins</groupId>\r
                                        </excludes>\r
                                </configuration>\r
                        </plugin>\r
-               </plugins>
-       </build>
-       <dependencies>
-               <dependency>
-                       <groupId>javax.transaction</groupId>
-                       <artifactId>jta</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>log4j</groupId>
-                       <artifactId>log4j</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.hibernate</groupId>
-                       <artifactId>hibernate</artifactId>
-               </dependency>\r
-               
-               <dependency>
-                       <groupId>org.springframework</groupId>
-                       <artifactId>spring-context</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.springframework</groupId>
-                       <artifactId>spring-orm</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.springframework</groupId>
-                       <artifactId>spring-jdbc</artifactId>
-               </dependency>\r
-                               <dependency>\r
+               </plugins>\r
+       </build>\r
+       <dependencies>\r
+               <dependency>\r
+                       <groupId>javax.transaction</groupId>\r
+                       <artifactId>jta</artifactId>\r
+               </dependency>\r
+               <dependency>\r
+                       <groupId>log4j</groupId>\r
+                       <artifactId>log4j</artifactId>\r
+               </dependency>\r
+               <dependency>\r
+                       <groupId>org.hibernate</groupId>\r
+                       <artifactId>hibernate</artifactId>\r
+               </dependency>\r
+\r
+               <dependency>\r
+                       <groupId>org.springframework</groupId>\r
+                       <artifactId>spring-context</artifactId>\r
+               </dependency>\r
+               <dependency>\r
+                       <groupId>org.springframework</groupId>\r
+                       <artifactId>spring-orm</artifactId>\r
+               </dependency>\r
+               <dependency>\r
+                       <groupId>org.springframework</groupId>\r
+                       <artifactId>spring-jdbc</artifactId>\r
+               </dependency>\r
+               <dependency>\r
                        <groupId>org.springframework.ws</groupId>\r
                        <artifactId>spring-ws-core</artifactId>\r
                </dependency>\r
                        <groupId>com.sun.xml.messaging.saaj</groupId>\r
                        <artifactId>saaj-impl</artifactId>\r
                </dependency>\r
-               
-               <dependency>
-                       <groupId>org.apache.ant</groupId>
-                       <artifactId>ant</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.apache.commons</groupId>
-                       <artifactId>commons-io</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.dbunit</groupId>
-                       <artifactId>dbunit</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>junit</groupId>
-                       <artifactId>junit</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>hsqldb</groupId>
-                       <artifactId>hsqldb</artifactId>
-               </dependency>
-       </dependencies>
+               <dependency>\r
+                       <groupId>javax.activation</groupId>\r
+                       <artifactId>activation</artifactId>\r
+               </dependency>\r
+\r
+               <dependency>\r
+                       <groupId>org.apache.ant</groupId>\r
+                       <artifactId>ant</artifactId>\r
+               </dependency>\r
+               <dependency>\r
+                       <groupId>org.apache.commons</groupId>\r
+                       <artifactId>commons-io</artifactId>\r
+               </dependency>\r
+               <dependency>\r
+                       <groupId>org.dbunit</groupId>\r
+                       <artifactId>dbunit</artifactId>\r
+               </dependency>\r
+               <dependency>\r
+                       <groupId>junit</groupId>\r
+                       <artifactId>junit</artifactId>\r
+               </dependency>\r
+               <dependency>\r
+                       <groupId>hsqldb</groupId>\r
+                       <artifactId>hsqldb</artifactId>\r
+               </dependency>\r
+       </dependencies>\r
 </project>
\ No newline at end of file
index 7f0b30b2e2b4fa71112938b91ca2c5169d036d28..f2bedce400527b3f8ed0e484d75edf0e346355fe 100644 (file)
@@ -31,7 +31,8 @@ public class SlcExecutionBuildListener extends AppenderSkeleton implements
        // private Map<SlcExecution, SlcExecutionStep> currentStep = new\r
        // HashMap<SlcExecution, SlcExecutionStep>();\r
 \r
-       private SlcExecutionStep currentStep = null;\r
+       // private SlcExecutionStep currentStep = null;\r
+       private boolean currentStepNotified = true;\r
 \r
        public void init(Project project) {\r
                if (this.project != null) {\r
@@ -72,12 +73,13 @@ public class SlcExecutionBuildListener extends AppenderSkeleton implements
        public void messageLogged(BuildEvent event) {\r
                SlcExecution slcExecution = getSlcExecution(event);\r
                if (slcExecution != null) {\r
-                       if (currentStep == null) {\r
-                               currentStep = new SlcExecutionStep("LOG", event.getMessage());\r
-                               notifyStep(slcExecution, currentStep);\r
-                               currentStep = 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
-                               currentStep.addLog(event.getMessage());\r
+                               slcExecution.currentStep().addLog(event.getMessage());\r
                        }\r
                } else {\r
                        // TODO: log before initialization?\r
@@ -94,23 +96,24 @@ public class SlcExecutionBuildListener extends AppenderSkeleton implements
 \r
        public void taskStarted(BuildEvent event) {\r
                SlcExecution slcExecution = getSlcExecution(event);\r
-               if (currentStep != null) {\r
-                       notifyStep(slcExecution, currentStep);\r
-                       currentStep = null;\r
+               if (!currentStepNotified) {\r
+                       notifyStep(slcExecution, slcExecution.currentStep());\r
+                       currentStepNotified = true;\r
                }\r
 \r
-               currentStep = new SlcExecutionStep("LOG", "Task "\r
-                               + event.getTask().getTaskName() + " started");\r
+               slcExecution.getSteps().add(\r
+                               new SlcExecutionStep("LOG", "Task "\r
+                                               + event.getTask().getTaskName() + " started"));\r
+               currentStepNotified = false;\r
        }\r
 \r
        public void taskFinished(BuildEvent event) {\r
                SlcExecution slcExecution = getSlcExecution(event);\r
-               if (currentStep != null) {\r
-                       currentStep.addLog("Task " + event.getTask().getTaskName()\r
-                                       + " finished");\r
-                       slcExecution.getSteps().add(currentStep);\r
-                       notifyStep(slcExecution, currentStep);\r
-                       currentStep = null;\r
+               if (!currentStepNotified) {\r
+                       slcExecution.currentStep().addLog(\r
+                                       "Task " + event.getTask().getTaskName() + " finished");\r
+                       notifyStep(slcExecution, slcExecution.currentStep());\r
+                       currentStepNotified = true;\r
                }\r
        }\r
 \r
@@ -129,49 +132,15 @@ public class SlcExecutionBuildListener extends AppenderSkeleton implements
 \r
                if (slcExecution == null)\r
                        throw new SlcAntException("No SLC Execution registered.");\r
-\r
-               // if (slcExecution == null) {\r
-               // // for log4j\r
-               // this.project = project;\r
-               // if (!LogManager.getRootLogger().isAttached(this)) {\r
-               // LogManager.getRootLogger().addAppender(this);\r
-               // }\r
-               //                      \r
-               // slcExecution = new SlcExecution();\r
-               // slcExecution.setUuid(UUID.randomUUID().toString());\r
-               // try {\r
-               // slcExecution.setHost(InetAddress.getLocalHost().getHostName());\r
-               // } catch (UnknownHostException e) {\r
-               // slcExecution.setHost(SlcExecution.UNKOWN_HOST);\r
-               // }\r
-               //\r
-               // if (project.getReference(SlcProjectHelper.REF_ROOT_CONTEXT) != null)\r
-               // {\r
-               // slcExecution.setType(SLC_ANT_TYPE);\r
-               // } else {\r
-               // slcExecution.setType(ANT_TYPE);\r
-               // }\r
-               //\r
-               // slcExecution.setPath(project.getProperty("ant.file"));\r
-               // slcExecution.setStatus(SlcExecution.STATUS_RUNNING);\r
-               //\r
-               // project.addReference(REF_SLC_EXECUTION, slcExecution);\r
-               //\r
-               // for (SlcExecutionNotifier notifier : notifiers) {\r
-               // notifier.newExecution(slcExecution);\r
-               // }\r
-               //\r
-               // }\r
-\r
                return slcExecution;\r
        }\r
 \r
        protected void addLogStep(BuildEvent event, String msg) {\r
-               SlcExecutionStep step = new SlcExecutionStep("LOG", msg);\r
                SlcExecution slcExecution = getSlcExecution(event);\r
-               slcExecution.getSteps().add(step);\r
+               slcExecution.getSteps().add(new SlcExecutionStep("LOG", msg));\r
 \r
-               notifyStep(slcExecution, step);\r
+               notifyStep(slcExecution, slcExecution.currentStep());\r
+               currentStepNotified = true;\r
        }\r
 \r
        protected void notifyStep(SlcExecution slcExecution, SlcExecutionStep step) {\r
@@ -207,11 +176,14 @@ public class SlcExecutionBuildListener extends AppenderSkeleton implements
                        SlcExecution slcExecution = (SlcExecution) project\r
                                        .getReference(REF_SLC_EXECUTION);\r
                        if (slcExecution != null) {\r
-                               if (currentStep == null) {\r
-                                       currentStep = new SlcExecutionStep("LOG", event\r
-                                                       .getMessage().toString());\r
+                               if (currentStepNotified) {\r
+                                       slcExecution.getSteps().add(\r
+                                                       new SlcExecutionStep("LOG", event.getMessage()\r
+                                                                       .toString()));\r
+                                       currentStepNotified = false;\r
                                }\r
-                               currentStep.addLog(event.getMessage().toString());\r
+                               slcExecution.currentStep()\r
+                                               .addLog(event.getMessage().toString());\r
                        } else {\r
                                // TODO: log before initialization?\r
                        }\r
index 0f2d1b66c11e65faacb6468f74112a5d27296c89..5b9b995cdc389c8db67d9bfec19ef5d11b05f1f2 100644 (file)
@@ -68,6 +68,13 @@ public class SlcExecution {
                this.status = status;\r
        }\r
 \r
+       public SlcExecutionStep currentStep() {\r
+               if (steps.size() > 0)\r
+                       return steps.get(steps.size() - 1);\r
+               else\r
+                       return null;\r
+       }\r
+\r
        @Override\r
        public boolean equals(Object obj) {\r
                if (obj instanceof SlcExecution) {\r