Commit e2ad5816 authored by Dave Cramer's avatar Dave Cramer

mike beachy's patch for statement handling

parent 83feff3e
...@@ -12,7 +12,7 @@ import java.lang.reflect.*; ...@@ -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 ...@@ -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 ...@@ -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();
}
} }
} }
} }
......
...@@ -11,7 +11,7 @@ import java.sql.*; ...@@ -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 ...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment