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/08/11 16:53:34 UTC
cvs commit: jakarta-commons/dbcp/src/java/org/apache/commons/dbcp PoolingDriver.java
dirkv 2003/08/11 07:53:34
Modified: dbcp/src/java/org/apache/commons/dbcp PoolingDriver.java
Log:
Use SQLNestedException to report errors
Revision Changes Path
1.5 +34 -14 jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/PoolingDriver.java
Index: PoolingDriver.java
===================================================================
RCS file: /home/cvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/PoolingDriver.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- PoolingDriver.java 8 Nov 2002 19:17:23 -0000 1.4
+++ PoolingDriver.java 11 Aug 2003 14:53:34 -0000 1.5
@@ -61,6 +61,7 @@
package org.apache.commons.dbcp;
+import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.Driver;
@@ -68,11 +69,11 @@
import java.sql.DriverPropertyInfo;
import java.sql.SQLException;
import java.util.HashMap;
-import java.util.NoSuchElementException;
import java.util.Properties;
import org.apache.commons.jocl.JOCLContentHandler;
import org.apache.commons.pool.ObjectPool;
+import org.xml.sax.SAXException;
/**
@@ -81,6 +82,7 @@
* {@link ObjectPool}.
*
* @author Rodney Waldhoff
+ * @author Dirk Verbeeck
* @version $Id$
*/
public class PoolingDriver implements Driver {
@@ -98,7 +100,22 @@
public PoolingDriver() {
}
+ /**
+ * WARNING: This method throws DbcpExceptions (RuntimeExceptions)
+ * and will be replaced by the protected getConnectionPool method.
+ *
+ * @deprecated This will be removed in a future version of DBCP.
+ */
synchronized public ObjectPool getPool(String name) {
+ try {
+ return getConnectionPool(name);
+ }
+ catch (Exception e) {
+ throw new DbcpException(e);
+ }
+ }
+
+ synchronized protected ObjectPool getConnectionPool(String name) throws SQLException {
ObjectPool pool = (ObjectPool)(_pools.get(name));
if(null == pool) {
InputStream in = this.getClass().getResourceAsStream(String.valueOf(name) + ".jocl");
@@ -106,8 +123,12 @@
JOCLContentHandler jocl = null;
try {
jocl = JOCLContentHandler.parse(in);
- } catch(Exception e) {
- throw new DbcpException(e);
+ }
+ catch (SAXException e) {
+ throw new SQLNestedException("Could not parse configuration file", e);
+ }
+ catch (IOException e) {
+ throw new SQLNestedException("Could not load configuration file", e);
}
if(jocl.getType(0).equals(String.class)) {
pool = getPool((String)(jocl.getValue(0)));
@@ -121,6 +142,9 @@
}
}
}
+ else {
+ throw new SQLException("Configuration file not found");
+ }
}
return pool;
}
@@ -139,7 +163,7 @@
public Connection connect(String url, Properties info) throws SQLException {
if(acceptsURL(url)) {
- ObjectPool pool = getPool(url.substring(URL_PREFIX_LEN));
+ ObjectPool pool = getConnectionPool(url.substring(URL_PREFIX_LEN));
if(null == pool) {
throw new SQLException("No pool found for " + url + ".");
} else {
@@ -147,12 +171,8 @@
return (Connection)(pool.borrowObject());
} catch(SQLException e) {
throw e;
- } catch(NoSuchElementException e) {
- throw new SQLException(e.toString());
- } catch(RuntimeException e) {
- throw e;
- } catch(Exception e) {
- throw new SQLException(e.toString());
+ } catch(Throwable e) {
+ throw new SQLNestedException("Connect failed", e);
}
}
} else {