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"));
+    }
+  }
+
 }