X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fant%2FSlcProjectHelper.java;h=001ead97bd28db91d77d5bbea186bcde54aa4675;hb=9e1c13c89607d19f6f82e5e84d05e207fdaac3fe;hp=734fec04079698c4845732d07ab4ad50266752dc;hpb=7b4d35882e5a3843381d19c909d62077a924509b;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java index 734fec040..001ead97b 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java @@ -3,21 +3,29 @@ package org.argeo.slc.ant; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.net.InetAddress; +import java.net.UnknownHostException; import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.UUID; import java.util.Vector; +import org.springframework.beans.factory.ListableBeanFactory; +import org.springframework.context.ApplicationContext; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.log4j.LogManager; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.BuildListener; import org.apache.tools.ant.Project; import org.apache.tools.ant.helper.ProjectHelper2; +import org.argeo.slc.core.process.SlcExecution; +import org.argeo.slc.core.process.SlcExecutionNotifier; import org.argeo.slc.core.structure.DefaultSRegistry; import org.argeo.slc.core.structure.SimpleSElement; import org.argeo.slc.core.structure.StructureRegistry; @@ -160,10 +168,9 @@ public class SlcProjectHelper extends ProjectHelper2 { } /** Gets the path of a project (root). */ - private static TreeSPath getProjectPath(Project project) { - return (TreeSPath) project.getReference(REF_PROJECT_PATH); - } - + // private static TreeSPath getProjectPath(Project project) { + // return (TreeSPath) project.getReference(REF_PROJECT_PATH); + // } /** Initializes the Spring application context. */ private void initSpringContext(Project project) { System.getProperties().putAll((Map) project.getProperties()); @@ -178,12 +185,13 @@ public class SlcProjectHelper extends ProjectHelper2 { context.registerShutdownHook(); project.addReference(REF_ROOT_CONTEXT, context); + createAndRegisterSlcExecution(project); // Add build listeners declared in Spring context - Map listeners = context.getBeansOfType( - BuildListener.class, false, true); - for(BuildListener listener: listeners.values()){ - project.addBuildListener(listener); - } + // Map listeners = context.getBeansOfType( + // BuildListener.class, false, true); + // for (BuildListener listener : listeners.values()) { + // project.addBuildListener(listener); + // } } /** Loads the SLC specific Ant tasks. */ @@ -221,4 +229,38 @@ public class SlcProjectHelper extends ProjectHelper2 { } return defs; } + + protected static void createAndRegisterSlcExecution(Project project) { + SlcExecution slcExecution = new SlcExecution(); + slcExecution.setUuid(UUID.randomUUID().toString()); + try { + slcExecution.setHost(InetAddress.getLocalHost().getHostName()); + } catch (UnknownHostException e) { + slcExecution.setHost(SlcExecution.UNKOWN_HOST); + } + + if (project.getReference(SlcProjectHelper.REF_ROOT_CONTEXT) != null) { + slcExecution.setType(SlcExecutionBuildListener.SLC_ANT_TYPE); + } else { + slcExecution.setType(SlcExecutionBuildListener.ANT_TYPE); + } + + slcExecution.setUser(System.getProperty("user.name")); + slcExecution.setStatus(SlcExecution.STATUS_RUNNING); + slcExecution.getAttributes().put("ant.file", + project.getProperty("ant.file")); + + project.addReference(SlcExecutionBuildListener.REF_SLC_EXECUTION, + slcExecution); + + // Add build listeners declared in Spring context + Map listeners = ((ListableBeanFactory) project + .getReference(REF_ROOT_CONTEXT)).getBeansOfType( + ProjectRelatedBuildListener.class, false, true); + for (ProjectRelatedBuildListener listener : listeners.values()) { + listener.init(project); + project.addBuildListener(listener); + } + + } }