You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2006/10/17 23:16:34 UTC
svn commit: r465057 - in /incubator/roller/trunk: ./
metadata/database/hibernate/ sandbox/planetroller/
sandbox/planetroller/src/org/apache/roller/planet/business/hibernate/
sandbox/scripting/groovy/ src/org/apache/roller/business/hibernate/
src/org/ap...
Author: snoopdave
Date: Tue Oct 17 14:16:33 2006
New Revision: 465057
URL: http://svn.apache.org/viewvc?view=rev&rev=465057
Log:
Added TaskRunner so make it easier to run Roller tasks from the command line
and from cron or cron-like O/S facilities.
Added these properties to make the Hibernate dialect and config configurable
from a roller-custom.properties override file:
# Hibernate dialect: You must override this to use a database other than MySQL4
hibernate.dialect=org.hibernate.dialect.MySQLDialect
# Hibernate config resource (a classpath-based path)
# NO NEED TO OVERRIDE this unless you are customizing Roller
hibernate.configResource=/hibernate.cfg.xml
# JDBC configuration parameters for standalone tasks
# Don't override these in the roller-custom.properties file you use with the
# Roller webapp, but for the standalone tasks that you run outside of Roller
# (e.g. refresh entries) you'll need to override these properties. Do it in a
# separate roller-custom.properties file.
jdbc.driverClass=
jdbc.connectionURL=
jdbc.username=
jdbc.password=
And changed HibernateRollerImpl to use JDBC params if jdbc.driverClass is
not null or empty.
Added:
incubator/roller/trunk/src/org/apache/roller/business/runnable/TaskRunner.java
Removed:
incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/business/hibernate/PlanetHibernatePersistenceStrategy.java
incubator/roller/trunk/testdata/WEB-INF/classes/hibernate.cfg.xml
Modified:
incubator/roller/trunk/build.xml
incubator/roller/trunk/metadata/database/hibernate/hibernate.cfg.xml
incubator/roller/trunk/sandbox/planetroller/build.xml
incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/business/hibernate/HibernatePlanetImpl.java
incubator/roller/trunk/sandbox/scripting/groovy/run-groovy
incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernatePersistenceStrategy.java
incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernateRollerImpl.java
incubator/roller/trunk/testdata/roller-custom.properties
incubator/roller/trunk/web/WEB-INF/classes/roller.properties
Modified: incubator/roller/trunk/build.xml
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/build.xml?view=diff&rev=465057&r1=465056&r2=465057
==============================================================================
--- incubator/roller/trunk/build.xml (original)
+++ incubator/roller/trunk/build.xml Tue Oct 17 14:16:33 2006
@@ -872,8 +872,7 @@
includeantruntime="false"
debug="${build.debug}"
source="${build.sourcelevel}"
- deprecation="${build.deprecation}">
-
+ deprecation="${build.deprecation}">
<src path="${ro.tests}" />
&custom-src-tests;
@@ -883,7 +882,7 @@
&custom-jars;
</classpath>
</javac>
-
+
<!-- Copy test resources -->
<copy todir="${build.compile.tests}">
<fileset dir="${ro.tests}"
@@ -907,6 +906,11 @@
</fileset>
</copy>
+ <copy todir="${build.tests}/WEB-INF/classes">
+ <fileset dir="${basedir}/metadata/database/hibernate/"
+ includes="hibernate.cfg.xml" />
+ </copy>
+
<!--
Copy custom testing files which will overwrite some config files
-->
@@ -943,21 +947,21 @@
<formatter type="xml"/>
<batchtest toDir="${build.reports}/business/xml">
<fileset dir="${build.compile.tests}">
- <include name="org/apache/roller/business/BookmarkTest.class"/>
- <include name="org/apache/roller/business/UserTest.class"/>
- <include name="org/apache/roller/business/WeblogTest.class"/>
- <include name="org/apache/roller/business/PermissionTest.class"/>
- <include name="org/apache/roller/business/WeblogPageTest.class"/>
- <include name="org/apache/roller/business/PingsTest.class"/>
- <include name="org/apache/roller/business/PropertiesTest.class"/>
- <include name="org/apache/roller/business/WeblogEntryTest.class"/>
- <include name="org/apache/roller/business/WeblogCategoryTest.class"/>
- <include name="org/apache/roller/business/CommentTest.class"/>
- <include name="org/apache/roller/business/FileManagerTest.class"/>
- <include name="org/apache/roller/business/IndexManagerTest.class"/>
- <include name="org/apache/roller/business/PlanetManagerTest.class"/>
- <include name="org/apache/roller/business/RefererTest.class"/>
- <include name="org/apache/roller/business/PluginManagerTest.class"/>
+ <include name="org/apache/roller/business/BookmarkTest.class"/>
+ <include name="org/apache/roller/business/UserTest.class"/>
+ <include name="org/apache/roller/business/WeblogTest.class"/>
+ <include name="org/apache/roller/business/PermissionTest.class"/>
+ <include name="org/apache/roller/business/WeblogPageTest.class"/>
+ <include name="org/apache/roller/business/PingsTest.class"/>
+ <include name="org/apache/roller/business/PropertiesTest.class"/>
+ <include name="org/apache/roller/business/WeblogEntryTest.class"/>
+ <include name="org/apache/roller/business/WeblogCategoryTest.class"/>
+ <include name="org/apache/roller/business/CommentTest.class"/>
+ <include name="org/apache/roller/business/FileManagerTest.class"/>
+ <include name="org/apache/roller/business/IndexManagerTest.class"/>
+ <include name="org/apache/roller/business/PlanetManagerTest.class"/>
+ <include name="org/apache/roller/business/RefererTest.class"/>
+ <include name="org/apache/roller/business/PluginManagerTest.class"/>
</fileset>
</batchtest>
</junit>
Modified: incubator/roller/trunk/metadata/database/hibernate/hibernate.cfg.xml
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/metadata/database/hibernate/hibernate.cfg.xml?view=diff&rev=465057&r1=465056&r2=465057
==============================================================================
--- incubator/roller/trunk/metadata/database/hibernate/hibernate.cfg.xml (original)
+++ incubator/roller/trunk/metadata/database/hibernate/hibernate.cfg.xml Tue Oct 17 14:16:33 2006
@@ -21,53 +21,18 @@
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
-
- <!-- By default Roller uses a JNDI DataSource -->
+
+ <!-- You can override this via the jdbc.XXX properties in roller-custom.properties -->
<property name="connection.datasource">java:comp/env/jdbc/rollerdb</property>
+
+ <!-- You can override this via the hibernate.dialect property in roller-custom.properties -->
+ <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
+
<property name="show_sql">false</property>
-
+
<!-- use thread local Session context -->
<property name="hibernate.current_session_context_class">thread</property>
-
-
- <!-- select SQL dialect, MySQL 3.X or 4.X by default -->
- <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
- <!--
- If you want to use HSQLDB, PostgreSQL, DB2 or Derby, Oracle, SQLServer then use the right dialect
- <property name="dialect">org.hibernate.dialect.HQLDBDialect</property>
- <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
- <property name="dialect">org.hibernate.dialect.DB2Dialect</property>
- <property name="dialect">org.hibernate.dialect.DerbyDialect</property>
- <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
- <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
-
- For MySQL 5.X, use the MySQL5 dialect and J/Connector 3.1.X
- <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
- -->
-
- <!--
- Examples for configuring Hibernate to use the JDBC Driver Manager
- <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
- <property name="hibernate.connection.url">jdbc:hsqldb:hsql://localhost:3219</property>
- <property name="hibernate.connection.username">sa</property>
- <property name="hibernate.connection.password"></property>
- <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
- <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>
- <property name="hibernate.connection.url">
- jdbc:mysql://localhost/roller?user=roller&password=tiger</property>
- <property name="hibernate.connection.username">roller</property>
- <property name="hibernate.connection.password">tiger</property>
- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
-
- <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
- <property name="hibernate.connection.url">jdbc:postgresql://localhost/rollerdb</property>
- <property name="hibernate.connection.username">scott</property>
- <property name="hibernate.connection.password">tiger</property>
- <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
- -->
-
-
<!-- Hibernate L2 Caching -->
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
<property name="hibernate.generate_statistics">true</property>
Modified: incubator/roller/trunk/sandbox/planetroller/build.xml
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/planetroller/build.xml?view=diff&rev=465057&r1=465056&r2=465057
==============================================================================
--- incubator/roller/trunk/sandbox/planetroller/build.xml (original)
+++ incubator/roller/trunk/sandbox/planetroller/build.xml Tue Oct 17 14:16:33 2006
@@ -21,7 +21,7 @@
<property file="./ant.properties" />
- <fileset id="roller-jars" dir="${rollerjars.dir}">
+ <fileset id="roller-jars" dir="${rollersrc.dir}/build/webapp/WEB-INF/lib">
<include name="roller-business.jar"/>
<include name="hibernate3.jar"/>
Modified: incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/business/hibernate/HibernatePlanetImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/business/hibernate/HibernatePlanetImpl.java?view=diff&rev=465057&r1=465056&r2=465057
==============================================================================
--- incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/business/hibernate/HibernatePlanetImpl.java (original)
+++ incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/business/hibernate/HibernatePlanetImpl.java Tue Oct 17 14:16:33 2006
@@ -25,8 +25,6 @@
import org.apache.roller.planet.config.PlanetConfig;
import org.apache.roller.planet.model.PlanetManager;
import org.apache.roller.planet.model.Planet;
-import org.hibernate.cfg.Configuration;
-
/**
* A Hibernate specific implementation of the Roller business layer.
@@ -53,7 +51,7 @@
try {
if (StringUtils.isNotEmpty(PlanetConfig.getProperty("jdbc.driverClass"))) {
// create and configure for JDBC access
- strategy = new PlanetHibernatePersistenceStrategy(
+ strategy = new HibernatePersistenceStrategy(
PlanetConfig.getProperty("hibernate.configResource"),
PlanetConfig.getProperty("hibernate.dialect"),
PlanetConfig.getProperty("jdbc.driverClass"),
@@ -62,7 +60,9 @@
PlanetConfig.getProperty("jdbc.password"));
} else {
// create an configure via config resource only
- strategy = new HibernatePersistenceStrategy(true);
+ strategy = new HibernatePersistenceStrategy(
+ PlanetConfig.getProperty("hibernate.configResource"),
+ PlanetConfig.getProperty("hibernate.dialect"));
}
} catch(Throwable t) {
// if this happens then we are screwed
Modified: incubator/roller/trunk/sandbox/scripting/groovy/run-groovy
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/scripting/groovy/run-groovy?view=diff&rev=465057&r1=465056&r2=465057
==============================================================================
--- incubator/roller/trunk/sandbox/scripting/groovy/run-groovy (original)
+++ incubator/roller/trunk/sandbox/scripting/groovy/run-groovy Tue Oct 17 14:16:33 2006
@@ -1,8 +1,9 @@
#!/bin/bash
-export GROOVY_HOME=/Applications/Java/groovy
+export GROOVY_HOME=~/java/groovy
export ROLLER_HOME=~/roller_trunk/build/webapp
-export JDBCJAR=$CATALINA_HOME/common/lib/derbyclient.jar
+export JDBCJAR=$CATALINA_HOME/common/lib/mysql-connector-java-3.1.13-bin.jar
+#export JDBCJAR=$CATALINA_HOME/common/lib/derbyclient.jar
#export GROOVY_HOME=~/java/groovy
#export ROLLER_HOME=../../standalone/build/roller-demo/webapps/roller
Modified: incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernatePersistenceStrategy.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernatePersistenceStrategy.java?view=diff&rev=465057&r1=465056&r2=465057
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernatePersistenceStrategy.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernatePersistenceStrategy.java Tue Oct 17 14:16:33 2006
@@ -18,6 +18,7 @@
package org.apache.roller.business.hibernate;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
@@ -32,6 +33,11 @@
import org.apache.roller.pojos.Assoc;
import org.apache.roller.pojos.HierarchicalPersistentObject;
import org.apache.roller.pojos.PersistentObject;
+import org.jdom.Attribute;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.input.SAXBuilder;
+import org.jdom.output.DOMOutputter;
/**
@@ -52,18 +58,120 @@
public HibernatePersistenceStrategy() {
+ }
+
+ /**
+ * Construct self using Hibernate config resource and optional dialect.
+ * @param configResouce Classpath-based path to Hibernate config file (e.g. "/hibernate.cgf.xml")
+ * @parma dialect Classname of Hibernate dialect to be used (overriding any specified in the configResource)
+ */
+ public HibernatePersistenceStrategy(
+ String configResource,
+ String dialect) throws Exception {
+
+ // read configResource into DOM form
+ SAXBuilder builder = new SAXBuilder();
+ Document configDoc = builder.build(
+ getClass().getResourceAsStream(configResource));
+ Element root = configDoc.getRootElement();
+ Element sessionFactoryElem = root.getChild("session-factory");
+
+ // remove any existing connection.datasource and dialect properties
+ List propertyElems = sessionFactoryElem.getChildren("property");
+ List removeList = new ArrayList();
+ for (Iterator it = propertyElems.iterator(); it.hasNext();) {
+ Element elem = (Element) it.next();
+ if (elem.getAttribute("name") != null
+ && elem.getAttribute("name").getValue().equals("dialect")) {
+ removeList.add(elem);
+ }
+ }
+ for (Iterator it = removeList.iterator(); it.hasNext();) {
+ Element elem = (Element) it.next();
+ sessionFactoryElem.removeContent(elem);
+ }
+
+ // add Roller dialect property
+ Element prop = new Element("property").setAttribute(
+ new Attribute("name","dialect"));
+ prop.addContent(dialect);
+ sessionFactoryElem.addContent(prop);
+
+ Configuration config = new Configuration();
+ DOMOutputter outputter = new DOMOutputter();
+ config.configure(outputter.output(configDoc));
+ this.sessionFactory = config.buildSessionFactory();
}
- /**
- * Construct using Hibernate Session Factory.
+ /**
+ * Construct self using Hibernate config resource and optional dialect.
+ * @param configResouce Classpath-based path to Hibernate config file (e.g. "/hibernate.cgf.xml")
+ * @parma dialect Classname of Hibernate dialect to be used (or null to use one specified in configResource)
*/
- public HibernatePersistenceStrategy(boolean configure) throws Exception {
- if (configure) {
- log.debug("Initializing Hibernate SessionFactory");
- Configuration config = new Configuration();
- config.configure("/hibernate.cfg.xml");
- this.sessionFactory = config.buildSessionFactory();
+ public HibernatePersistenceStrategy(
+ String configResource,
+ String dialect,
+ String driverClass,
+ String connectionURL,
+ String username,
+ String password) throws Exception {
+
+ // read configResource into DOM form
+ SAXBuilder builder = new SAXBuilder();
+ Document configDoc = builder.build(
+ getClass().getResourceAsStream(configResource));
+ Element root = configDoc.getRootElement();
+ Element sessionFactoryElem = root.getChild("session-factory");
+
+ // remove any existing connection.datasource and dialect properties
+ List propertyElems = sessionFactoryElem.getChildren("property");
+ List removeList = new ArrayList();
+ for (Iterator it = propertyElems.iterator(); it.hasNext();) {
+ Element elem = (Element) it.next();
+ if (elem.getAttribute("name") != null
+ && elem.getAttribute("name").getValue().equals("connection.datasource")) {
+ removeList.add(elem);
+ }
+ if (elem.getAttribute("name") != null
+ && elem.getAttribute("name").getValue().equals("dialect")) {
+ removeList.add(elem);
+ }
+ }
+ for (Iterator it = removeList.iterator(); it.hasNext();) {
+ Element elem = (Element) it.next();
+ sessionFactoryElem.removeContent(elem);
}
+
+ // add JDBC connection params instead
+ Element prop = new Element("property").setAttribute(
+ new Attribute("name","hibernate.connection.driver_class"));
+ prop.addContent(driverClass);
+ sessionFactoryElem.addContent(prop);
+
+ prop = new Element("property").setAttribute(
+ new Attribute("name","hibernate.connection.url"));
+ prop.addContent(connectionURL);
+ sessionFactoryElem.addContent(prop);
+
+ prop = new Element("property").setAttribute(
+ new Attribute("name","hibernate.connection.username"));
+ prop.addContent(username);
+ sessionFactoryElem.addContent(prop);
+
+ prop = new Element("property").setAttribute(
+ new Attribute("name","hibernate.connection.password"));
+ prop.addContent(password);
+ sessionFactoryElem.addContent(prop);
+
+ prop = new Element("property").setAttribute(
+ new Attribute("name","dialect"));
+ prop.addContent(dialect);
+ sessionFactoryElem.addContent(prop);
+
+ Configuration config = new Configuration();
+ DOMOutputter outputter = new DOMOutputter();
+ config.configure(outputter.output(configDoc));
+ this.sessionFactory = config.buildSessionFactory();
}
Modified: incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernateRollerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernateRollerImpl.java?view=diff&rev=465057&r1=465056&r2=465057
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernateRollerImpl.java (original)
+++ incubator/roller/trunk/src/org/apache/roller/business/hibernate/HibernateRollerImpl.java Tue Oct 17 14:16:33 2006
@@ -18,11 +18,12 @@
package org.apache.roller.business.hibernate;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.RollerException;
import org.apache.roller.business.RollerImpl;
-import org.apache.roller.business.ThreadManagerImpl;
+import org.apache.roller.config.RollerConfig;
import org.apache.roller.model.BookmarkManager;
import org.apache.roller.model.ConfigManager;
import org.apache.roller.model.AutoPingManager;
@@ -68,7 +69,21 @@
protected HibernateRollerImpl() throws RollerException {
try {
- strategy = new HibernatePersistenceStrategy(true);
+ if (StringUtils.isNotEmpty(RollerConfig.getProperty("jdbc.driverClass"))) {
+ // create and configure for JDBC access
+ strategy = new HibernatePersistenceStrategy(
+ RollerConfig.getProperty("hibernate.configResource"),
+ RollerConfig.getProperty("hibernate.dialect"),
+ RollerConfig.getProperty("jdbc.driverClass"),
+ RollerConfig.getProperty("jdbc.connectionURL"),
+ RollerConfig.getProperty("jdbc.username"),
+ RollerConfig.getProperty("jdbc.password"));
+ } else {
+ // create an configure via config resource only
+ strategy = new HibernatePersistenceStrategy(
+ RollerConfig.getProperty("hibernate.configResource"),
+ RollerConfig.getProperty("hibernate.dialect"));
+ }
} catch(Throwable t) {
// if this happens then we are screwed
mLogger.fatal("Error initializing Hibernate", t);
Added: incubator/roller/trunk/src/org/apache/roller/business/runnable/TaskRunner.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/business/runnable/TaskRunner.java?view=auto&rev=465057
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/business/runnable/TaskRunner.java (added)
+++ incubator/roller/trunk/src/org/apache/roller/business/runnable/TaskRunner.java Tue Oct 17 14:16:33 2006
@@ -0,0 +1,110 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. The ASF licenses this file to You
+* under the Apache License, Version 2.0 (the "License"); you may not
+* use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License. For additional information regarding
+* copyright in this work, please see the NOTICE file in the top level
+* directory of this distribution.
+*/
+package org.apache.roller.business.runnable;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Sets up classpath for Roller and runs a task.
+ * Expects these JVM parameters:
+ * webapp.dir must specify Roller webapp directory
+ * jars.dir must specify additional jars directory (e.g. Tomcat commons/lib)
+ */
+public class TaskRunner {
+
+ public static String WEBAPP_DIR = "webapp.dir";
+ public static String JARS_DIR = "jars.dir";
+ public static String FS = File.separator;
+
+ public TaskRunner() {}
+
+ public static void main(String[] args) throws Exception {
+ if (args.length < 1) {
+ System.err.println("USAGE: java -Dwebapp.dir=WEBAPPDIR -Djars.dir=JARSDIR -cp roller-planet.jar TaskRunner CLASSNAME");
+ System.err.println("WEBAPPDIR: The directory path to the web application ");
+ System.err.println(" (e.g. $CATALINA_HOME/webapps/roller)");
+ System.err.println("JARSDIR: The directory path to the additional jars ");
+ System.err.println(" directory (e.g. $CATALINA_HOME/common/lib)");
+ System.err.println("CLASSNAME: The name of the class to be executed by TaskRunner ");
+ System.exit(-1);
+ }
+ String taskClassName = args[0];
+ String webappDir = System.getProperties().getProperty(WEBAPP_DIR);
+ String jarsDir = System.getProperties().getProperty(WEBAPP_DIR);
+ if (webappDir == null || jarsDir == null) {
+ System.err.println("ERROR: system properties webapp.dir and jars.dir not found");
+ System.exit(-1);
+ }
+
+ File webappDirFile = new File(webappDir);
+ File jarsDirFile = new File(jarsDir);
+ if (!webappDirFile.isDirectory() || !jarsDirFile.isDirectory()) {
+ System.err.println("ERROR: webapp.dir and jars.dir must specify existing directories");
+ System.exit(-1);
+ }
+
+ // Create collection of URLs needed for classloader
+ List urlList = new ArrayList();
+
+ // Add WEB-INF/lib jars
+ String libPath = webappDir + FS + "WEB-INF" + FS + "lib";
+ addURLs(libPath, urlList);
+
+ // Added WEB-INF/classes
+ String classesPath = System.getProperties().getProperty(WEBAPP_DIR)
+ + FS + "WEB-INF" + FS + "classes" + FS;
+ urlList.add(new URL("file://" + classesPath));
+
+ // Add additional jars
+ String jarsPath = System.getProperties().getProperty(JARS_DIR);
+ addURLs(jarsPath, urlList);
+
+ // Create classloader and make it load the task class to be run
+ URLClassLoader cl = URLClassLoader.newInstance(
+ (URL[])urlList.toArray(new URL[urlList.size()]), null);
+ Class taskClass = cl.loadClass(taskClassName);
+ Runnable task = (Runnable)taskClass.newInstance();
+
+ // We're using the new classloader from here on out
+ Thread.currentThread().setContextClassLoader(cl);
+
+ // Go!
+ task.run();
+ }
+
+ private static void addURLs(String dirPath, List urlList) throws Exception {
+ File libDir = new File(dirPath);
+ String[] libJarNames = libDir.list(new FilenameFilter() {
+ public boolean accept(File dir, String pathname) {
+ if (pathname.endsWith(".jar")) {
+ return true;
+ }
+ return false;
+ }
+ });
+ for (int i=0; i<libJarNames.length; i++) {
+ String url = "file://" + dirPath + FS + libJarNames[i];
+ urlList.add(new URL(url));
+ }
+ }
+}
Modified: incubator/roller/trunk/testdata/roller-custom.properties
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/testdata/roller-custom.properties?view=diff&rev=465057&r1=465056&r2=465057
==============================================================================
--- incubator/roller/trunk/testdata/roller-custom.properties (original)
+++ incubator/roller/trunk/testdata/roller-custom.properties Tue Oct 17 14:16:33 2006
@@ -1,3 +1,12 @@
+
# Uncomment this to use JDO backend
#persistence.roller.classname=org.apache.roller.business.JDO.JDORollerImpl
-search.index.dir=search-index
\ No newline at end of file
+
+search.index.dir=search-index
+
+jdbc.driverClass=org.hsqldb.jdbcDriver
+jdbc.connectionURL=jdbc:hsqldb:hsql://localhost:3219
+jdbc.username=sa
+jdbc.password=
+
+hibernate.dialect=org.hibernate.dialect.HSQLDialect
\ No newline at end of file
Modified: incubator/roller/trunk/web/WEB-INF/classes/roller.properties
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/web/WEB-INF/classes/roller.properties?view=diff&rev=465057&r1=465056&r2=465057
==============================================================================
--- incubator/roller/trunk/web/WEB-INF/classes/roller.properties (original)
+++ incubator/roller/trunk/web/WEB-INF/classes/roller.properties Tue Oct 17 14:16:33 2006
@@ -41,6 +41,26 @@
# RollerConfig.getProperty("propname");
#---------------------------------
+# Database configuration settings
+
+# Hibernate dialect: You must override this to use a database other than MySQL4
+hibernate.dialect=org.hibernate.dialect.MySQLDialect
+
+# Hibernate config resource (a classpath-based path)
+# NO NEED TO OVERRIDE this unless you are customizing Roller
+hibernate.configResource=/hibernate.cfg.xml
+
+# JDBC configuration parameters for standalone tasks
+# Don't override these in the roller-custom.properties file you use with the
+# Roller webapp, but for the standalone tasks that you run outside of Roller
+# (e.g. refresh entries) you'll need to override these properties. Do it in a
+# separate roller-custom.properties file.
+jdbc.driverClass=
+jdbc.connectionURL=
+jdbc.username=
+jdbc.password=
+
+#---------------------------------
# User management settings
# True to enable group blogging. False to prevent users from creating more