Author: cbegin Date: Fri Aug 22 22:20:02 2008 New Revision: 688262 URL: http://svn.apache.org/viewvc?rev=688262&view=rev Log: Introduced new migration repository directory structure Refactored commands Added dynamic driver loading
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/template_README Modified: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/common/jdbc/ScriptRunner.java ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/adhoc/AdHocExecutor.java ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/ScriptRunner.java ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/InitializeCommand.java ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/NewCommand.java ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/RunCommand.java ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/UndoCommand.java ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/template_environment.properties ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/scripts/migrate ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/scripts/migrate.cmd ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/BaseDataTest.java ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/migration/ScriptRunnerTest.java Modified: ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/common/jdbc/ScriptRunner.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/common/jdbc/ScriptRunner.java?rev=688262&r1=688261&r2=688262&view=diff ============================================================================== --- ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/common/jdbc/ScriptRunner.java (original) +++ ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/common/jdbc/ScriptRunner.java Fri Aug 22 22:20:02 2008 @@ -5,10 +5,6 @@ public class ScriptRunner extends org.apache.ibatis.migration.ScriptRunner { - public ScriptRunner(DataSource dataSource, boolean autoCommit, boolean stopOnError) { - super(dataSource, autoCommit, stopOnError); - } - public ScriptRunner(Connection connection, boolean autoCommit, boolean stopOnError) { super(connection, autoCommit, stopOnError); } Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/adhoc/AdHocExecutor.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/adhoc/AdHocExecutor.java?rev=688262&r1=688261&r2=688262&view=diff ============================================================================== --- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/adhoc/AdHocExecutor.java (original) +++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/adhoc/AdHocExecutor.java Fri Aug 22 22:20:02 2008 @@ -13,18 +13,36 @@ private TypeHandlerRegistry typeHandlerRegistry; private boolean forceGeneratedKeySupport = false; + public AdHocExecutor(Connection connection) { + this(connection, false); + } + public AdHocExecutor(Connection connection, boolean forceGeneratedKeySupport) { this.connection = connection; this.typeHandlerRegistry = new TypeHandlerRegistry(); this.forceGeneratedKeySupport = forceGeneratedKeySupport; } + public AdHocExecutor(String driver, String url, String username, String password) { + this(driver,url,username,password,false,null); + } + public AdHocExecutor(String driver, String url, String username, String password, boolean forceGeneratedKeySupport) { + this(driver,url,username,password,forceGeneratedKeySupport,null); + } + + public AdHocExecutor(String driver, String url, String username, String password, boolean forceGeneratedKeySupport, ClassLoader driverClassLoader) { try { - Class driverType = Class.forName(driver); - DriverManager.registerDriver((Driver) driverType.newInstance()); + Class driverType; + if (driverClassLoader != null) { + driverType = Class.forName(driver, true, driverClassLoader); + } else { + driverType = Class.forName(driver); + } + Driver driverInstance = (Driver) driverType.newInstance(); + DriverProxy driverProxy = new DriverProxy(driverInstance); + DriverManager.registerDriver(driverProxy); connection = DriverManager.getConnection(url, username, password); - this.connection = connection; this.typeHandlerRegistry = new TypeHandlerRegistry(); this.forceGeneratedKeySupport = forceGeneratedKeySupport; } catch (Exception e) { @@ -32,10 +50,6 @@ } } - public AdHocExecutor(Connection connection) { - this(connection, false); - } - /** * Executes a SELECT statement that returns one row. * @@ -231,4 +245,29 @@ } } + private static class DriverProxy implements Driver { + private Driver driver; + DriverProxy(Driver d) { + this.driver = d; + } + public boolean acceptsURL(String u) throws SQLException { + return this.driver.acceptsURL(u); + } + public Connection connect(String u, Properties p) throws SQLException { + return this.driver.connect(u, p); + } + public int getMajorVersion() { + return this.driver.getMajorVersion(); + } + public int getMinorVersion() { + return this.driver.getMinorVersion(); + } + public DriverPropertyInfo[] getPropertyInfo(String u, Properties p) throws SQLException { + return this.driver.getPropertyInfo(u, p); + } + public boolean jdbcCompliant() { + return this.driver.jdbcCompliant(); + } + } + } Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/ScriptRunner.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/ScriptRunner.java?rev=688262&r1=688261&r2=688262&view=diff ============================================================================== --- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/ScriptRunner.java (original) +++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/ScriptRunner.java Fri Aug 22 22:20:02 2008 @@ -1,15 +1,14 @@ package org.apache.ibatis.migration; -import javax.sql.DataSource; import java.io.*; import java.sql.*; +import java.util.Properties; public class ScriptRunner { private static final String DEFAULT_DELIMITER = ";"; - private DataSource dataSource; private Connection connection; private String driver; private String url; @@ -24,12 +23,7 @@ private String delimiter = DEFAULT_DELIMITER; private boolean fullLineDelimiter = false; - - public ScriptRunner(DataSource dataSource, boolean autoCommit, boolean stopOnError) { - this.dataSource = dataSource; - this.autoCommit = autoCommit; - this.stopOnError = stopOnError; - } + private ClassLoader driverClassLoader; public ScriptRunner(Connection connection, boolean autoCommit, boolean stopOnError) { this.connection = connection; @@ -46,6 +40,10 @@ this.stopOnError = stopOnError; } + public void setDriverClassLoader(ClassLoader loader) { + driverClassLoader = loader; + } + public void setDelimiter(String delimiter, boolean fullLineDelimiter) { this.delimiter = delimiter; this.fullLineDelimiter = fullLineDelimiter; @@ -61,23 +59,10 @@ public void runScript(Reader reader) throws IOException, SQLException { try { - if (dataSource != null) { - connection = dataSource.getConnection(); - try { - configureAutoCommitAndRun(reader); - } finally { - try { - connection.close(); - } finally { - connection = null; - } - } - } else if (connection != null) { + if (connection != null) { configureAutoCommitAndRun(reader); } else { - Class driverType = Class.forName(driver); - DriverManager.registerDriver((Driver) driverType.newInstance()); - connection = DriverManager.getConnection(url, username, password); + initConnection(); try { configureAutoCommitAndRun(reader); } finally { @@ -99,6 +84,18 @@ } } + private void initConnection() throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException { + Class driverType; + if (driverClassLoader != null) { + driverType = Class.forName(driver, true, driverClassLoader); + } else { + driverType = Class.forName(driver); + } + Driver driverInstance = (Driver) driverType.newInstance(); + DriverManager.registerDriver(new DriverProxy(driverInstance)); + connection = DriverManager.getConnection(url, username, password); + } + private void configureAutoCommitAndRun(Reader reader) throws SQLException, IOException { boolean originalAutoCommit = connection.getAutoCommit(); try { @@ -241,5 +238,29 @@ } } + private static class DriverProxy implements Driver { + private Driver driver; + DriverProxy(Driver d) { + this.driver = d; + } + public boolean acceptsURL(String u) throws SQLException { + return this.driver.acceptsURL(u); + } + public Connection connect(String u, Properties p) throws SQLException { + return this.driver.connect(u, p); + } + public int getMajorVersion() { + return this.driver.getMajorVersion(); + } + public int getMinorVersion() { + return this.driver.getMinorVersion(); + } + public DriverPropertyInfo[] getPropertyInfo(String u, Properties p) throws SQLException { + return this.driver.getPropertyInfo(u, p); + } + public boolean jdbcCompliant() { + return this.driver.jdbcCompliant(); + } + } } Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java?rev=688262&r1=688261&r2=688262&view=diff ============================================================================== --- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java (original) +++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java Fri Aug 22 22:20:02 2008 @@ -11,22 +11,29 @@ import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.io.*; +import java.net.*; public abstract class BaseCommand implements Command { protected static final PrintStream out = System.out; - protected File repository; + protected File basePath; + protected File envPath; + protected File scriptPath; + protected File driverPath; protected String environment; protected boolean force; + private ClassLoader driverClassLoader; protected BaseCommand(File repository, String environment, boolean force) { - this.repository = repository; + this.basePath = repository; + this.envPath = subdirectory(repository, "environments"); + this.scriptPath = subdirectory(repository, "scripts"); + this.driverPath = subdirectory(repository, "drivers"); this.environment = environment; this.force = force; } - protected Change parseChangeFromFilename(String filename) { try { Change change = new Change(); @@ -128,23 +135,28 @@ } protected AdHocExecutor getAdHocExecutor() { + lazyInitializeDrivers(); + Properties props = getEnvironmentProperties(); String driver = props.getProperty("driver"); String url = props.getProperty("url"); String username = props.getProperty("username"); String password = props.getProperty("password"); - return new AdHocExecutor(driver, url, username, password, false); + return new AdHocExecutor(driver, url, username, password, false, driverClassLoader); } protected ScriptRunner getScriptRunner() { try { + lazyInitializeDrivers(); + Properties props = getEnvironmentProperties(); String driver = props.getProperty("driver"); String url = props.getProperty("url"); String username = props.getProperty("username"); String password = props.getProperty("password"); - ScriptRunner scriptRunner = new ScriptRunner(driver, url, username, password, false, !force); PrintWriter outWriter = new PrintWriter(out); + ScriptRunner scriptRunner = new ScriptRunner(driver, url, username, password, false, !force); + scriptRunner.setDriverClassLoader(driverClassLoader); scriptRunner.setLogWriter(outWriter); scriptRunner.setErrorLogWriter(outWriter); return scriptRunner; @@ -153,12 +165,24 @@ } } - protected File repositoryFile(String fileName) { - return new File(repository.getAbsolutePath() + File.separator + fileName); + protected File baseFile(String fileName) { + return new File(basePath.getAbsolutePath() + File.separator + fileName); + } + + protected File environmentFile(String fileName) { + return new File(envPath.getAbsolutePath() + File.separator + fileName); + } + + protected File scriptFile(String fileName) { + return new File(scriptPath.getAbsolutePath() + File.separator + fileName); + } + + protected File driverFile(String fileName) { + return new File(driverPath.getAbsolutePath() + File.separator + fileName); } protected File environmentFile() { - return repositoryFile(environment + ".properties"); + return environmentFile(environment + ".properties"); } protected File existingEnvironmentFile() { @@ -169,6 +193,26 @@ return envFile; } + private void lazyInitializeDrivers() { + try { + if (driverClassLoader == null) { + List<URL> urlList = new ArrayList<URL>(); + for (File file : driverPath.listFiles()) { + URL url = new URL("jar:file:/" + file.getAbsolutePath() + "!/"); + urlList.add(url); + } + URL[] urls = urlList.toArray(new URL[urlList.size()]); + driverClassLoader = new URLClassLoader(urls); + } + } catch (IOException e) { + throw new MigrationException("Error loading JDBC drivers. Cause: " + e, e); + } + } + + private File subdirectory(File base, String sub) { + return new File(base.getAbsoluteFile() + File.separator + sub); + } + private Properties getEnvironmentProperties() { try { File file = existingEnvironmentFile(); Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/InitializeCommand.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/InitializeCommand.java?rev=688262&r1=688261&r2=688262&view=diff ============================================================================== --- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/InitializeCommand.java (original) +++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/InitializeCommand.java Fri Aug 22 22:20:02 2008 @@ -11,12 +11,19 @@ } public void execute(String... args) { - createDirectoryIfNecessary(repository); - ensureDirectoryIsEmpty(repository); - out.println("Initializing: " + repository); + out.println("Initializing: " + basePath); + + createDirectoryIfNecessary(basePath); + ensureDirectoryIsEmpty(basePath); + + createDirectoryIfNecessary(envPath); + createDirectoryIfNecessary(scriptPath); + createDirectoryIfNecessary(driverPath); + + copyResourceTo("org/apache/ibatis/migration/template_README", baseFile("README")); copyResourceTo("org/apache/ibatis/migration/template_environment.properties", environmentFile()); - copyResourceTo("org/apache/ibatis/migration/template_changelog.sql", repositoryFile(getTimestampAsString() + "_create_changelog.sql")); - copyResourceTo("org/apache/ibatis/migration/template_migration.sql", repositoryFile(getTimestampAsString() + "_first_migration.sql")); + copyResourceTo("org/apache/ibatis/migration/template_changelog.sql", scriptFile(getTimestampAsString() + "_create_changelog.sql")); + copyResourceTo("org/apache/ibatis/migration/template_migration.sql", scriptFile(getTimestampAsString() + "_first_migration.sql")); out.println("Done!"); } @@ -35,6 +42,7 @@ if (!path.exists()) { File parent = new File(path.getParent()); createDirectoryIfNecessary(parent); + out.println("Creating: " + path.getName()); if (!path.mkdir()) { throw new MigrationException("Could not create directory path for an unknown reason. Make sure you have access to the directory."); } Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/NewCommand.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/NewCommand.java?rev=688262&r1=688261&r2=688262&view=diff ============================================================================== --- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/NewCommand.java (original) +++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/NewCommand.java Fri Aug 22 22:20:02 2008 @@ -21,7 +21,7 @@ variables.put("description", description); existingEnvironmentFile(); String filename = getTimestampAsString() + "_" + description.replace(' ', '_') + ".sql"; - copyResourceTo("org/apache/ibatis/migration/template_migration.sql", repositoryFile(filename), variables); + copyResourceTo("org/apache/ibatis/migration/template_migration.sql", scriptFile(filename), variables); out.println("Done!"); } Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/RunCommand.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/RunCommand.java?rev=688262&r1=688261&r2=688262&view=diff ============================================================================== --- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/RunCommand.java (original) +++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/RunCommand.java Fri Aug 22 22:20:02 2008 @@ -19,7 +19,7 @@ public void execute(String... params) { try { - String[] filenames = repository.list(); + String[] filenames = scriptPath.list(); Arrays.sort(filenames); Change lastChange = null; if (changelogExists()) { @@ -31,7 +31,7 @@ if (lastChange == null || change.getId().compareTo(lastChange.getId()) > 0) { out.println(horizontalLine("Applying: " + filename, 80)); ScriptRunner runner = getScriptRunner(); - runner.runScript(new MigrationReader(new FileReader(repositoryFile(filename)), false)); + runner.runScript(new MigrationReader(new FileReader(scriptFile(filename)), false)); insertChangelog(change); } } Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/UndoCommand.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/UndoCommand.java?rev=688262&r1=688261&r2=688262&view=diff ============================================================================== --- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/UndoCommand.java (original) +++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/UndoCommand.java Fri Aug 22 22:20:02 2008 @@ -20,7 +20,7 @@ public void execute(String... params) { try { - String[] filenames = repository.list(); + String[] filenames = scriptPath.list(); reverse(filenames); Change lastChange = getLastChange(); for (String filename : filenames) { @@ -29,7 +29,7 @@ if (change.getId().equals(lastChange.getId())) { out.println(horizontalLine("Undoing: " + filename, 80)); ScriptRunner runner = getScriptRunner(); - runner.runScript(new MigrationReader(new FileReader(repositoryFile(filename)), true)); + runner.runScript(new MigrationReader(new FileReader(scriptFile(filename)), true)); if (changelogExists()) { deleteChange(change); } else { Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/template_README URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/template_README?rev=688262&view=auto ============================================================================== --- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/template_README (added) +++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/template_README Fri Aug 22 22:20:02 2008 @@ -0,0 +1,38 @@ +Welcome! + +This is an iBATIS Migration repository. You can specify the repository +directory when running migrations using the --path=<repos-directory> +option. The default path is the current working directory ("./"). + +The repository base directory contains three subdirectories as follows: + +./drivers + +Place your JDBC driver .jar or .zip files in this directory. Upon running a +migration, the drivers will be dynamically loaded. + +./environments + +In the environments folder you will find .properties files that represent +your database instances. By default a development.properties file is +created for you to configure your development time database properties. +You can also create test.properties and production.properties files. +The environment can be specified when running a migration by using +the --env=<environment> option (without the path or ".properties" part). + +The default environment is "development". + +./scripts + +This directory contains your migration SQL files. These are the files +that contain your DDL to both upgrade and downgrade your database +structure. By default, the directory will contain the script to +create the changelog table, plus one empty "first" migration script. +To create a new migration script, use the "new" command. To run +all pending migrations, use the "run" command. To undo the last +migration applied, use the "undo" command etc. + +For more information about commands and options, run the ibatis +migration script with the --help option. + +Enjoy. Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/template_environment.properties URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/template_environment.properties?rev=688262&r1=688261&r2=688262&view=diff ============================================================================== --- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/template_environment.properties (original) +++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/migration/template_environment.properties Fri Aug 22 22:20:02 2008 @@ -3,13 +3,3 @@ url= username= password= - -## The table containing the changelog. Defaults to 'changelog' -#changelog.table= - -## The schema the changelog can be found in. Default is null. -#changelog.schema= - -## The catalog the changelog can be found in. Default is null. -#changelog.catalog= - Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/scripts/migrate URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/scripts/migrate?rev=688262&r1=688261&r2=688262&view=diff ============================================================================== --- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/scripts/migrate (original) +++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/scripts/migrate Fri Aug 22 22:20:02 2008 @@ -1,9 +1,5 @@ #!/bin/sh IBATIS_LIB=/home/clinton/Development/ibatis-3/ibatis-3-core/target/classes -CURDIR=$(dirname $0) -JARS=$CURDIR/drivers/ -MYCP=$(ls $JARS/ | sed "s#^#$JARS&#" | sed "s/$/:/" | xargs echo | sed 's/: */:/') -MYCP="$MYCP:$IBATIS_LIB" -java -cp $MYCP org.apache.ibatis.migration.Migrator $* +java -cp $IBATIS_LIB org.apache.ibatis.migration.Migrator $* Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/scripts/migrate.cmd URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/scripts/migrate.cmd?rev=688262&r1=688261&r2=688262&view=diff ============================================================================== --- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/scripts/migrate.cmd (original) +++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/scripts/migrate.cmd Fri Aug 22 22:20:02 2008 @@ -1,5 +1,5 @@ @ECHO off -set IBATIS_LIB=/home/clinton/Development/ibatis-3/ibatis-3-core/target/classes +set IBATIS_LIB=D:\Development\ibatis-3\ibatis-3-core\target\classes java -cp %IBATIS_LIB% org.apache.ibatis.migration.Migrator %* Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/BaseDataTest.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/BaseDataTest.java?rev=688262&r1=688261&r2=688262&view=diff ============================================================================== --- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/BaseDataTest.java (original) +++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/BaseDataTest.java Fri Aug 22 22:20:02 2008 @@ -7,7 +7,7 @@ import javax.sql.DataSource; import java.io.*; -import java.sql.SQLException; +import java.sql.*; import java.util.Properties; public class BaseDataTest { @@ -31,9 +31,14 @@ } public static void runScript(DataSource ds, String resource) throws IOException, SQLException { - ScriptRunner runner = new ScriptRunner(ds, true, false); - runner.setLogWriter(null); - runScript(runner, resource); + Connection connection = ds.getConnection(); + try { + ScriptRunner runner = new ScriptRunner(connection, true, false); + runner.setLogWriter(null); + runScript(runner, resource); + } finally { + connection.close(); + } } public static void runScript(ScriptRunner runner, String resource) throws IOException, SQLException { Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/migration/ScriptRunnerTest.java URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/migration/ScriptRunnerTest.java?rev=688262&r1=688261&r2=688262&view=diff ============================================================================== --- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/migration/ScriptRunnerTest.java (original) +++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/migration/ScriptRunnerTest.java Fri Aug 22 22:20:02 2008 @@ -13,17 +13,6 @@ public class ScriptRunnerTest extends BaseDataTest { @Test - public void shouldRunScriptsUsingDataSource() throws Exception { - SimpleDataSource ds = createSimpleDataSource(JPETSTORE_PROPERTIES); - ScriptRunner runner = new ScriptRunner(ds, true, false); - runner.setDelimiter(";", false); - runner.setLogWriter(null); - runner.setErrorLogWriter(null); - runJPetStoreScripts(runner); - assertProductsTableExistsAndLoaded(); - } - - @Test public void shouldRunScriptsUsingConnection() throws Exception { SimpleDataSource ds = createSimpleDataSource(JPETSTORE_PROPERTIES); Connection conn = ds.getConnection();