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
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
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
* 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
\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
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
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
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
}\r
}\r
\r
-\r
protected static class PartStruct {\r
public final TreeSPath path;\r
public final NumericTRId resultId;\r
\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
\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
\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
\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