// Path: src/main/java/org/apache/commons/dbutils/ProxyFactory.java
// public class ProxyFactory {
// 
//     /**
//      * The Singleton instance of this class.
//      */
//     private static final ProxyFactory instance = new ProxyFactory();
// 
//     /**
//      * Returns the Singleton instance of this class.
//      *
//      * @return singleton instance
//      */
//     public static ProxyFactory instance() {
//         return instance;
//     }
// 
//     /**
//      * Protected constructor for ProxyFactory subclasses to use.
//      */
//     protected ProxyFactory() {
//     }
// 
//     /**
//      * Convenience method to generate a single-interface proxy using the handler's classloader
//      *
//      * @param <T> The type of object to proxy
//      * @param type The type of object to proxy
//      * @param handler The handler that intercepts/overrides method calls.
//      * @return proxied object
//      */
//     public <T> T newProxyInstance(final Class<T> type, final InvocationHandler handler) {
//         return type.cast(Proxy.newProxyInstance(handler.getClass().getClassLoader(), new Class<?>[] {type}, handler));
//     }
// 
//     /**
//      * Creates a new proxy {@code CallableStatement} object.
//      * @param handler The handler that intercepts/overrides method calls.
//      * @return proxied CallableStatement
//      */
//     public CallableStatement createCallableStatement(final InvocationHandler handler) {
//         return newProxyInstance(CallableStatement.class, handler);
//     }
// 
//     /**
//      * Creates a new proxy {@code Connection} object.
//      * @param handler The handler that intercepts/overrides method calls.
//      * @return proxied Connection
//      */
//     public Connection createConnection(final InvocationHandler handler) {
//         return newProxyInstance(Connection.class, handler);
//     }
// 
//     /**
//      * Creates a new proxy {@code Driver} object.
//      * @param handler The handler that intercepts/overrides method calls.
//      * @return proxied Driver
//      */
//     public Driver createDriver(final InvocationHandler handler) {
//         return newProxyInstance(Driver.class, handler);
//     }
// 
//     /**
//      * Creates a new proxy {@code PreparedStatement} object.
//      * @param handler The handler that intercepts/overrides method calls.
//      * @return proxied PreparedStatement
//      */
//     public PreparedStatement createPreparedStatement(final InvocationHandler handler) {
//         return newProxyInstance(PreparedStatement.class, handler);
//     }
// 
//     /**
//      * Creates a new proxy {@code ResultSet} object.
//      * @param handler The handler that intercepts/overrides method calls.
//      * @return proxied ResultSet
//      */
//     public ResultSet createResultSet(final InvocationHandler handler) {
//         return newProxyInstance(ResultSet.class, handler);
//     }
// 
//     /**
//      * Creates a new proxy {@code ResultSetMetaData} object.
//      * @param handler The handler that intercepts/overrides method calls.
//      * @return proxied ResultSetMetaData
//      */
//     public ResultSetMetaData createResultSetMetaData(final InvocationHandler handler) {
//         return newProxyInstance(ResultSetMetaData.class, handler);
//     }
// 
//     /**
//      * Creates a new proxy {@code Statement} object.
//      * @param handler The handler that intercepts/overrides method calls.
//      * @return proxied Statement
//      */
//     public Statement createStatement(final InvocationHandler handler) {
//         return newProxyInstance(Statement.class, handler);
//     }
// 
// }


import java.io.ByteArrayInputStream;
import java.io.CharArrayReader;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.Ref;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import org.apache.commons.dbutils.BaseTestCase;
import org.apache.commons.dbutils.ProxyFactory;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
        // Set what gets returned to something other than the default
        final float f = (float) 10.0;
        rs2.setNullFloat(f);
        assertEquals(f, rs.getFloat(1), 0.0);
        assertEquals(f, rs.getFloat("column"), 0.0);
    }

    /**
     * Tests the setNullInt implementation.
     */
    public void testSetNullInt() throws SQLException {
        assertEquals(0, rs2.getNullInt());
        assertEquals(0, rs.getInt(1));
        assertTrue(rs.wasNull());
        assertEquals(0, rs.getInt("column"));
        assertTrue(rs.wasNull());
        // Set what gets returned to something other than the default
        final int i = 10;
        rs2.setNullInt(i);
        assertEquals(i, rs.getInt(1));
        assertEquals(i, rs.getInt("column"));
    }

    /**
     * Tests the setNullLong implementation.
     */
    public void testSetNullLong() throws SQLException {
        assertEquals(0, rs2.getNullLong());
        // Set what gets returned to something other than the default
        final long l = 10;
// Path: src/main/java/org/apache/commons/dbutils/ProxyFactory.java
// public class ProxyFactory {
// 
//     /**
//      * The Singleton instance of this class.
//      */
//     private static final ProxyFactory instance = new ProxyFactory();
// 
//     /**
//      * Returns the Singleton instance of this class.
//      *
//      * @return singleton instance
//      */
//     public static ProxyFactory instance() {
//         return instance;
//     }
// 
//     /**
//      * Protected constructor for ProxyFactory subclasses to use.
//      */
//     protected ProxyFactory() {
//     }
// 
//     /**
//      * Convenience method to generate a single-interface proxy using the handler's classloader
//      *
//      * @param <T> The type of object to proxy
//      * @param type The type of object to proxy
//      * @param handler The handler that intercepts/overrides method calls.
//      * @return proxied object
//      */
//     public <T> T newProxyInstance(final Class<T> type, final InvocationHandler handler) {
//         return type.cast(Proxy.newProxyInstance(handler.getClass().getClassLoader(), new Class<?>[] {type}, handler));
//     }
// 
//     /**
//      * Creates a new proxy {@code CallableStatement} object.
//      * @param handler The handler that intercepts/overrides method calls.
//      * @return proxied CallableStatement
//      */
//     public CallableStatement createCallableStatement(final InvocationHandler handler) {
//         return newProxyInstance(CallableStatement.class, handler);
//     }
// 
//     /**
//      * Creates a new proxy {@code Connection} object.
//      * @param handler The handler that intercepts/overrides method calls.
//      * @return proxied Connection
//      */
//     public Connection createConnection(final InvocationHandler handler) {
//         return newProxyInstance(Connection.class, handler);
//     }
// 
//     /**
//      * Creates a new proxy {@code Driver} object.
//      * @param handler The handler that intercepts/overrides method calls.
//      * @return proxied Driver
//      */
//     public Driver createDriver(final InvocationHandler handler) {
//         return newProxyInstance(Driver.class, handler);
//     }
// 
//     /**
//      * Creates a new proxy {@code PreparedStatement} object.
//      * @param handler The handler that intercepts/overrides method calls.
//      * @return proxied PreparedStatement
//      */
//     public PreparedStatement createPreparedStatement(final InvocationHandler handler) {
//         return newProxyInstance(PreparedStatement.class, handler);
//     }
// 
//     /**
//      * Creates a new proxy {@code ResultSet} object.
//      * @param handler The handler that intercepts/overrides method calls.
//      * @return proxied ResultSet
//      */
//     public ResultSet createResultSet(final InvocationHandler handler) {
//         return newProxyInstance(ResultSet.class, handler);
//     }
// 
//     /**
//      * Creates a new proxy {@code ResultSetMetaData} object.
//      * @param handler The handler that intercepts/overrides method calls.
//      * @return proxied ResultSetMetaData
//      */
//     public ResultSetMetaData createResultSetMetaData(final InvocationHandler handler) {
//         return newProxyInstance(ResultSetMetaData.class, handler);
//     }
// 
//     /**
//      * Creates a new proxy {@code Statement} object.
//      * @param handler The handler that intercepts/overrides method calls.
//      * @return proxied Statement
//      */
//     public Statement createStatement(final InvocationHandler handler) {
//         return newProxyInstance(Statement.class, handler);
//     }
// 
// }


// Path: src/test/java/org/apache/commons/dbutils/wrappers/SqlNullCheckedResultSetTest.java
import java.io.ByteArrayInputStream;
import java.io.CharArrayReader;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.Ref;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import org.apache.commons.dbutils.BaseTestCase;
import org.apache.commons.dbutils.ProxyFactory;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;

        // Set what gets returned to something other than the default
        final float f = (float) 10.0;
        rs2.setNullFloat(f);
        assertEquals(f, rs.getFloat(1), 0.0);
        assertEquals(f, rs.getFloat("column"), 0.0);
    }

    /**
     * Tests the setNullInt implementation.
     */
    public void testSetNullInt() throws SQLException {
        assertEquals(0, rs2.getNullInt());
        assertEquals(0, rs.getInt(1));
        assertTrue(rs.wasNull());
        assertEquals(0, rs.getInt("column"));
        assertTrue(rs.wasNull());
        // Set what gets returned to something other than the default
        final int i = 10;
        rs2.setNullInt(i);
        assertEquals(i, rs.getInt(1));
        assertEquals(i, rs.getInt("column"));
    }

    /**
     * Tests the setNullLong implementation.
     */
    public void testSetNullLong() throws SQLException {
        assertEquals(0, rs2.getNullLong());
        // Set what gets returned to something other than the default
        final long l = 10;
        rs2.setNullLong(l);