Revert HSQL DB changes (still force shutdown, but reuse connection)
authorMathieu Baudier <mbaudier@argeo.org>
Tue, 30 Oct 2007 18:52:08 +0000 (18:52 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Tue, 30 Oct 2007 18:52:08 +0000 (18:52 +0000)
Improve log4j management

git-svn-id: https://svn.argeo.org/slc/trunk@678 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcAntConfig.java
org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java
org.argeo.slc/src/main/java/org/argeo/slc/core/structure/SimpleSElement.java
org.argeo.slc/src/main/java/org/argeo/slc/core/test/tree/AsynchronousTreeTestResultListener.java
org.argeo.slc/src/test/java/org/argeo/slc/example/junit/TestAntBuild.java
org.argeo.slc/src/test/slc/conf/data.xml
org.argeo.slc/src/test/slc/conf/slc.xml
org.argeo.slc/src/test/slc/root/Category1/SubCategory2/build.xml

index 2487b20eafec7467836010ad266d817eebb0cab0..124aa0d216744d5fadb345dd3fe1583904ffb0c3 100644 (file)
@@ -6,6 +6,8 @@ import java.io.IOException;
 import java.util.Properties;\r
 import java.util.StringTokenizer;\r
 \r
+import org.springframework.util.Log4jConfigurer;\r
+\r
 import org.apache.tools.ant.Project;\r
 \r
 /** Load reference to directories from an slcRoot.properties file */\r
@@ -95,7 +97,7 @@ public class SlcAntConfig {
                                        PROPERTY_FILE_NAMES_PROPERTY, "slc.properties"), ",");\r
                        while (st.hasMoreTokens()) {\r
                                String fileName = st.nextToken();\r
-                               properties.putAll(loadFile(confDir.getAbsolutePath() + "/"\r
+                               properties.putAll(loadFile(confDir.getAbsolutePath() + File.separator\r
                                                + fileName));\r
                        }\r
 \r
@@ -117,6 +119,17 @@ public class SlcAntConfig {
                                all.setProperty(DEFAULT_TEST_RUN_PROPERTY, "defaultTestRun");\r
                        }\r
 \r
+                       // Default log4j\r
+                       if (all.getProperty("log4j.configuration") == null) {\r
+                               System.setProperty("log4j.configuration",confDir\r
+                                               .getCanonicalPath()\r
+                                               + File.separator + "log4j.properties" );\r
+                               // TODO: fix dependency to log4j\r
+                               Log4jConfigurer.initLogging(confDir\r
+                                               .getCanonicalPath()\r
+                                               + File.separator + "log4j.properties");\r
+                       }\r
+\r
                        return all;\r
                } catch (Exception e) {\r
                        throw new SlcAntException("Unexpected exception while configuring",\r
index a56a35455f4ca687fff236550f3bf45f48324d82..07678c6ab1d16f2a4b6b9f619138605a076deab7 100644 (file)
@@ -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,6 +45,12 @@ 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
                initSpringContext(project);\r
index 9dcf716614df7a14545e7b797167b75a16324891..7e6023a3dc1174620b39b54bc597edc853ec6d9e 100644 (file)
@@ -1,5 +1,7 @@
 package org.argeo.slc.core.structure;\r
 \r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+\r
 /**\r
  * Implementation of <code>StructureElement</code> for tree based registries,\r
  * using <code>TreeSPath</code>\r
index 4a86aa2b4e657d6216963bc0822a0327d94fd062..6440fd2d1b765f6eadf8e36a5914749a9040d67a 100644 (file)
@@ -18,25 +18,19 @@ public abstract class AsynchronousTreeTestResultListener implements
                thread.start();\r
        }\r
 \r
-       public void destroy() {\r
-               thread = null;\r
-               synchronized (partStructs) {\r
-                       partStructs.notifyAll();\r
-               }\r
-       }\r
-       \r
-       /** Finish the remaining and destroy*/\r
-       public void close(){\r
+       /** Finish the remaining and destroy */\r
+       public void close() {\r
                synchronized (partStructs) {\r
                        // TODO: put a timeout\r
                        while (partStructs.size() != 0) {\r
                                try {\r
-                                       partStructs.wait();\r
+                                       partStructs.wait(500);\r
                                } catch (InterruptedException e) {\r
                                        // silent\r
                                }\r
                        }\r
-                       destroy();\r
+                       thread = null;\r
+                       partStructs.notifyAll();\r
                }\r
        }\r
 \r
@@ -73,7 +67,6 @@ public abstract class AsynchronousTreeTestResultListener implements
                }\r
        }\r
 \r
-\r
        protected static class PartStruct {\r
                public final TreeSPath path;\r
                public final NumericTRId resultId;\r
index 37440b6a0aad10dc4675821491ee4a604fb8f4c9..1894b5a5a097d8b13c15dd775b162801802eecc7 100644 (file)
@@ -2,15 +2,13 @@ package org.argeo.slc.example.junit;
 \r
 import java.io.File;\r
 \r
-import org.argeo.slc.ant.AntRegistryUtil;\r
-\r
 import junit.framework.TestCase;\r
 \r
+import org.argeo.slc.ant.AntRegistryUtil;\r
+\r
 public class TestAntBuild extends TestCase {\r
        public void testAllRunSimple() {\r
                File slcBaseDir = new File("./src/test/slc").getAbsoluteFile();\r
-               System.setProperty("log4j.configuration", "file:///"+slcBaseDir.getPath()\r
-                               + "/conf/log4j.properties");\r
 \r
                File antFile = new File(slcBaseDir.getPath()\r
                                + "/root/Category1/SubCategory2/build.xml");\r
index db94ba5278580a08035b8c20ecf780130bef7340..6688a83c6971b85e65773056ffed95db603547c5 100644 (file)
@@ -5,13 +5,14 @@
 \r
        <!-- Results -->\r
        <bean id="dataSourceResults"\r
-               class="org.springframework.jdbc.datasource.DriverManagerDataSource"\r
-               >\r
+               class="org.springframework.jdbc.datasource.SingleConnectionDataSource"\r
+               destroy-method="destroy">\r
                <property name="driverClassName" value="org.hsqldb.jdbcDriver" />\r
                <property name="url"\r
-                       value="jdbc:hsqldb:file:${slc.workDir}/results/hsqldb/db" />\r
+                       value="jdbc:hsqldb:file:${slc.workDir}/results/hsqldb/db;shutdown=true" />\r
                <property name="username" value="sa" />\r
                <property name="password" value="" />\r
+               <property name="suppressClose" value="true" />\r
        </bean>\r
 \r
        <bean id="sessionFactoryResults"\r
                        <value>\r
                                hibernate.dialect=org.hibernate.dialect.HSQLDialect\r
                                cache.provider_class=org.hibernate.cache.NoCacheProvider\r
-                               cache.use_query_cache=false\r
-                               cache.use_minimal_puts=false\r
-                               max_fetch_depth=3\r
-                               current_session_context_class=thread\r
+                               cache.use_query_cache=false cache.use_minimal_puts=false\r
+                               max_fetch_depth=3 current_session_context_class=thread\r
                                hibernate.hbm2ddl.auto=update\r
                        </value>\r
                </property>\r
index 104864836bc7754718723382967935d8645829ff..879c75a12a90cfc8a7397efcc9ed70e61da8162f 100644 (file)
@@ -22,7 +22,7 @@
 \r
        <bean id="testResult2"\r
                class="org.argeo.slc.core.test.tree.TreeTestResult"\r
-               destroy-method="close">\r
+               >\r
                <property name="numericResultId" ref="testResultId" />\r
                <property name="listeners">\r
                        <list>\r
 \r
        <bean id="resultLogger"\r
                class="org.argeo.slc.core.test.tree.TreeTestResultLogger"\r
-               init-method="init" destroy-method="destroy">\r
+               init-method="init">\r
        </bean>\r
 \r
        <bean id="resultPersister"\r
                class="org.argeo.slc.core.test.tree.TreeTestResultPersister"\r
-               init-method="init" destroy-method="destroy">\r
+               init-method="init">\r
                <property name="testResultDao" ref="testResultDao" />\r
        </bean>\r
 \r
index a33c4b8c6e497a8037949adfcc8587d489d0af0c..734efcbe279274373c2a7e400326c26ef8438990 100644 (file)
@@ -3,6 +3,7 @@
 \r
        <target name="test" depends="testSimple,testComplex">\r
                <slc.closeResult result="testResult" report="report" />\r
+               <slc.closeResult result="testResult2" report="report" />\r
        </target>\r
 \r
        <target name="testSimple" description="Simple tests">\r