You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by di...@apache.org on 2003/09/14 02:12:40 UTC

cvs commit: jakarta-commons/dbcp/src/java/org/apache/commons/dbcp PoolableConnectionFactory.java

dirkv       2003/09/13 17:12:40

  Modified:    dbcp/src/java/org/apache/commons/dbcp
                        PoolableConnectionFactory.java
  Log:
  add validateConnection() with the same logic as validateObject
  but throws exceptions on error (for detailed error messages)
  
  Revision  Changes    Path
  1.12      +36 -38    jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/PoolableConnectionFactory.java
  
  Index: PoolableConnectionFactory.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/PoolableConnectionFactory.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- PoolableConnectionFactory.java	25 Aug 2003 16:17:45 -0000	1.11
  +++ PoolableConnectionFactory.java	14 Sep 2003 00:12:40 -0000	1.12
  @@ -270,46 +270,44 @@
   
       synchronized public boolean validateObject(Object obj) {
           if(obj instanceof Connection) {
  -            String query = _validationQuery;
  -            Connection conn = (Connection)obj;
               try {
  -                if(conn.isClosed()) {
  -                    return false;
  -                }
  -            } catch(SQLException e) {
  +                validateConnection((Connection) obj);
  +                return true;
  +            } catch(Exception e) {
                   return false;
  -            }
  -            if(null != query) {
  -                Statement stmt = null;
  -                ResultSet rset = null;
  -                try {
  -                    stmt = conn.createStatement();
  -                    rset = stmt.executeQuery(query);
  -                    if(rset.next()) {
  -                        return true;
  -                    } else {
  -                        return false;
  -                    }
  -                } catch(Exception e) {
  -                    return false;
  -                } finally {
  -                    try {
  -                        rset.close();
  -                    } catch(Exception t) {
  -                        // ignored
  -                    }
  -                    try {
  -                        stmt.close();
  -                    } catch(Exception t) {
  -                        // ignored
  -                    }
  +            }           
  +        } else {
  +            return false;
  +        }
  +    }
   
  +    synchronized public void validateConnection(Connection conn) throws SQLException {
  +        String query = _validationQuery;
  +        if(conn.isClosed()) {
  +            throw new SQLException("validateConnection: connection closed");
  +        }
  +        if(null != query) {
  +            Statement stmt = null;
  +            ResultSet rset = null;
  +            try {
  +                stmt = conn.createStatement();
  +                rset = stmt.executeQuery(query);
  +                if(!rset.next()) {
  +                    throw new SQLException("validationQuery didn't return a row");
                   }
  -            } else {
  -                return true;
  +            } finally {
  +                try {
  +                    rset.close();
  +                } catch(Exception t) {
  +                    // ignored
  +                }
  +                try {
  +                    stmt.close();
  +                } catch(Exception t) {
  +                    // ignored
  +                }
  +
               }
  -        } else {
  -            return false;
           }
       }