]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java
Revert HSQL DB changes (still force shutdown, but reuse connection)
[gpl/argeo-slc.git] / org.argeo.slc / src / main / java / org / argeo / slc / ant / SlcProjectHelper.java
index 8fdefc23f7b61e612792148c939b279df4aa6eac..07678c6ab1d16f2a4b6b9f619138605a076deab7 100644 (file)
@@ -7,7 +7,7 @@ import java.util.List;
 import java.util.Properties;\r
 import java.util.Vector;\r
 \r
-import org.springframework.context.ApplicationContext;\r
+import org.springframework.context.support.AbstractApplicationContext;\r
 import org.springframework.context.support.FileSystemXmlApplicationContext;\r
 \r
 import org.apache.commons.logging.Log;\r
@@ -17,8 +17,8 @@ import org.apache.tools.ant.Project;
 import org.apache.tools.ant.helper.ProjectHelperImpl;\r
 \r
 import org.argeo.slc.core.structure.DefaultSRegistry;\r
+import org.argeo.slc.core.structure.SimpleSElement;\r
 import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.structure.tree.TreeSElement;\r
 import org.argeo.slc.core.structure.tree.TreeSPath;\r
 \r
 /**\r
@@ -26,7 +26,7 @@ import org.argeo.slc.core.structure.tree.TreeSPath;
  * application context and a structure registry with the Ant project.\r
  */\r
 public class SlcProjectHelper extends ProjectHelperImpl {\r
-       private static Log log = LogFactory.getLog(SlcProjectHelper.class);\r
+       private static Log log ;\r
 \r
        public static String REF_ROOT_CONTEXT = "slcApplicationContext";\r
        public static String REF_STRUCTURE_REGISTRY = "slcStructureRegistry";\r
@@ -37,7 +37,6 @@ public class SlcProjectHelper extends ProjectHelperImpl {
 \r
        @Override\r
        public void parse(Project project, Object source) throws BuildException {\r
-               log.debug("Entered SLC project helper");\r
 \r
                // look for root file\r
                File projectBaseDir = project.getBaseDir();\r
@@ -46,24 +45,28 @@ public class SlcProjectHelper extends ProjectHelperImpl {
                        throw new SlcAntException("Cannot find SLC root file");\r
                }\r
                SlcAntConfig.initProject(project, slcRootFile);\r
+               \r
+               if(log == null){\r
+                       // log4j is initialized only now\r
+                       log = LogFactory.getLog(SlcProjectHelper.class);\r
+               }\r
+               log.debug("SLC properties are set, starting initialization..");\r
 \r
                // init Spring application context\r
-               String acPath = project\r
-                               .getUserProperty(SlcAntConfig.APPLICATION_CONTEXT_PROPERTY);\r
-               ApplicationContext context = new FileSystemXmlApplicationContext(acPath);\r
-               project.addReference(REF_ROOT_CONTEXT, context);\r
-\r
-               // init structure register if it does not exist\r
+               initSpringContext(project);\r
+               \r
+               // init structure registry\r
                DefaultSRegistry registry = new DefaultSRegistry();\r
                project.addReference(REF_STRUCTURE_REGISTRY, registry);\r
 \r
                // call the underlying implementation to do the actual work\r
                super.parse(project, source);\r
 \r
-               addSlcTasks(project);\r
-\r
                // create structure root\r
                registerProjectAndParents(project);\r
+\r
+               addSlcTasks(project);\r
+\r
        }\r
 \r
        private void registerProjectAndParents(Project project) {\r
@@ -100,7 +103,7 @@ public class SlcProjectHelper extends ProjectHelperImpl {
                                                        .getDescription() : "";\r
                                }\r
                        }\r
-                       TreeSElement element = new TreeSElement(description);\r
+                       SimpleSElement element = new SimpleSElement(description);\r
 \r
                        if (dir.equals(rootDir)) {\r
                                currPath = TreeSPath.createRootPath(rootDir.getName());\r
@@ -132,6 +135,15 @@ public class SlcProjectHelper extends ProjectHelperImpl {
                }\r
        }\r
 \r
+       private void initSpringContext(Project project) {\r
+               System.getProperties().putAll(project.getProperties());\r
+               String acPath = project\r
+                               .getUserProperty(SlcAntConfig.APPLICATION_CONTEXT_PROPERTY);\r
+               AbstractApplicationContext context = new FileSystemXmlApplicationContext(acPath);\r
+               context.registerShutdownHook();\r
+               project.addReference(REF_ROOT_CONTEXT, context);\r
+       }\r
+\r
        private void addSlcTasks(Project project) {\r
                Properties taskdefs = new Properties();\r
                try {\r