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 * @see ConnectionPool
* *
* @author Aaron Mulder (ammulder@chariotsolutions.com) * @author Aaron Mulder (ammulder@chariotsolutions.com)
* @version $Revision: 1.4 $ * @version $Revision: 1.5 $
*/ */
public class PooledConnectionImpl implements PooledConnection public class PooledConnectionImpl implements PooledConnection
{ {
@ -204,7 +204,14 @@ public class PooledConnectionImpl implements PooledConnection
return Boolean.FALSE; 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 // All the rest is from the Connection interface
if (method.getName().equals("isClosed")) if (method.getName().equals("isClosed"))
@ -355,7 +362,14 @@ public class PooledConnectionImpl implements PooledConnection
} }
else 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. * interface to the PooledConnection is through the CPDS.
* *
* @author Aaron Mulder (ammulder@chariotsolutions.com) * @author Aaron Mulder (ammulder@chariotsolutions.com)
* @version $Revision: 1.4 $ * @version $Revision: 1.5 $
*/ */
public class ConnectionPoolTest extends BaseDataSourceTest 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 * Ensures that a prepared statement generated by a proxied connection
* returns the proxied connection from getConnection() [not the physical * returns the proxied connection from getConnection() [not the physical