Patch from Aaron Mulder to have pooled connections implement PGConnection
Modified Files: jdbc/org/postgresql/jdbc2/optional/PooledConnectionImpl.java jdbc/org/postgresql/test/jdbc2/optional/BaseDataSourceTest.java
This commit is contained in:
parent
88e524063a
commit
9db065ba56
|
@ -4,6 +4,7 @@ import javax.sql.*;
|
||||||
import java.sql.*;
|
import java.sql.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.lang.reflect.*;
|
import java.lang.reflect.*;
|
||||||
|
import org.postgresql.PGConnection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PostgreSQL implementation of the PooledConnection interface. This shouldn't
|
* PostgreSQL implementation of the PooledConnection interface. This shouldn't
|
||||||
|
@ -12,7 +13,7 @@ import java.lang.reflect.*;
|
||||||
* @see ConnectionPool
|
* @see ConnectionPool
|
||||||
*
|
*
|
||||||
* @author Aaron Mulder (ammulder@chariotsolutions.com)
|
* @author Aaron Mulder (ammulder@chariotsolutions.com)
|
||||||
* @version $Revision: 1.5 $
|
* @version $Revision: 1.6 $
|
||||||
*/
|
*/
|
||||||
public class PooledConnectionImpl implements PooledConnection
|
public class PooledConnectionImpl implements PooledConnection
|
||||||
{
|
{
|
||||||
|
@ -114,7 +115,7 @@ public class PooledConnectionImpl implements PooledConnection
|
||||||
con.setAutoCommit(autoCommit);
|
con.setAutoCommit(autoCommit);
|
||||||
ConnectionHandler handler = new ConnectionHandler(con);
|
ConnectionHandler handler = new ConnectionHandler(con);
|
||||||
last = handler;
|
last = handler;
|
||||||
Connection con = (Connection)Proxy.newProxyInstance(getClass().getClassLoader(), new Class[]{Connection.class}, handler);
|
Connection con = (Connection)Proxy.newProxyInstance(getClass().getClassLoader(), new Class[]{Connection.class, PGConnection.class}, handler);
|
||||||
last.setProxy(con);
|
last.setProxy(con);
|
||||||
return con;
|
return con;
|
||||||
}
|
}
|
||||||
|
@ -213,7 +214,7 @@ public class PooledConnectionImpl implements PooledConnection
|
||||||
throw e.getTargetException();
|
throw e.getTargetException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// All the rest is from the Connection interface
|
// All the rest is from the Connection or PGConnection interface
|
||||||
if (method.getName().equals("isClosed"))
|
if (method.getName().equals("isClosed"))
|
||||||
{
|
{
|
||||||
return con == null ? Boolean.TRUE : Boolean.FALSE;
|
return con == null ? Boolean.TRUE : Boolean.FALSE;
|
||||||
|
|
|
@ -3,6 +3,7 @@ package org.postgresql.test.jdbc2.optional;
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
import org.postgresql.test.TestUtil;
|
import org.postgresql.test.TestUtil;
|
||||||
import org.postgresql.jdbc2.optional.BaseDataSource;
|
import org.postgresql.jdbc2.optional.BaseDataSource;
|
||||||
|
import org.postgresql.PGConnection;
|
||||||
|
|
||||||
import java.sql.*;
|
import java.sql.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
@ -16,7 +17,7 @@ import javax.naming.*;
|
||||||
* tests.
|
* tests.
|
||||||
*
|
*
|
||||||
* @author Aaron Mulder (ammulder@chariotsolutions.com)
|
* @author Aaron Mulder (ammulder@chariotsolutions.com)
|
||||||
* @version $Revision: 1.4 $
|
* @version $Revision: 1.5 $
|
||||||
*/
|
*/
|
||||||
public abstract class BaseDataSourceTest extends TestCase
|
public abstract class BaseDataSourceTest extends TestCase
|
||||||
{
|
{
|
||||||
|
@ -179,6 +180,24 @@ public abstract class BaseDataSourceTest extends TestCase
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test to make sure that PGConnection methods can be called on the
|
||||||
|
* pooled Connection.
|
||||||
|
*/
|
||||||
|
public void testPGConnection()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
con = getDataSourceConnection();
|
||||||
|
((PGConnection)con).getEncoding().name();
|
||||||
|
con.close();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
fail("Unable to call PGConnection method on pooled connection due to "+e.getClass().getName()+" ("+e.getMessage()+")");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Uses the mini-JNDI implementation for testing purposes
|
* Uses the mini-JNDI implementation for testing purposes
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue