commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From di...@apache.org
Subject cvs commit: jakarta-commons/dbcp/src/java/org/apache/commons/dbcp DelegatingCallableStatement.java DelegatingPreparedStatement.java DelegatingStatement.java PoolablePreparedStatement.java PoolingConnection.java
Date Fri, 26 Dec 2003 15:43:55 GMT
dirkv       2003/12/26 07:43:55

  Modified:    dbcp/src/java/org/apache/commons/dbcp
                        DelegatingCallableStatement.java
                        DelegatingPreparedStatement.java
                        DelegatingStatement.java
                        PoolablePreparedStatement.java
                        PoolingConnection.java
  Log:
  Bugzilla Bug 24966: NullPointer with Oracle 9 driver
  - refactor close() & passivate() methods
  
  Revision  Changes    Path
  1.14      +3 -30     jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/DelegatingCallableStatement.java
  
  Index: DelegatingCallableStatement.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/DelegatingCallableStatement.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- DelegatingCallableStatement.java	26 Dec 2003 15:16:28 -0000	1.13
  +++ DelegatingCallableStatement.java	26 Dec 2003 15:43:55 -0000	1.14
  @@ -80,8 +80,6 @@
   import java.sql.SQLWarning;
   import java.sql.SQLException;
   
  -import java.util.List;
  -
   /**
    * A base delegating implementation of {@link CallableStatement}.
    * <p>
  @@ -136,31 +134,6 @@
       public void setDelegate(CallableStatement s) {
           super.setDelegate(s);
           _stmt = s;
  -    }
  -
  -    /**
  -     * Close this DelegatingCallableStatement, and close
  -     * any ResultSets that were not explicitly closed.
  -     */
  -    public void close() throws SQLException {
  -        if(_conn != null) {
  -           _conn.removeTrace(this);
  -           _conn = null;
  -        }
  -
  -        // The JDBC spec requires that a statement close any open
  -        // ResultSet's when it is closed.
  -        List resultSets = getTrace();
  -        if( resultSets != null) {
  -            ResultSet[] set = new ResultSet[resultSets.size()];
  -            resultSets.toArray(set);
  -            for (int i = 0; i < set.length; i++) {
  -                set[i].close();
  -            }
  -            clearTrace();
  -        }
  -
  -        _stmt.close();
       }
   
       public ResultSet executeQuery() throws SQLException {
  
  
  
  1.17      +3 -45     jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/DelegatingPreparedStatement.java
  
  Index: DelegatingPreparedStatement.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/DelegatingPreparedStatement.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- DelegatingPreparedStatement.java	26 Dec 2003 15:16:28 -0000	1.16
  +++ DelegatingPreparedStatement.java	26 Dec 2003 15:43:55 -0000	1.17
  @@ -72,7 +72,6 @@
   import java.sql.SQLException;
   import java.sql.SQLWarning;
   import java.util.Calendar;
  -import java.util.List;
   
   /**
    * A base delegating implementation of {@link PreparedStatement}.
  @@ -133,15 +132,6 @@
           _stmt = s;
       }
   
  -    /**
  -     * Close this DelegatingPreparedStatement, and close
  -     * any ResultSets that were not explicitly closed.
  -     */
  -    public void close() throws SQLException {
  -        _stmt.close();
  -        passivate();
  -    }
  -
       public ResultSet executeQuery(String sql) throws SQLException {
           checkOpen();
           return DelegatingResultSet.wrapResultSet(this,_stmt.executeQuery(sql));
  @@ -217,38 +207,6 @@
       public void setTime(int parameterIndex, java.sql.Time x, Calendar cal) throws SQLException
{ checkOpen(); _stmt.setTime(parameterIndex,x,cal);}
       public void setTimestamp(int parameterIndex, java.sql.Timestamp x, Calendar cal) throws
SQLException { checkOpen(); _stmt.setTimestamp(parameterIndex,x,cal);}
       public void setNull (int paramIndex, int sqlType, String typeName) throws SQLException
{ checkOpen(); _stmt.setNull(paramIndex,sqlType,typeName);}
  -
  -    protected void activate() {
  -        _closed = false;
  -        if(_stmt instanceof DelegatingPreparedStatement) {
  -            ((DelegatingPreparedStatement)_stmt).activate();
  -        }
  -    }
  -
  -    protected void passivate() throws SQLException {
  -        _closed = true;
  -        if(_conn != null) {
  -            _conn.removeTrace(this);
  -           _conn = null;
  -        }
  -         
  -        // The JDBC spec requires that a statment close any open
  -        // ResultSet's when it is closed.
  -        // FIXME The PreparedStatement we're wrapping should handle this for us.
  -        // See bug 17301 for what could happen when ResultSets are closed twice.
  -        List resultSets = getTrace();
  -        if( resultSets != null) {
  -            ResultSet[] set = new ResultSet[resultSets.size()];
  -            resultSets.toArray(set);
  -            for (int i = 0; i < set.length; i++) {
  -                set[i].close();
  -            }
  -            clearTrace();
  -        }
  -        if(_stmt instanceof DelegatingPreparedStatement) {
  -            ((DelegatingPreparedStatement)_stmt).passivate();
  -        }
  -    }
   
       // ------------------- JDBC 3.0 -----------------------------------------
       // Will be commented by the build process on a JDBC 2.0 system
  
  
  
  1.14      +34 -34    jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/DelegatingStatement.java
  
  Index: DelegatingStatement.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/DelegatingStatement.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- DelegatingStatement.java	26 Dec 2003 15:16:28 -0000	1.13
  +++ DelegatingStatement.java	26 Dec 2003 15:43:55 -0000	1.14
  @@ -175,10 +175,40 @@
        * any ResultSets that were not explicitly closed.
        */
       public void close() throws SQLException {
  -        passivate();
  +        _closed = true;
  +        if (_conn != null) {
  +            _conn.removeTrace(this);
  +            _conn = null;
  +        }
  +
  +        // The JDBC spec requires that a statment close any open
  +        // ResultSet's when it is closed.
  +        // FIXME The PreparedStatement we're wrapping should handle this for us.
  +        // See bug 17301 for what could happen when ResultSets are closed twice.
  +        List resultSets = getTrace();
  +        if( resultSets != null) {
  +            ResultSet[] set = (ResultSet[]) resultSets.toArray(new ResultSet[resultSets.size()]);
  +            for (int i = 0; i < set.length; i++) {
  +                set[i].close();
  +            }
  +            clearTrace();
  +        }
  +
           _stmt.close();
       }
   
  +    protected void activate() throws SQLException {
  +        if(_stmt instanceof DelegatingStatement) {
  +            ((DelegatingStatement)_stmt).activate();
  +        }
  +    }
  +
  +    protected void passivate() throws SQLException {
  +        if(_stmt instanceof DelegatingStatement) {
  +            ((DelegatingStatement)_stmt).passivate();
  +        }
  +    }
  +
       public Connection getConnection() throws SQLException {
           checkOpen();
           return _conn; // return the delegating connection that created this
  @@ -222,36 +252,6 @@
       protected void checkOpen() throws SQLException {
           if(isClosed()) {
               throw new SQLException(this.getClass().getName() + " is closed.");
  -        }
  -    }
  -
  -    protected void activate() {
  -        _closed = false;
  -        if(_stmt instanceof DelegatingPreparedStatement) {
  -            ((DelegatingPreparedStatement)_stmt).activate();
  -        }
  -    }
  -
  -    protected void passivate() throws SQLException {
  -        _closed = true;
  -        if (_conn != null) {
  -            _conn.removeTrace(this);
  -           _conn = null;
  -        }
  -
  -        // The JDBC spec requires that a statment close any open
  -        // ResultSet's when it is closed.
  -        List resultSets = getTrace();
  -        if( resultSets != null) {
  -            ResultSet[] set = new ResultSet[resultSets.size()];
  -            resultSets.toArray(set);
  -            for (int i = 0; i < set.length; i++) {
  -                set[i].close();
  -            }
  -            clearTrace();
  -        }
  -        if(_stmt instanceof DelegatingPreparedStatement) {
  -            ((DelegatingPreparedStatement)_stmt).passivate();
           }
       }
       
  
  
  
  1.8       +38 -16    jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/PoolablePreparedStatement.java
  
  Index: PoolablePreparedStatement.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/PoolablePreparedStatement.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- PoolablePreparedStatement.java	9 Oct 2003 21:04:44 -0000	1.7
  +++ PoolablePreparedStatement.java	26 Dec 2003 15:43:55 -0000	1.8
  @@ -61,9 +61,12 @@
   
   package org.apache.commons.dbcp;
   
  -import java.sql.PreparedStatement;
   import java.sql.Connection;
  +import java.sql.PreparedStatement;
  +import java.sql.ResultSet;
   import java.sql.SQLException;
  +import java.util.List;
  +
   import org.apache.commons.pool.KeyedObjectPool;
   
   /**
  @@ -76,15 +79,11 @@
    * @author Rodney Waldhoff
    * @author Glenn L. Nielsen
    * @author James House (<a href="mailto:james@interobjective.com">james@interobjective.com</a>)
  - * @version $Id$
  + * @author Dirk Verbeeck
  + * @version $Revision$ $Date$
    */
   public class PoolablePreparedStatement extends DelegatingPreparedStatement implements PreparedStatement
{
       /**
  -     * The {@link Connection} from which I was created.
  -     */
  -    protected Connection _conn = null;
  -
  -    /**
        * The {@link KeyedObjectPool} from which I was obtained.
        */
       protected KeyedObjectPool _pool = null;
  @@ -105,7 +104,6 @@
           super((DelegatingConnection) conn, stmt);
           _pool = pool;
           _key = key;
  -        _conn = conn;
       }
   
       /**
  @@ -126,11 +124,35 @@
               }
           }
       }
  -
  -    /**
  -     * Return the {@link Connection} from which I was created.
  -     */
  -    public Connection getConnection() throws SQLException {
  -        return(null == _conn) ? _stmt.getConnection() : _conn;
  +    
  +    protected void activate() throws SQLException{
  +        _closed = false;
  +        if(_conn != null) {
  +            _conn.addTrace(this);
  +        }
  +        super.passivate();
       }
  +  
  +    protected void passivate() throws SQLException {
  +        _closed = true;
  +        if(_conn != null) {
  +            _conn.removeTrace(this);
  +        }
  +           
  +        // The JDBC spec requires that a statment close any open
  +        // ResultSet's when it is closed.
  +        // FIXME The PreparedStatement we're wrapping should handle this for us.
  +        // See bug 17301 for what could happen when ResultSets are closed twice.
  +        List resultSets = getTrace();
  +        if( resultSets != null) {
  +            ResultSet[] set = (ResultSet[]) resultSets.toArray(new ResultSet[resultSets.size()]);
  +            for (int i = 0; i < set.length; i++) {
  +                set[i].close();
  +            }
  +            clearTrace();
  +        }
  +        
  +        super.passivate();
  +    }
  +
   }
  
  
  
  1.11      +5 -3      jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/PoolingConnection.java
  
  Index: PoolingConnection.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/PoolingConnection.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- PoolingConnection.java	9 Oct 2003 21:04:44 -0000	1.10
  +++ PoolingConnection.java	26 Dec 2003 15:43:55 -0000	1.11
  @@ -76,6 +76,8 @@
    *
    * @see PoolablePreparedStatement
    * @author Rodney Waldhoff (<a href="mailto:rwaldhof@us.britannica.com">rwaldhof@us.britannica.com</a>)
  + * @author Dirk Verbeeck
  + * @version $Revision$ $Date$
    */
   public class PoolingConnection extends DelegatingConnection implements Connection, KeyedPoolableObjectFactory
{
       /** My pool of {@link PreparedStatement}s. */
  @@ -259,7 +261,7 @@
        * @param key ignored
        * @param obj ignored
        */
  -    public void activateObject(Object key, Object obj) {
  +    public void activateObject(Object key, Object obj) throws Exception {
           ((DelegatingPreparedStatement)obj).activate();
       }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message