svn commit: r902425 - in /ibatis/java/ibatis-3/trunk/ibatis-3-core/src: main/java/org/apache/ibatis/executor/resultset/ test/java/org/apache/ibatis/session/

2010-01-23 Thread cbegin
Author: cbegin
Date: Sat Jan 23 15:42:08 2010
New Revision: 902425

URL: http://svn.apache.org/viewvc?rev=902425view=rev
Log:
fixed ibatis-733 ResultContext.stop() has no effect

Modified:

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java?rev=902425r1=902424r2=902425view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/FastResultSetHandler.java
 Sat Jan 23 15:42:08 2010
@@ -12,10 +12,7 @@
 import org.apache.ibatis.mapping.*;
 import org.apache.ibatis.reflection.MetaObject;
 import org.apache.ibatis.reflection.factory.ObjectFactory;
-import org.apache.ibatis.session.Configuration;
-import org.apache.ibatis.session.ResultHandler;
-import org.apache.ibatis.session.RowBounds;
-import org.apache.ibatis.session.AutoMappingBehavior;
+import org.apache.ibatis.session.*;
 import org.apache.ibatis.type.TypeHandler;
 import org.apache.ibatis.type.TypeHandlerRegistry;
 
@@ -127,7 +124,7 @@
   protected void handleRowValues(ResultSet rs, ResultMap resultMap, 
ResultHandler resultHandler, RowBounds rowBounds) throws SQLException {
 final DefaultResultContext resultContext = new DefaultResultContext();
 skipRows(rs, rowBounds);
-while (shouldProcessMoreRows(rs, resultContext.getResultCount(), 
rowBounds)) {
+while (shouldProcessMoreRows(rs, resultContext, rowBounds)) {
   final ResultMap discriminatedResultMap = 
resolveDiscriminatedResultMap(rs, resultMap);
   Object rowValue = getRowValue(rs, discriminatedResultMap, null);
   resultContext.nextResultObject(rowValue);
@@ -135,8 +132,8 @@
 }
   }
 
-  protected boolean shouldProcessMoreRows(ResultSet rs, int count, RowBounds 
rowBounds) throws SQLException {
-return rs.next()  count  rowBounds.getLimit();
+  protected boolean shouldProcessMoreRows(ResultSet rs, ResultContext context, 
RowBounds rowBounds) throws SQLException {
+return rs.next()  context.getResultCount()  rowBounds.getLimit()  
!context.isStopped();
   }
 
   protected void skipRows(ResultSet rs, RowBounds rowBounds) throws 
SQLException {

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java?rev=902425r1=902424r2=902425view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/NestedResultSetHandler.java
 Sat Jan 23 15:42:08 2010
@@ -69,7 +69,7 @@
   protected void handleRowValues(ResultSet rs, ResultMap resultMap, 
ResultHandler resultHandler, RowBounds rowBounds) throws SQLException {
 final DefaultResultContext resultContext = new DefaultResultContext();
 skipRows(rs, rowBounds);
-while (shouldProcessMoreRows(rs, resultContext.getResultCount(), 
rowBounds)) {
+while (shouldProcessMoreRows(rs, resultContext, rowBounds)) {
   final ResultMap discriminatedResultMap = 
resolveDiscriminatedResultMap(rs, resultMap);
   final CacheKey rowKey = createRowKey(discriminatedResultMap, rs);
   final boolean knownValue = globalRowValueCache.containsKey(rowKey);

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java?rev=902425r1=902424r2=902425view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java
 Sat Jan 23 15:42:08 2010
@@ -464,6 +464,27 @@
 }
   }
 
+  private static class TestResultHandler implements ResultHandler {
+int count = 0;
+public void 

svn commit: r902485 - in /ibatis/java/ibatis-3/trunk/ibatis-3-core/src: main/java/org/apache/ibatis/session/ main/java/org/apache/ibatis/session/defaults/ test/java/org/apache/ibatis/session/

2010-01-23 Thread cbegin
Author: cbegin
Date: Sat Jan 23 20:43:08 2010
New Revision: 902485

URL: http://svn.apache.org/viewvc?rev=902485view=rev
Log:
added transaction isolation level support to sqlsessionfactory

Added:

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/TransactionIsolationLevel.java
Modified:

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSessionFactory.java

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSessionFactory.java

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/session/SqlSessionTest.java

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSessionFactory.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSessionFactory.java?rev=902485r1=902484r2=902485view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSessionFactory.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSessionFactory.java
 Sat Jan 23 20:43:08 2010
@@ -7,13 +7,12 @@
   SqlSession openSession();
 
   SqlSession openSession(boolean autoCommit);
-
   SqlSession openSession(Connection connection);
+  SqlSession openSession(TransactionIsolationLevel level);
 
   SqlSession openSession(ExecutorType execType);
-
   SqlSession openSession(ExecutorType execType, boolean autoCommit);
-
+  SqlSession openSession(ExecutorType execType, TransactionIsolationLevel 
level);
   SqlSession openSession(ExecutorType execType, Connection connection);
 
   Configuration getConfiguration();

Added: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/TransactionIsolationLevel.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/TransactionIsolationLevel.java?rev=902485view=auto
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/TransactionIsolationLevel.java
 (added)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/TransactionIsolationLevel.java
 Sat Jan 23 20:43:08 2010
@@ -0,0 +1,21 @@
+package org.apache.ibatis.session;
+
+import java.sql.Connection;
+
+public enum TransactionIsolationLevel {
+  NONE(Connection.TRANSACTION_NONE),
+  READ_COMMITTED(Connection.TRANSACTION_READ_COMMITTED),
+  READ_UNCOMMITTED(Connection.TRANSACTION_READ_UNCOMMITTED),
+  REPEATABLE_READ(Connection.TRANSACTION_REPEATABLE_READ),
+  SERIALIZABLE(Connection.TRANSACTION_SERIALIZABLE);
+
+  private final int level;
+
+  private TransactionIsolationLevel(int level) {
+this.level = level;
+  }
+
+  public int getLevel() {
+return level;
+  }
+}

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSessionFactory.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSessionFactory.java?rev=902485r1=902484r2=902485view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSessionFactory.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSessionFactory.java
 Sat Jan 23 20:43:08 2010
@@ -29,23 +29,50 @@
   }
 
   public SqlSession openSession() {
-return openSession(configuration.getDefaultExecutorType(), false);
+return openSessionFromDataSource(configuration.getDefaultExecutorType(), 
null, false);
   }
 
   public SqlSession openSession(boolean autoCommit) {
-return openSession(configuration.getDefaultExecutorType(), autoCommit);
+return openSessionFromDataSource(configuration.getDefaultExecutorType(), 
null, autoCommit);
   }
 
   public SqlSession openSession(ExecutorType execType) {
-return openSession(execType, false);
+return openSessionFromDataSource(execType, null, false);
+  }
+
+  public SqlSession openSession(TransactionIsolationLevel level) {
+return openSessionFromDataSource(configuration.getDefaultExecutorType(), 
level, false);
+  }
+
+  public SqlSession openSession(ExecutorType execType, 
TransactionIsolationLevel level) {
+return openSessionFromDataSource(execType, level, false);
   }
 
   public SqlSession openSession(ExecutorType execType, boolean autoCommit) {
+return openSessionFromDataSource(execType, null, autoCommit);
+  }
+
+  public SqlSession openSession(Connection connection) {
+return openSessionFromConnection(configuration.getDefaultExecutorType(), 
connection);
+  }
+

svn commit: r902494 - in /ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis: binding/MapperMethod.java binding/MapperProxy.java builder/annotation/MapperAnnotationBuilder.java

2010-01-23 Thread cbegin
Author: cbegin
Date: Sat Jan 23 21:31:01 2010
New Revision: 902494

URL: http://svn.apache.org/viewvc?rev=902494view=rev
Log:
ibatis-655  Mapper interface inheriatance support.

Modified:

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperProxy.java

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationBuilder.java

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java?rev=902494r1=902493r2=902494view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java
 Sat Jan 23 21:31:01 2010
@@ -22,6 +22,7 @@
   private SqlCommandType type;
   private String commandName;
 
+  private Class declaringInterface;
   private Method method;
 
   private boolean returnsList;
@@ -32,13 +33,14 @@
 
   private boolean hasNamedParameters;
 
-  public MapperMethod(Method method, SqlSession sqlSession) {
+  public MapperMethod(Class declaringInterface, Method method, SqlSession 
sqlSession) {
 paramNames = new ArrayListString();
 paramPositions = new ArrayListInteger();
 this.sqlSession = sqlSession;
 this.method = method;
 this.config = sqlSession.getConfiguration();
 this.hasNamedParameters = false;
+this.declaringInterface = declaringInterface;
 setupFields();
 setupMethodSignature();
 setupCommandType();
@@ -100,7 +102,7 @@
   // Setup //
 
   private void setupFields() {
-this.commandName = method.getDeclaringClass().getName() + . + 
method.getName();
+this.commandName = declaringInterface.getName() + . + method.getName();
   }
 
   private void setupMethodSignature() {

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperProxy.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperProxy.java?rev=902494r1=902493r2=902494view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperProxy.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperProxy.java
 Sat Jan 23 21:31:01 2010
@@ -26,14 +26,15 @@
   private T MapperProxy(SqlSession sqlSession) {
 this.sqlSession = sqlSession;
   }
-  
+
   public Object invoke(Object proxy, Method method, Object[] args) throws 
Throwable {
 try {
   if (!OBJECT_METHODS.contains(method.getName())) {
-final MapperMethod mapperMethod = new MapperMethod(method, sqlSession);
+final Class declaringInterface = findDeclaringInterface(proxy, method);
+final MapperMethod mapperMethod = new MapperMethod(declaringInterface, 
method, sqlSession);
 final Object result = mapperMethod.execute(args);
 if (result == null  method.getReturnType().isPrimitive()) {
-  throw new BindingException(Mapper method '+ method.getName()+' 
(+method.getDeclaringClass()+) attempted to return null from a method with a 
primitive return type (+method.getReturnType()+).);
+  throw new BindingException(Mapper method ' + method.getName() + ' 
( + method.getDeclaringClass() + ) attempted to return null from a method 
with a primitive return type ( + method.getReturnType() + ).);
 }
 return result;
   }
@@ -43,6 +44,28 @@
 return null;
   }
 
+  private Class findDeclaringInterface(Object proxy, Method method) {
+Class declaringInterface = null;
+for (Class iface : proxy.getClass().getInterfaces()) {
+  try {
+Method m = iface.getMethod(method.getName(), 
method.getParameterTypes());
+if (declaringInterface != null) {
+  throw new BindingException(Ambiguous method mapping.  Two mapper 
interfaces contain the identical method signature for  + method);
+} else if (m != null) {
+  declaringInterface = iface;
+}
+  } catch (Exception e) {
+// Intentionally ignore.
+// This is using exceptions for flow control,
+// but it's definitely faster.
+  }
+}
+if (declaringInterface == null) {
+  throw new BindingException(Could not find interface with the given 
method  + method);
+}
+return declaringInterface;
+  }
+
   public static T T newMapperProxy(ClassT mapperInterface, SqlSession 
sqlSession) {
 ClassLoader classLoader = mapperInterface.getClassLoader();
 Class[] 

svn commit: r902500 - in /ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis: executor/BaseExecutor.java executor/CachingExecutor.java executor/Executor.java session/SqlSession.j

2010-01-23 Thread cbegin
Author: cbegin
Date: Sat Jan 23 22:13:15 2010
New Revision: 902500

URL: http://svn.apache.org/viewvc?rev=902500view=rev
Log:
implemented ibatis 691 Ability to clear local cache

Modified:

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/Executor.java

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSession.java

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSession.java

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java?rev=902500r1=902499r2=902500view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BaseExecutor.java
 Sat Jan 23 22:13:15 2010
@@ -64,7 +64,7 @@
   public int update(MappedStatement ms, Object parameter) throws SQLException {
 ErrorContext.instance().resource(ms.getResource()).activity(executing an 
update).object(ms.getId());
 if (closed) throw new ExecutorException(Executor was closed.);
-localCache.clear();
+clearLocalCache();
 return doUpdate(ms, parameter);
   }
 
@@ -145,7 +145,7 @@
 if (closed) {
   throw new ExecutorException(Cannot commit, transaction is already 
closed);
 }
-localCache.clear();
+clearLocalCache();
 flushStatements();
 if (required) {
   transaction.commit();
@@ -154,13 +154,19 @@
 
   public void rollback(boolean required) throws SQLException {
 if (!closed) {
-  localCache.clear();
+  clearLocalCache();
   if (required) {
 transaction.rollback();
   }
 }
   }
 
+  public void clearLocalCache() {
+if (!closed) {
+  localCache.clear();
+}
+  }
+
   protected abstract int doUpdate(MappedStatement ms, Object parameter)
   throws SQLException;
 

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java?rev=902500r1=902499r2=902500view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/CachingExecutor.java
 Sat Jan 23 22:13:15 2010
@@ -97,6 +97,10 @@
 throw new UnsupportedOperationException(The CachingExecutor should not be 
used by result loaders and thus deferLoad() should never be called.);
   }
 
+  public void clearLocalCache() {
+delegate.clearLocalCache();
+  }
+
   private void flushCacheIfRequired(MappedStatement ms) {
 Cache cache = ms.getCache();
 if (cache != null) {

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/Executor.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/Executor.java?rev=902500r1=902499r2=902500view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/Executor.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/Executor.java
 Sat Jan 23 22:13:15 2010
@@ -28,6 +28,8 @@
 
   boolean isCached(MappedStatement ms, CacheKey key);
 
+  void clearLocalCache();
+
   void deferLoad(MappedStatement ms, MetaObject resultObject, String property, 
CacheKey key);
 
   Transaction getTransaction();

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSession.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSession.java?rev=902500r1=902499r2=902500view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSession.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSession.java
 Sat Jan 23 22:13:15 2010
@@ -41,6 +41,8 @@
 
   void close();
 
+  void clearCache();
+
   Configuration getConfiguration();
 
   T T getMapper(ClassT type);

Modified: 

svn commit: r902504 - in /ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis: jdbc/ScriptRunner.java migration/commands/BaseCommand.java migration/template_environment.properties

2010-01-23 Thread cbegin
Author: cbegin
Date: Sat Jan 23 22:55:22 2010
New Revision: 902504

URL: http://svn.apache.org/viewvc?rev=902504view=rev
Log:
IBATIS-728 Problem when a script is written in a different encode than the 
default

Modified:

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/template_environment.properties

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java?rev=902504r1=902503r2=902504view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/jdbc/ScriptRunner.java
 Sat Jan 23 22:55:22 2010
@@ -3,6 +3,7 @@
 import java.io.BufferedReader;
 import java.io.PrintWriter;
 import java.io.Reader;
+import java.io.UnsupportedEncodingException;
 import java.sql.*;
 
 public class ScriptRunner {
@@ -20,11 +21,16 @@
 
   private String delimiter = DEFAULT_DELIMITER;
   private boolean fullLineDelimiter = false;
+  private String characterSetName;
 
   public ScriptRunner(Connection connection) {
 this.connection = connection;
   }
 
+  public void setCharacterSetName(String characterSetName) {
+this.characterSetName = characterSetName;
+  }
+
   public void setStopOnError(boolean stopOnError) {
 this.stopOnError = stopOnError;
   }
@@ -149,7 +155,7 @@
 }
   }
 
-  private StringBuffer handleLine(StringBuffer command, String line) throws 
SQLException {
+  private StringBuffer handleLine(StringBuffer command, String line) throws 
SQLException, UnsupportedEncodingException {
 String trimmedLine = line.trim();
 if (lineIsComment(trimmedLine)) {
   println(trimmedLine);
@@ -175,7 +181,10 @@
 || fullLineDelimiter  trimmedLine.equals(delimiter);
   }
 
-  private void executeStatement(String command) throws SQLException {
+  private void executeStatement(String command) throws SQLException, 
UnsupportedEncodingException {
+if(characterSetName != null){
+  command = new String(command.getBytes(), characterSetName);
+}
 boolean hasResults = false;
 Statement statement = connection.createStatement();
 if (stopOnError) {

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java?rev=902504r1=902503r2=902504view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java
 Sat Jan 23 22:55:22 2010
@@ -191,10 +191,12 @@
   String url = props.getProperty(url);
   String username = props.getProperty(username);
   String password = props.getProperty(password);
+  String charSetName = props.getProperty(script_char_set);
   PrintWriter outWriter = new PrintWriter(out);
   UnpooledDataSource dataSource = new 
UnpooledDataSource(driverClassLoader, driver, url, username, password);
   dataSource.setAutoCommit(false);
   ScriptRunner scriptRunner = new ScriptRunner(dataSource.getConnection());
+  scriptRunner.setCharacterSetName(charSetName);
   scriptRunner.setStopOnError(!force);
   scriptRunner.setLogWriter(outWriter);
   scriptRunner.setErrorLogWriter(outWriter);

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/template_environment.properties
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/template_environment.properties?rev=902504r1=902503r2=902504view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/template_environment.properties
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/template_environment.properties
 Sat Jan 23 22:55:22 2010
@@ -1,6 +1,9 @@
 ## Base time zone to ensure times are consistent across machines
 time_zone=GMT+0:00
 
+## The character set that scripts are encoded with
+# script_char_set=UTF-8
+
 ## JDBC connection properties.
 driver=
 url=




svn commit: r902516 - in /ibatis/java/ibatis-3/trunk/ibatis-3-core/src: main/java/org/apache/ibatis/migration/CommandLine.java test/java/org/apache/ibatis/migration/MigratorTest.java

2010-01-23 Thread cbegin
Author: cbegin
Date: Sun Jan 24 00:38:34 2010
New Revision: 902516

URL: http://svn.apache.org/viewvc?rev=902516view=rev
Log:
Added command shortcuts.

Modified:

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/CommandLine.java

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/migration/MigratorTest.java

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/CommandLine.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/CommandLine.java?rev=902516r1=902515r2=902516view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/CommandLine.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/CommandLine.java
 Sun Jan 24 00:38:34 2010
@@ -90,7 +90,21 @@
 } else if (SCRIPT.equals(command)) {
   new ScriptCommand(repository, environment, force).execute(params);
 } else {
-  throw new MigrationException(Attempt to execute unkown command.);
+  String match = null;
+  for (String knownCommand : KNOWN_COMMANDS) {
+if (knownCommand.startsWith(command)) {
+  if (match != null) {
+throw new MigrationException(Ambiguous command shortcut:  + 
command);
+  }
+  match = knownCommand;
+}
+  }
+  if (match != null) {
+command = match;
+runCommand();
+  } else {
+throw new MigrationException(Attempt to execute unkown command:  + 
command);
+  }
 }
   }
 
@@ -130,11 +144,7 @@
   repository = new File(repository.getAbsolutePath());
   if (command == null) {
 parseError = No command specified.;
-  } else {
-if (!KNOWN_COMMANDS.contains(command)) {
-  parseError = Unknown command:  + command;
-}
-  }
+  } 
 }
   }
 

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/migration/MigratorTest.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/migration/MigratorTest.java?rev=902516r1=902515r2=902516view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/migration/MigratorTest.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/migration/MigratorTest.java
 Sun Jan 24 00:38:34 2010
@@ -59,7 +59,7 @@
 assertTrue(buffer.toString().contains(--  Bootstrap.sql));
 buffer.clear();
 
-Migrator.main(args(--path= + f.getAbsolutePath(), status));
+Migrator.main(args(--path= + f.getAbsolutePath(), sta));
 assertTrue(buffer.toString().contains(...pending...));
 buffer.clear();
 




svn commit: r902518 - in /ibatis/java/ibatis-3/trunk: ./ ibatis-3-core/src/main/java/org/apache/ibatis/migration/ ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/ ibatis-3-core/src/te

2010-01-23 Thread cbegin
Author: cbegin
Date: Sun Jan 24 01:40:31 2010
New Revision: 902518

URL: http://svn.apache.org/viewvc?rev=902518view=rev
Log:
added migrations shortcuts, up/down step count parameters

Modified:

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/CommandLine.java

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/DownCommand.java

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/UpCommand.java

ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/migration/MigratorTest.java
ibatis/java/ibatis-3/trunk/version.properties

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/CommandLine.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/CommandLine.java?rev=902518r1=902517r2=902518view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/CommandLine.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/CommandLine.java
 Sun Jan 24 01:40:31 2010
@@ -167,12 +167,14 @@
 out.println(  init   Creates (if necessary) and initializes a 
migration path.);
 out.println(  bootstrap  Runs the bootstrap SQL script (see 
scripts/bootstrap.sql for more).);
 out.println(  new description  Creates a new migration with the 
provided description.);
-out.println(  up Run all unapplied migrations.);
-out.println(  down   Undoes the last migration applied to the 
database.);
+out.println(  up [n] Run unapplied migrations, ALL by 
default, or 'n' specified.);
+out.println(  down [n]   Undoes migrations applied to the 
database. ONE by default or 'n' specified.);
 out.println(  version version  Migrates the database up or down to the 
specified version.);
 out.println(  pendingForce executes pending migrations out of 
order (not recommended).);
 out.println(  status Prints the changelog from the database 
if the changelog table exists.);
 out.println(  script v1 v2   Generates a delta migration script from 
version v1 to v2 (undo if v1  v2).);
+out.println();
+out.println(  * Shortcuts are accepted by using the first few 
(unambiguous) letters of each command..);
 out.println();
 out.flush();
   }

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java?rev=902518r1=902517r2=902518view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/BaseCommand.java
 Sun Jan 24 01:40:31 2010
@@ -291,6 +291,19 @@
 return new SimpleDateFormat(-MM-dd HH:mm:ss).format(new 
java.sql.Date(System.currentTimeMillis()));
   }
 
+  protected int getStepCountParameter(int defaultSteps, String... params) {
+final String stringParam = params.length  0 ? params[0] : null;
+if (stringParam == null || .equals(stringParam)) {
+  return defaultSteps;
+} else {
+  try {
+return Integer.parseInt(stringParam);
+  } catch (NumberFormatException e) {
+throw new MigrationException(Invalid parameter passed to command:  + 
params[0]);
+  }
+}
+  }
+
   private File getCustomDriverPath() {
 String customDriverPath = 
environmentProperties().getProperty(driver_path);
 if (customDriverPath != null  customDriverPath.length()  0) {

Modified: 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/DownCommand.java
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/DownCommand.java?rev=902518r1=902517r2=902518view=diff
==
--- 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/DownCommand.java
 (original)
+++ 
ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/migration/commands/DownCommand.java
 Sun Jan 24 01:40:31 2010
@@ -25,6 +25,7 @@
   Change lastChange = getLastAppliedChange();
   ListChange migrations = getMigrations();
   Collections.reverse(migrations);
+  int steps = 0;
   for (Change 

svn commit: r902521 - /ibatis/java/ibatis-3/trunk/version.properties

2010-01-23 Thread cbegin
Author: cbegin
Date: Sun Jan 24 02:30:32 2010
New Revision: 902521

URL: http://svn.apache.org/viewvc?rev=902521view=rev
Log:
version for Beta 9

Modified:
ibatis/java/ibatis-3/trunk/version.properties

Modified: ibatis/java/ibatis-3/trunk/version.properties
URL: 
http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/version.properties?rev=902521r1=902520r2=902521view=diff
==
--- ibatis/java/ibatis-3/trunk/version.properties (original)
+++ ibatis/java/ibatis-3/trunk/version.properties Sun Jan 24 02:30:32 2010
@@ -1,5 +1,5 @@
 #Build version info
-#Sat Jan 23 18:34:51 MST 2010
+#Sat Jan 23 19:23:01 MST 2010
 version=3.0.0
-buildDate=2010/01/23 18\:34
-buildNum=225
+buildDate=2010/01/23 19\:23
+buildNum=228




svn commit: r902522 - /ibatis/java/ibatis-3/tags/java_release_3.0.0-228_beta_9/

2010-01-23 Thread cbegin
Author: cbegin
Date: Sun Jan 24 02:32:38 2010
New Revision: 902522

URL: http://svn.apache.org/viewvc?rev=902522view=rev
Log:
Release tag for beta 9

Added:
ibatis/java/ibatis-3/tags/java_release_3.0.0-228_beta_9/
  - copied from r902521, ibatis/java/ibatis-3/trunk/