mike beachy's patch for statement handling

This commit is contained in:
Dave Cramer 2002-12-20 14:10:34 +00:00
parent 83feff3ee7
commit e2ad5816e2
2 changed files with 82 additions and 4 deletions

View File

@ -12,7 +12,7 @@ import java.lang.reflect.*;
* @see ConnectionPool
*
* @author Aaron Mulder (ammulder@chariotsolutions.com)
* @version $Revision: 1.4 $
* @version $Revision: 1.5 $
*/
public class PooledConnectionImpl implements PooledConnection
{
@ -204,7 +204,14 @@ public class PooledConnectionImpl implements PooledConnection
return Boolean.FALSE;
}
}
return method.invoke(con, args);
try
{
return method.invoke(con, args);
}
catch (InvocationTargetException e)
{
throw e.getTargetException();
}
}
// All the rest is from the Connection interface
if (method.getName().equals("isClosed"))
@ -355,7 +362,14 @@ public class PooledConnectionImpl implements PooledConnection
}
else
{
return method.invoke(st, args);
try
{
return method.invoke(st, args);
}
catch (InvocationTargetException e)
{
throw e.getTargetException();
}
}
}
}

View File

@ -11,7 +11,7 @@ import java.sql.*;
* interface to the PooledConnection is through the CPDS.
*
* @author Aaron Mulder (ammulder@chariotsolutions.com)
* @version $Revision: 1.4 $
* @version $Revision: 1.5 $
*/
public class ConnectionPoolTest extends BaseDataSourceTest
{
@ -359,6 +359,70 @@ public class ConnectionPoolTest extends BaseDataSourceTest
}
}
/**
* Ensures that the Statement proxy generated by the Connection handle
* throws the correct kind of exception.
*/
public void testStatementProxy() {
Statement s = null;
try
{
PooledConnection pc = getPooledConnection();
Connection con = pc.getConnection();
s = con.createStatement();
}
catch (SQLException e)
{
fail(e.getMessage());
}
try
{
s.executeQuery("SELECT * FROM THIS_TABLE_SHOULD_NOT_EXIST");
fail("An SQL exception was not thrown that should have been");
}
catch (SQLException e)
{
; // This is the expected and correct path
}
catch (Exception e)
{
fail("bad exception; was expecting SQLException, not" +
e.getClass().getName());
}
}
/**
* Ensures that the Statement proxy generated by the Connection handle
* throws the correct kind of exception.
*/
public void testStatementProxy() {
Statement s = null;
try
{
PooledConnection pc = getPooledConnection();
Connection con = pc.getConnection();
s = con.createStatement();
}
catch (SQLException e)
{
fail(e.getMessage());
}
try
{
s.executeQuery("SELECT * FROM THIS_TABLE_SHOULD_NOT_EXIST");
fail("An SQL exception was not thrown that should have been");
}
catch (SQLException e)
{
; // This is the expected and correct path
}
catch (Exception e)
{
fail("bad exception; was expecting SQLException, not" +
e.getClass().getName());
}
}
/**
* Ensures that a prepared statement generated by a proxied connection
* returns the proxied connection from getConnection() [not the physical