You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by cb...@apache.org on 2009/01/03 23:38:54 UTC
svn commit: r731116 - in /ibatis/trunk/java/ibatis-3: ./
ibatis-3-core/src/main/java/org/apache/ibatis/api/
ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/
ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/
ibatis-3-core/src/test/j...
Author: cbegin
Date: Sat Jan 3 14:38:54 2009
New Revision: 731116
URL: http://svn.apache.org/viewvc?rev=731116&view=rev
Log:
added tests for clobbering existing config elements or looking up non-exsitant ones.
implemented SQL logging framework into DefaultSqlSession
Modified:
ibatis/trunk/java/ibatis-3/TODO
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSessionFactoryBuilder.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSessionFactory.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/BaseJdbcLogger.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/ConnectionLogger.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/PreparedStatementLogger.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/ResultSetLogger.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/StatementLogger.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/log4j.properties
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java
Modified: ibatis/trunk/java/ibatis-3/TODO
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/TODO?rev=731116&r1=731115&r2=731116&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/TODO (original)
+++ ibatis/trunk/java/ibatis-3/TODO Sat Jan 3 14:38:54 2009
@@ -1,8 +1,3 @@
-Improvements
- * Duplicate element IDs are clobbering each other in config
- * Need to report on lookups of nonexisting config elements (e.g. config.getMappedStatement)
- * Statement (other elements?) not found does not fail gracefully
-
Parameter Maps
* Named parameter parsing/merging
@@ -14,12 +9,6 @@
* Functional tests
* Perf/Threaded Integration Tests
-Logging
-// private static final Log log = LogFactory.getLog(BaseExecutor.class);
-// if (log.isDebugEnabled()) {
-// this.connection = ConnectionLogger.newInstance(connection);
-// } else {
-// this.connection = connection;
-// }
+
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSessionFactoryBuilder.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSessionFactoryBuilder.java?rev=731116&r1=731115&r2=731116&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSessionFactoryBuilder.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/SqlSessionFactoryBuilder.java Sat Jan 3 14:38:54 2009
@@ -2,6 +2,7 @@
import org.apache.ibatis.mapping.Configuration;
import org.apache.ibatis.api.defaults.DefaultSqlSessionFactory;
+import org.apache.ibatis.api.exceptions.ExceptionFactory;
import org.apache.ibatis.parser.MapperConfigParser;
import java.io.Reader;
@@ -22,9 +23,13 @@
}
public SqlSessionFactory build(Reader reader, String environment, Properties props) {
- MapperConfigParser parser = new MapperConfigParser(reader, environment, props);
- Configuration config = parser.parse();
- return new DefaultSqlSessionFactory(config);
+ try {
+ MapperConfigParser parser = new MapperConfigParser(reader, environment, props);
+ Configuration config = parser.parse();
+ return new DefaultSqlSessionFactory(config);
+ } catch (Exception e) {
+ throw ExceptionFactory.wrapException("Error building SqlSession.", e);
+ }
}
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSessionFactory.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSessionFactory.java?rev=731116&r1=731115&r2=731116&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSessionFactory.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/api/defaults/DefaultSqlSessionFactory.java Sat Jan 3 14:38:54 2009
@@ -6,7 +6,9 @@
import org.apache.ibatis.mapping.*;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.Transaction;
-import org.apache.ibatis.executor.Executor;
+import org.apache.ibatis.executor.*;
+import org.apache.ibatis.logging.*;
+import org.apache.ibatis.logging.jdbc.ConnectionLogger;
import javax.sql.DataSource;
import java.sql.Connection;
@@ -14,6 +16,8 @@
public class DefaultSqlSessionFactory implements SqlSessionFactory {
+ private static final Log log = LogFactory.getLog(Connection.class);
+
private final Configuration configuration;
private Environment environment;
private DataSource dataSource;
@@ -41,6 +45,7 @@
public SqlSession openSession(boolean autoCommit, ExecutorType execType) {
try {
Connection connection = dataSource.getConnection();
+ connection = wrapConnection(connection);
Transaction tx = transactionFactory.newTransaction(connection, autoCommit);
Executor executor = configuration.newExecutor(tx,execType);
return new DefaultSqlSession(configuration, executor, autoCommit);
@@ -63,6 +68,7 @@
// or databases won't support transactions
autoCommit = true;
}
+ connection = wrapConnection(connection);
Transaction tx = transactionFactory.newTransaction(connection, autoCommit);
Executor executor = configuration.newExecutor(tx, execType);
return new DefaultSqlSession(configuration, executor, autoCommit);
@@ -75,8 +81,13 @@
return configuration;
}
-
-
+ private Connection wrapConnection(Connection connection) {
+ if (log.isDebugEnabled()) {
+ return ConnectionLogger.newInstance(connection);
+ } else {
+ return connection;
+ }
+ }
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/BaseJdbcLogger.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/BaseJdbcLogger.java?rev=731116&r1=731115&r2=731116&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/BaseJdbcLogger.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/BaseJdbcLogger.java Sat Jan 3 14:38:54 2009
@@ -110,7 +110,7 @@
}
protected String removeBreakingWhitespace(String original) {
- return original.replace('\n', ' ').replace('\r', ' ').replace('\t', ' ');
+ return original.replace('\n', ' ').replace('\r', ' ').replace('\t', ' ').trim();
}
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/ConnectionLogger.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/ConnectionLogger.java?rev=731116&r1=731115&r2=731116&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/ConnectionLogger.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/ConnectionLogger.java Sat Jan 3 14:38:54 2009
@@ -19,7 +19,7 @@
super();
this.connection = conn;
if (log.isDebugEnabled()) {
- log.debug("Connection Opened");
+ log.debug("ooo Connection Opened");
}
}
@@ -38,6 +38,11 @@
Statement stmt = (Statement) method.invoke(connection, params);
stmt = StatementLogger.newInstance(stmt);
return stmt;
+ } else if ("close".equals(method.getName())) {
+ if (log.isDebugEnabled()) {
+ log.debug("xxx Connection Closed");
+ }
+ return method.invoke(connection, params);
} else {
return method.invoke(connection, params);
}
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/PreparedStatementLogger.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/PreparedStatementLogger.java?rev=731116&r1=731115&r2=731116&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/PreparedStatementLogger.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/PreparedStatementLogger.java Sat Jan 3 14:38:54 2009
@@ -25,9 +25,9 @@
try {
if (EXECUTE_METHODS.contains(method.getName())) {
if (log.isDebugEnabled()) {
- log.debug("Executing Statement: " + removeBreakingWhitespace(sql));
- log.debug("Parameter Types: " + getTypeString());
- log.debug("Parameters: " + getValueString());
+ log.debug("==> Executing: " + removeBreakingWhitespace(sql));
+ log.debug("==> Parameter Types: " + getTypeString());
+ log.debug("==> Parameters: " + getValueString());
}
clearColumnInfo();
if ("executeQuery".equals(method.getName())) {
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/ResultSetLogger.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/ResultSetLogger.java?rev=731116&r1=731115&r2=731116&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/ResultSetLogger.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/ResultSetLogger.java Sat Jan 3 14:38:54 2009
@@ -20,7 +20,7 @@
super();
this.rs = rs;
if (log.isDebugEnabled()) {
- log.debug("ResultSet Returned");
+ log.debug("<== ResultSet Returned");
}
}
@@ -40,11 +40,11 @@
if (first) {
first = false;
if (log.isDebugEnabled()) {
- log.debug("Columns: " + getColumnString());
+ log.debug("<== Columns: " + getColumnString());
}
}
if (log.isDebugEnabled()) {
- log.debug("Row: " + s);
+ log.debug("<== Row: " + s);
}
}
clearColumnInfo();
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/StatementLogger.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/StatementLogger.java?rev=731116&r1=731115&r2=731116&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/StatementLogger.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/logging/jdbc/StatementLogger.java Sat Jan 3 14:38:54 2009
@@ -24,7 +24,7 @@
try {
if (EXECUTE_METHODS.contains(method.getName())) {
if (log.isDebugEnabled()) {
- log.debug("Statement: " + removeBreakingWhitespace((String) params[0]));
+ log.debug("==> Executing: " + removeBreakingWhitespace((String) params[0]));
}
if ("executeQuery".equals(method.getName())) {
ResultSet rs = (ResultSet) method.invoke(statement, params);
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/log4j.properties
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/log4j.properties?rev=731116&r1=731115&r2=731116&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/log4j.properties (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/log4j.properties Sat Jan 3 14:38:54 2009
@@ -4,13 +4,7 @@
### Uncomment ALL for iBATIS logging
log4j.logger.org.apache.ibatis=ERROR
-log4j.logger.org.apache.ibatis.jdbc=ERROR
-
-#log4j.logger.java.sql.Connection=DEBUG
-#log4j.logger.java.sql.Statement=DEBUG
-#log4j.logger.java.sql.PreparedStatement=DEBUG
-#log4j.logger.java.sql.CallableStatement=DEBUG
-#log4j.logger.java.sql.ResultSet=DEBUG
+log4j.logger.java.sql=ERROR
### For Testing
log4j.logger.java.lang.Object=DEBUG
Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java?rev=731116&r1=731115&r2=731116&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/api/SqlSessionTest.java Sat Jan 3 14:38:54 2009
@@ -2,6 +2,7 @@
import org.junit.*;
import org.apache.ibatis.BaseDataTest;
+import org.apache.ibatis.mapping.Configuration;
import org.apache.ibatis.io.Resources;
import java.io.Reader;
@@ -176,4 +177,28 @@
}
}
+ @Test
+ public void shouldThrowExceptionIfMappedStatementDoesNotExist() throws Exception {
+ SqlSession session = sqlMapper.openSession();
+ try {
+ session.selectList("ThisStatementDoesNotExist");
+ Assert.fail("Expected exception to be thrown due to statement that does not exist.");
+ } catch (Exception e) {
+ Assert.assertTrue(e.getMessage().contains("does not contain value for ThisStatementDoesNotExist"));
+ } finally {
+ session.close();
+ }
+ }
+
+ @Test
+ public void shouldThrowExceptionIfTryingToAddStatementWithSameName() throws Exception {
+ Configuration config = sqlMapper.getConfiguration();
+ try {
+ config.addMappedStatement(config.getMappedStatement("com.domain.BlogMapper.selectBlogWithPostsUsingSubSelect"));
+ Assert.fail("Expected exception to be thrown due to statement that already exists.");
+ } catch (Exception e) {
+ Assert.assertTrue(e.getMessage().contains("already contains value for com.domain.BlogMapper.selectBlogWithPostsUsingSubSelect"));
+ }
+ }
+
}