Author: cbegin
Date: Wed Jun 10 03:34:14 2009
New Revision: 783195
URL: http://svn.apache.org/viewvc?rev=783195&view=rev
Log:
Added missing EOL terminator to script runner.
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptMissingEOLTerminator.sql
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptRunnerTest.java
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java?rev=783195&r1=783194&r2=783195&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java
Wed Jun 10 03:34:14 2009
@@ -145,6 +145,9 @@
if (!autoCommit && !conn.getAutoCommit()) {
conn.commit();
}
+ if (command != null && command.toString().trim().length() > 0) {
+ throw new IOException("Line missing end-of-line terminator
("+delimiter+") => " + command);
+ }
} catch (SQLException e) {
e.fillInStackTrace();
printlnError("Error executing: " + command);
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptMissingEOLTerminator.sql
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptMissingEOLTerminator.sql?rev=783195&view=auto
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptMissingEOLTerminator.sql
(added)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptMissingEOLTerminator.sql
Wed Jun 10 03:34:14 2009
@@ -0,0 +1,12 @@
+drop table product;
+
+create table product (
+ productid varchar(10) not null,
+ category varchar(10) not null,
+ name varchar(80) null,
+ descn varchar(255) null,
+ constraint pk_product primary key (productid),
+ constraint fk_product_1 foreign key (category)
+ references category (catid)
+)
+
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptRunnerTest.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptRunnerTest.java?rev=783195&r1=783194&r2=783195&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptRunnerTest.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/ScriptRunnerTest.java
Wed Jun 10 03:34:14 2009
@@ -4,11 +4,11 @@
import org.apache.ibatis.datasource.pooled.PooledDataSource;
import org.apache.ibatis.datasource.unpooled.UnpooledDataSource;
import org.apache.ibatis.io.Resources;
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.*;
import org.junit.Test;
import javax.sql.DataSource;
-import java.io.IOException;
+import java.io.*;
import java.sql.*;
import java.util.*;
@@ -44,6 +44,28 @@
assertProductsTableExistsAndLoaded();
}
+ @Test
+ public void shouldReturnWarningIfEndOfLineTerminatorNotFound() throws
Exception {
+ DataSource ds = createUnpooledDataSource(JPETSTORE_PROPERTIES);
+ Connection conn = ds.getConnection();
+ ScriptRunner runner = new ScriptRunner(conn);
+ runner.setAutoCommit(true);
+ runner.setStopOnError(false);
+ runner.setErrorLogWriter(null);
+ runner.setLogWriter(null);
+
+ String resource = "org/apache/ibatis/jdbc/ScriptMissingEOLTerminator.sql";
+ Reader reader = Resources.getResourceAsReader(resource);
+
+ try {
+ runner.runScript(reader);
+ fail("Expected script runner to fail due to missing end of line
terminator.");
+ } catch (Exception e) {
+ assertTrue(e.getMessage().contains("end-of-line terminator"));
+ }
+ assertProductsTableNotExists();
+ }
+
private void runJPetStoreScripts(ScriptRunner runner) throws IOException,
SQLException {
runScript(runner, JPETSTORE_DDL);
runScript(runner, JPETSTORE_DATA);
@@ -61,4 +83,19 @@
}
}
+ private void assertProductsTableNotExists() throws IOException, SQLException
{
+ PooledDataSource ds = createPooledDataSource(JPETSTORE_PROPERTIES);
+ try {
+ Connection conn = ds.getConnection();
+ SqlRunner executor = new SqlRunner(conn);
+ List<Map<String, Object>> products = executor.selectAll("SELECT * FROM
PRODUCT");
+ assertEquals(16, products.size());
+ } catch (Exception e) {
+ return; // ignore, exception expected
+ } finally {
+ ds.forceCloseAll();
+ }
+ fail("Expected products table to NOT exist.");
+ }
+
}