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/
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/
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
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
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
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
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
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
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/
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/