X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fant%2FSlcProjectHelper.java;h=07678c6ab1d16f2a4b6b9f619138605a076deab7;hb=a29c28266fef35c1620f6582ec182bad7f7f85ae;hp=8fdefc23f7b61e612792148c939b279df4aa6eac;hpb=2052d0beab9c68880b3e8b0172a707274004b35f;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java index 8fdefc23f..07678c6ab 100644 --- a/org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java +++ b/org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java @@ -7,7 +7,7 @@ import java.util.List; import java.util.Properties; import java.util.Vector; -import org.springframework.context.ApplicationContext; +import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; import org.apache.commons.logging.Log; @@ -17,8 +17,8 @@ import org.apache.tools.ant.Project; import org.apache.tools.ant.helper.ProjectHelperImpl; import org.argeo.slc.core.structure.DefaultSRegistry; +import org.argeo.slc.core.structure.SimpleSElement; import org.argeo.slc.core.structure.StructureRegistry; -import org.argeo.slc.core.structure.tree.TreeSElement; import org.argeo.slc.core.structure.tree.TreeSPath; /** @@ -26,7 +26,7 @@ import org.argeo.slc.core.structure.tree.TreeSPath; * application context and a structure registry with the Ant project. */ public class SlcProjectHelper extends ProjectHelperImpl { - private static Log log = LogFactory.getLog(SlcProjectHelper.class); + private static Log log ; public static String REF_ROOT_CONTEXT = "slcApplicationContext"; public static String REF_STRUCTURE_REGISTRY = "slcStructureRegistry"; @@ -37,7 +37,6 @@ public class SlcProjectHelper extends ProjectHelperImpl { @Override public void parse(Project project, Object source) throws BuildException { - log.debug("Entered SLC project helper"); // look for root file File projectBaseDir = project.getBaseDir(); @@ -46,24 +45,28 @@ public class SlcProjectHelper extends ProjectHelperImpl { throw new SlcAntException("Cannot find SLC root file"); } SlcAntConfig.initProject(project, slcRootFile); + + if(log == null){ + // log4j is initialized only now + log = LogFactory.getLog(SlcProjectHelper.class); + } + log.debug("SLC properties are set, starting initialization.."); // init Spring application context - String acPath = project - .getUserProperty(SlcAntConfig.APPLICATION_CONTEXT_PROPERTY); - ApplicationContext context = new FileSystemXmlApplicationContext(acPath); - project.addReference(REF_ROOT_CONTEXT, context); - - // init structure register if it does not exist + initSpringContext(project); + + // init structure registry DefaultSRegistry registry = new DefaultSRegistry(); project.addReference(REF_STRUCTURE_REGISTRY, registry); // call the underlying implementation to do the actual work super.parse(project, source); - addSlcTasks(project); - // create structure root registerProjectAndParents(project); + + addSlcTasks(project); + } private void registerProjectAndParents(Project project) { @@ -100,7 +103,7 @@ public class SlcProjectHelper extends ProjectHelperImpl { .getDescription() : ""; } } - TreeSElement element = new TreeSElement(description); + SimpleSElement element = new SimpleSElement(description); if (dir.equals(rootDir)) { currPath = TreeSPath.createRootPath(rootDir.getName()); @@ -132,6 +135,15 @@ public class SlcProjectHelper extends ProjectHelperImpl { } } + private void initSpringContext(Project project) { + System.getProperties().putAll(project.getProperties()); + String acPath = project + .getUserProperty(SlcAntConfig.APPLICATION_CONTEXT_PROPERTY); + AbstractApplicationContext context = new FileSystemXmlApplicationContext(acPath); + context.registerShutdownHook(); + project.addReference(REF_ROOT_CONTEXT, context); + } + private void addSlcTasks(Project project) { Properties taskdefs = new Properties(); try {