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();


Reply via email to