Author: cbegin
Date: Mon May 18 19:30:13 2009
New Revision: 776060

URL: http://svn.apache.org/viewvc?rev=776060&view=rev
Log:
Refactored KeyGenerator API

Added:
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/NoKeyGenerator.java
Modified:
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationParser.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementParser.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BatchExecutor.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/Jdbc3KeyGenerator.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/KeyGenerator.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/SelectKeyGenerator.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/CallableStatementHandler.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/PreparedStatementHandler.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/SimpleStatementHandler.java
    
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationParser.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationParser.java?rev=776060&r1=776059&r2=776060&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationParser.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationParser.java
 Mon May 18 19:30:13 2009
@@ -178,7 +178,7 @@
       ResultSetType resultSetType = ResultSetType.FORWARD_ONLY;
       SqlCommandType sqlCommandType = getSqlCommandType(method);
       KeyGenerator keyGenerator = configuration.isUseGeneratedKeys()
-          && SqlCommandType.INSERT.equals(sqlCommandType) ? new 
Jdbc3KeyGenerator() : null;
+          && SqlCommandType.INSERT.equals(sqlCommandType) ? new 
Jdbc3KeyGenerator() : new NoKeyGenerator();
       String keyProperty = "id";
       if (options != null) {
         flushCache = options.flushCache();

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementParser.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementParser.java?rev=776060&r1=776059&r2=776060&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementParser.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementParser.java
 Mon May 18 19:30:13 2009
@@ -52,7 +52,7 @@
     } else {
       keyGenerator = context.getBooleanAttribute("useGeneratedKeys",
         configuration.isUseGeneratedKeys() && 
SqlCommandType.INSERT.equals(sqlCommandType))
-        ? new Jdbc3KeyGenerator() : null;
+        ? new Jdbc3KeyGenerator() : new NoKeyGenerator();
     }
 
     sequentialBuilder.statement(id, sqlSource, statementType, sqlCommandType, 
fetchSize, timeout, parameterMap, parameterTypeClass,
@@ -115,7 +115,7 @@
 
       //defaults
       boolean useCache = false;
-      KeyGenerator keyGenerator = null;
+      KeyGenerator keyGenerator = new NoKeyGenerator();
       Integer fetchSize = null;
       Integer timeout = null;
       boolean flushCache = false;

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BatchExecutor.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BatchExecutor.java?rev=776060&r1=776059&r2=776060&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BatchExecutor.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BatchExecutor.java
 Mon May 18 19:30:13 2009
@@ -66,7 +66,7 @@
           Object parameter = batchResult.getParameterObject();
           KeyGenerator keyGenerator = ms.getKeyGenerator();
           if (keyGenerator instanceof Jdbc3KeyGenerator) {
-            keyGenerator.processGeneratedKeys(this, ms, stmt, parameter);
+            keyGenerator.processAfter(this, ms, stmt, parameter);
           }
         } catch (BatchUpdateException e) {
           StringBuffer message = new StringBuffer();

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/Jdbc3KeyGenerator.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/Jdbc3KeyGenerator.java?rev=776060&r1=776059&r2=776060&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/Jdbc3KeyGenerator.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/Jdbc3KeyGenerator.java
 Mon May 18 19:30:13 2009
@@ -9,15 +9,10 @@
 
 public class Jdbc3KeyGenerator implements KeyGenerator {
 
-  public boolean executeAfter() {
-    return true;
+  public void processBefore(Executor executor, MappedStatement ms, Statement 
stmt, Object parameter) {
   }
 
-  public boolean executeBefore() {
-    return false;
-  }
-
-  public void processGeneratedKeys(Executor executor, MappedStatement ms, 
Statement stmt, Object parameter) {
+  public void processAfter(Executor executor, MappedStatement ms, Statement 
stmt, Object parameter) {
     try {
       final Configuration configuration = ms.getConfiguration();
       final TypeHandlerRegistry typeHandlerRegistry = 
configuration.getTypeHandlerRegistry();

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/KeyGenerator.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/KeyGenerator.java?rev=776060&r1=776059&r2=776060&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/KeyGenerator.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/KeyGenerator.java
 Mon May 18 19:30:13 2009
@@ -7,10 +7,8 @@
 
 public interface KeyGenerator {
 
-  boolean executeBefore();
+  void processBefore(Executor executor, MappedStatement ms, Statement stmt, 
Object parameter);
 
-  boolean executeAfter();
-
-  void processGeneratedKeys(Executor executor, MappedStatement ms, Statement 
stmt, Object parameter);
+  void processAfter(Executor executor, MappedStatement ms, Statement stmt, 
Object parameter);
 
 }

Added: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/NoKeyGenerator.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/NoKeyGenerator.java?rev=776060&view=auto
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/NoKeyGenerator.java
 (added)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/NoKeyGenerator.java
 Mon May 18 19:30:13 2009
@@ -0,0 +1,16 @@
+package org.apache.ibatis.executor.keygen;
+
+import org.apache.ibatis.executor.Executor;
+import org.apache.ibatis.mapping.MappedStatement;
+
+import java.sql.Statement;
+
+public class NoKeyGenerator implements KeyGenerator {
+
+  public void processBefore(Executor executor, MappedStatement ms, Statement 
stmt, Object parameter) {
+  }
+
+  public void processAfter(Executor executor, MappedStatement ms, Statement 
stmt, Object parameter) {
+  }
+
+}

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/SelectKeyGenerator.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/SelectKeyGenerator.java?rev=776060&r1=776059&r2=776060&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/SelectKeyGenerator.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/keygen/SelectKeyGenerator.java
 Mon May 18 19:30:13 2009
@@ -17,15 +17,19 @@
     this.keyStatement = keyStatement;
   }
 
-  public boolean executeBefore() {
-    return executeBefore;
+  public void processBefore(Executor executor, MappedStatement ms, Statement 
stmt, Object parameter) {
+    if (executeBefore) {
+      processGeneratedKeys(executor, ms, stmt, parameter);
+    }
   }
 
-  public boolean executeAfter() {
-    return !executeBefore;
+  public void processAfter(Executor executor, MappedStatement ms, Statement 
stmt, Object parameter) {
+    if (!executeBefore) {
+      processGeneratedKeys(executor, ms, stmt, parameter);
+    }
   }
 
-  public void processGeneratedKeys(Executor executor, MappedStatement ms, 
Statement stmt, Object parameter) {
+  private void processGeneratedKeys(Executor executor, MappedStatement ms, 
Statement stmt, Object parameter) {
     try {
       final Configuration configuration = ms.getConfiguration();
       if (parameter != null) {

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/CallableStatementHandler.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/CallableStatementHandler.java?rev=776060&r1=776059&r2=776060&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/CallableStatementHandler.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/CallableStatementHandler.java
 Mon May 18 19:30:13 2009
@@ -22,9 +22,7 @@
     int rows = cs.getUpdateCount();
     Object parameterObject = boundSql.getParameterObject();
     KeyGenerator keyGenerator = mappedStatement.getKeyGenerator();
-    if (keyGenerator != null && keyGenerator.executeAfter()) {
-      keyGenerator.processGeneratedKeys(executor, mappedStatement, cs, 
parameterObject);
-    }
+    keyGenerator.processAfter(executor, mappedStatement, cs, parameterObject);
     resultSetHandler.handleOutputParameters(cs);
     return rows;
   }
@@ -54,9 +52,7 @@
 
   public void parameterize(Statement statement) throws SQLException {
     KeyGenerator keyGenerator = mappedStatement.getKeyGenerator();
-    if (keyGenerator != null && keyGenerator.executeBefore()) {
-      keyGenerator.processGeneratedKeys(executor, mappedStatement, statement, 
boundSql.getParameterObject());
-    }
+    keyGenerator.processBefore(executor, mappedStatement, statement, 
boundSql.getParameterObject());
     registerOutputParameters((CallableStatement) statement);
     parameterHandler.setParameters((CallableStatement) statement);
   }

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/PreparedStatementHandler.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/PreparedStatementHandler.java?rev=776060&r1=776059&r2=776060&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/PreparedStatementHandler.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/PreparedStatementHandler.java
 Mon May 18 19:30:13 2009
@@ -21,9 +21,7 @@
     int rows = ps.getUpdateCount();
     Object parameterObject = boundSql.getParameterObject();
     KeyGenerator keyGenerator = mappedStatement.getKeyGenerator();
-    if (keyGenerator != null && keyGenerator.executeAfter()) {
-      keyGenerator.processGeneratedKeys(executor, mappedStatement, ps, 
parameterObject);
-    }
+    keyGenerator.processAfter(executor, mappedStatement, ps, parameterObject);
     return rows;
   }
 
@@ -53,10 +51,8 @@
 
   public void parameterize(Statement statement)
       throws SQLException {
-    KeyGenerator keyGenerator = mappedStatement.getKeyGenerator();
-    if (keyGenerator != null && keyGenerator.executeBefore()) {
-      keyGenerator.processGeneratedKeys(executor, mappedStatement, statement, 
boundSql.getParameterObject());
-    }
+    KeyGenerator keyGenerator = mappedStatement.getKeyGenerator();    
+    keyGenerator.processBefore(executor, mappedStatement, statement, 
boundSql.getParameterObject());
     parameterHandler.setParameters((PreparedStatement) statement);
   }
 

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/SimpleStatementHandler.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/SimpleStatementHandler.java?rev=776060&r1=776059&r2=776060&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/SimpleStatementHandler.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/SimpleStatementHandler.java
 Mon May 18 19:30:13 2009
@@ -23,13 +23,11 @@
     if (keyGenerator instanceof Jdbc3KeyGenerator) {
       statement.execute(sql, Statement.RETURN_GENERATED_KEYS);
       rows = statement.getUpdateCount();
-      keyGenerator.processGeneratedKeys(executor, mappedStatement, statement, 
parameterObject);
+      keyGenerator.processAfter(executor, mappedStatement, statement, 
parameterObject);
     } else if (keyGenerator instanceof SelectKeyGenerator) {
       statement.execute(sql);
       rows = statement.getUpdateCount();
-      if (keyGenerator.executeAfter()) {
-        keyGenerator.processGeneratedKeys(executor, mappedStatement, 
statement, parameterObject);
-      }
+      keyGenerator.processAfter(executor, mappedStatement, statement, 
parameterObject);
     } else {
       statement.execute(sql);
       rows = statement.getUpdateCount();

Modified: 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java
URL: 
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java?rev=776060&r1=776059&r2=776060&view=diff
==============================================================================
--- 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java
 (original)
+++ 
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java
 Mon May 18 19:30:13 2009
@@ -40,7 +40,7 @@
       mappedStatement.timeout = configuration.getDefaultStatementTimeout();
       mappedStatement.sqlCommandType = sqlCommandType;
       mappedStatement.keyGenerator = configuration.isUseGeneratedKeys()
-          && SqlCommandType.INSERT.equals(sqlCommandType) ? new 
Jdbc3KeyGenerator() : null;
+          && SqlCommandType.INSERT.equals(sqlCommandType) ? new 
Jdbc3KeyGenerator() : new NoKeyGenerator();
     }
 
     public Builder resource(String resource) {


Reply via email to