You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by th...@apache.org on 2017/07/07 02:06:31 UTC

[09/58] [abbrv] commons-dbutils git commit: Changed the package names so dbutils and dbutils2 won't conflict if both loaded

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/41d6d58c/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java b/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java
deleted file mode 100644
index cd0c575..0000000
--- a/src/main/java/org/apache/commons/dbutils/BasicRowProcessor.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils;
-
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Basic implementation of the <code>RowProcessor</code> interface.
- *
- * <p>
- * This class is thread-safe.
- * </p>
- *
- * @see RowProcessor
- */
-public class BasicRowProcessor implements RowProcessor {
-
-    /**
-     * The default BeanProcessor instance to use if not supplied in the
-     * constructor.
-     */
-    private static final BeanProcessor defaultConvert = new BeanProcessor();
-
-    /**
-     * Use this to process beans.
-     */
-    private final BeanProcessor convert;
-
-    /**
-     * BasicRowProcessor constructor.  Bean processing defaults to a
-     * BeanProcessor instance.
-     */
-    public BasicRowProcessor() {
-        this(defaultConvert);
-    }
-
-    /**
-     * BasicRowProcessor constructor.
-     * @param convert The BeanProcessor to use when converting columns to
-     * bean properties.
-     * @since DbUtils 1.1
-     */
-    public BasicRowProcessor(BeanProcessor convert) {
-        super();
-        this.convert = convert;
-    }
-
-    /**
-     * Convert a <code>ResultSet</code> row into an <code>Object[]</code>.
-     * This implementation copies column values into the array in the same
-     * order they're returned from the <code>ResultSet</code>.  Array elements
-     * will be set to <code>null</code> if the column was SQL NULL.
-     *
-     * @see org.apache.commons.dbutils.RowProcessor#toArray(java.sql.ResultSet)
-     * @param rs ResultSet that supplies the array data
-     * @throws SQLException if a database access error occurs
-     * @return the newly created array
-     */
-    @Override
-    public Object[] toArray(ResultSet rs) throws SQLException {
-        ResultSetMetaData meta = rs.getMetaData();
-        int cols = meta.getColumnCount();
-        Object[] result = new Object[cols];
-
-        for (int i = 0; i < cols; i++) {
-            result[i] = rs.getObject(i + 1);
-        }
-
-        return result;
-    }
-
-    /**
-     * Convert a <code>ResultSet</code> row into a JavaBean.  This
-     * implementation delegates to a BeanProcessor instance.
-     * @see org.apache.commons.dbutils.RowProcessor#toBean(java.sql.ResultSet, java.lang.Class)
-     * @see org.apache.commons.dbutils.BeanProcessor#toBean(java.sql.ResultSet, java.lang.Class)
-     * @param <T> The type of bean to create
-     * @param rs ResultSet that supplies the bean data
-     * @param type Class from which to create the bean instance
-     * @throws SQLException if a database access error occurs
-     * @return the newly created bean
-     */
-    @Override
-    public <T> T toBean(ResultSet rs, Class<T> type) throws SQLException {
-        return this.convert.toBean(rs, type);
-    }
-
-    /**
-     * Convert a <code>ResultSet</code> into a <code>List</code> of JavaBeans.
-     * This implementation delegates to a BeanProcessor instance.
-     * @see org.apache.commons.dbutils.RowProcessor#toBeanList(java.sql.ResultSet, java.lang.Class)
-     * @see org.apache.commons.dbutils.BeanProcessor#toBeanList(java.sql.ResultSet, java.lang.Class)
-     * @param <T> The type of bean to create
-     * @param rs ResultSet that supplies the bean data
-     * @param type Class from which to create the bean instance
-     * @throws SQLException if a database access error occurs
-     * @return A <code>List</code> of beans with the given type in the order
-     * they were returned by the <code>ResultSet</code>.
-     */
-    @Override
-    public <T> List<T> toBeanList(ResultSet rs, Class<T> type) throws SQLException {
-        return this.convert.toBeanList(rs, type);
-    }
-
-    /**
-     * Convert a <code>ResultSet</code> row into a <code>Map</code>.  This
-     * implementation returns a <code>Map</code> with case insensitive column
-     * names as keys.  Calls to <code>map.get("COL")</code> and
-     * <code>map.get("col")</code> return the same value.
-     * @see org.apache.commons.dbutils.RowProcessor#toMap(java.sql.ResultSet)
-     * @param rs ResultSet that supplies the map data
-     * @throws SQLException if a database access error occurs
-     * @return the newly created Map
-     */
-    @Override
-    public Map<String, Object> toMap(ResultSet rs) throws SQLException {
-        Map<String, Object> result = new CaseInsensitiveHashMap();
-        ResultSetMetaData rsmd = rs.getMetaData();
-        int cols = rsmd.getColumnCount();
-
-        for (int i = 1; i <= cols; i++) {
-            result.put(rsmd.getColumnName(i), rs.getObject(i));
-        }
-
-        return result;
-    }
-
-    /**
-     * A Map that converts all keys to lowercase Strings for case insensitive
-     * lookups.  This is needed for the toMap() implementation because
-     * databases don't consistently handle the casing of column names.
-     *
-     * <p>The keys are stored as they are given [BUG #DBUTILS-34], so we maintain
-     * an internal mapping from lowercase keys to the real keys in order to
-     * achieve the case insensitive lookup.
-     *
-     * <p>Note: This implementation does not allow <tt>null</tt>
-     * for key, whereas {@link HashMap} does, because of the code:
-     * <pre>
-     * key.toString().toLowerCase()
-     * </pre>
-     */
-    private static class CaseInsensitiveHashMap extends HashMap<String, Object> {
-        /**
-         * The internal mapping from lowercase keys to the real keys.
-         *
-         * <p>
-         * Any query operation using the key
-         * ({@link #get(Object)}, {@link #containsKey(Object)})
-         * is done in three steps:
-         * <ul>
-         * <li>convert the parameter key to lower case</li>
-         * <li>get the actual key that corresponds to the lower case key</li>
-         * <li>query the map with the actual key</li>
-         * </ul>
-         * </p>
-         */
-        private final Map<String, String> lowerCaseMap = new HashMap<String, String>();
-
-        /**
-         * Required for serialization support.
-         *
-         * @see java.io.Serializable
-         */
-        private static final long serialVersionUID = -2848100435296897392L;
-
-        /** {@inheritDoc} */
-        @Override
-        public boolean containsKey(Object key) {
-            Object realKey = lowerCaseMap.get(key.toString().toLowerCase(Locale.ENGLISH));
-            return super.containsKey(realKey);
-            // Possible optimisation here:
-            // Since the lowerCaseMap contains a mapping for all the keys,
-            // we could just do this:
-            // return lowerCaseMap.containsKey(key.toString().toLowerCase());
-        }
-
-        /** {@inheritDoc} */
-        @Override
-        public Object get(Object key) {
-            Object realKey = lowerCaseMap.get(key.toString().toLowerCase(Locale.ENGLISH));
-            return super.get(realKey);
-        }
-
-        /** {@inheritDoc} */
-        @Override
-        public Object put(String key, Object value) {
-            /*
-             * In order to keep the map and lowerCaseMap synchronized,
-             * we have to remove the old mapping before putting the
-             * new one. Indeed, oldKey and key are not necessaliry equals.
-             * (That's why we call super.remove(oldKey) and not just
-             * super.put(key, value))
-             */
-            Object oldKey = lowerCaseMap.put(key.toLowerCase(Locale.ENGLISH), key);
-            Object oldValue = super.remove(oldKey);
-            super.put(key, value);
-            return oldValue;
-        }
-
-        /** {@inheritDoc} */
-        @Override
-        public void putAll(Map<? extends String, ?> m) {
-            for (Map.Entry<? extends String, ?> entry : m.entrySet()) {
-                String key = entry.getKey();
-                Object value = entry.getValue();
-                this.put(key, value);
-            }
-        }
-
-        /** {@inheritDoc} */
-        @Override
-        public Object remove(Object key) {
-            Object realKey = lowerCaseMap.remove(key.toString().toLowerCase(Locale.ENGLISH));
-            return super.remove(realKey);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/41d6d58c/src/main/java/org/apache/commons/dbutils/BatchExecutor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/BatchExecutor.java b/src/main/java/org/apache/commons/dbutils/BatchExecutor.java
deleted file mode 100644
index a407455..0000000
--- a/src/main/java/org/apache/commons/dbutils/BatchExecutor.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.Types;
-
-/**
- * This class provides the ability to execute a batch of statements.
- * 
- * It is really just a facade to an array of UpdateExecutors.
- * 
- * @author William Speirs <ws...@apache.org>
- */
-public class BatchExecutor extends AbstractExecutor<BatchExecutor> {
-
-    private final boolean closeConn;
-    
-    public BatchExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
-        super(conn, sql);
-        this.closeConn = closeConnection;
-    }
-    
-    /**
-     * Binds a parameter name to a value for a given statement.
-     * @param statement the statement number to operate on.
-     * @param name the name of the parameter.
-     * @param value the value to bind to the parameter.
-     * @return this object.
-     * @throws SQLException thrown if the statement number does not exist, or any other SQLException.
-     * @see org.apache.commons.dbutils.UpdateExecutor.bind(String, Object)
-     */
-    @Override
-    public BatchExecutor bind(final String name, final Object value) throws SQLException {
-        return bind(name, value, false);
-    }
-    
-    /**
-     * Binds null to a parameter.
-     * Types.VARCHAR is used as the type's parameter.
-     * This usually works, but fails with some Oracle and MS SQL drivers.
-     * @param name the name of the parameter.
-     * @return this execution object to provide the fluent style.
-     * @throws SQLException throw if the parameter is not found, already bound, or there is an issue binding null.
-     */
-    @Override
-    public BatchExecutor bindNull(final String name) throws SQLException {
-        return bindNull(name, Types.VARCHAR, false);
-    }
-    
-    /**
-     * Binds null to a parameter, specifying the parameter's type.
-     * @param name the name of the parameter.
-     * @param sqlType the type of the parameter.
-     * @return this execution object to provide the fluent style.
-     * @throws SQLException throw if the parameter is not found, already bound, or there is an issue binding null.
-     */
-    @Override
-    public BatchExecutor bindNull(final String name, final int sqlType) throws SQLException {
-        return bindNull(name, sqlType, false);
-    }
-    
-    /**
-     * Adds the statement to the batch after binding all of the parameters.
-     * @return this object.
-     * @throws SQLException if a SQLException is thrown during the addBatch() call.
-     * @see java.sql.PreparedStatement.addBatch()
-     */
-    public BatchExecutor addBatch() throws SQLException {
-        try {
-            getStatement().addBatch();
-            clearValueMap();
-        } catch(SQLException e) {
-            rethrow(e);
-        }
-        
-        return this;
-    }
-
-    /**
-     * Calls batch after checking the parameters to ensure nothing is null.
-     * @return an array containing the number of rows updated for each statement.
-     * @throws SQLException If there are database or parameter errors.
-     * @see org.apache.commons.dbutils.UpdateExecutor.update()
-     */
-    public int[] execute() throws SQLException {
-        try {
-            return getStatement().executeBatch();
-        } catch (SQLException e) {
-            rethrow(e);
-        } finally {
-            close(getStatement());
-            if (closeConn) {
-                close(getConnection());
-            }
-        }
-
-        // we get here only if something is thrown
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/41d6d58c/src/main/java/org/apache/commons/dbutils/BeanProcessor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/BeanProcessor.java b/src/main/java/org/apache/commons/dbutils/BeanProcessor.java
deleted file mode 100644
index 5f3a6d1..0000000
--- a/src/main/java/org/apache/commons/dbutils/BeanProcessor.java
+++ /dev/null
@@ -1,504 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils;
-
-import java.beans.BeanInfo;
-import java.beans.IntrospectionException;
-import java.beans.Introspector;
-import java.beans.PropertyDescriptor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.sql.SQLXML;
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * <p>
- * <code>BeanProcessor</code> matches column names to bean property names
- * and converts <code>ResultSet</code> columns into objects for those bean
- * properties.  Subclasses should override the methods in the processing chain
- * to customize behavior.
- * </p>
- *
- * <p>
- * This class is thread-safe.
- * </p>
- *
- * @see BasicRowProcessor
- *
- * @since DbUtils 1.1
- */
-public class BeanProcessor {
-
-    /**
-     * Special array value used by <code>mapColumnsToProperties</code> that
-     * indicates there is no bean property that matches a column from a
-     * <code>ResultSet</code>.
-     */
-    protected static final int PROPERTY_NOT_FOUND = -1;
-
-    /**
-     * Set a bean's primitive properties to these defaults when SQL NULL
-     * is returned.  These are the same as the defaults that ResultSet get*
-     * methods return in the event of a NULL column.
-     */
-    private static final Map<Class<?>, Object> primitiveDefaults = new HashMap<Class<?>, Object>();
-
-    /**
-     * ResultSet column to bean property name overrides.
-     */
-    private final Map<String, String> columnToPropertyOverrides;
-
-    static {
-        primitiveDefaults.put(Integer.TYPE, Integer.valueOf(0));
-        primitiveDefaults.put(Short.TYPE, Short.valueOf((short) 0));
-        primitiveDefaults.put(Byte.TYPE, Byte.valueOf((byte) 0));
-        primitiveDefaults.put(Float.TYPE, Float.valueOf(0f));
-        primitiveDefaults.put(Double.TYPE, Double.valueOf(0d));
-        primitiveDefaults.put(Long.TYPE, Long.valueOf(0L));
-        primitiveDefaults.put(Boolean.TYPE, Boolean.FALSE);
-        primitiveDefaults.put(Character.TYPE, Character.valueOf((char) 0));
-    }
-
-    /**
-     * Constructor for BeanProcessor.
-     */
-    public BeanProcessor() {
-        this(new HashMap<String, String>());
-    }
-
-    /**
-     * Constructor for BeanProcessor configured with column to property name overrides.
-     *
-     * @param columnToPropertyOverrides ResultSet column to bean property name overrides
-     * @since 1.5
-     */
-    public BeanProcessor(Map<String, String> columnToPropertyOverrides) {
-        super();
-        if (columnToPropertyOverrides == null) {
-            throw new IllegalArgumentException("columnToPropertyOverrides map cannot be null");
-        }
-        this.columnToPropertyOverrides = columnToPropertyOverrides;
-    }
-
-    /**
-     * Convert a <code>ResultSet</code> row into a JavaBean.  This
-     * implementation uses reflection and <code>BeanInfo</code> classes to
-     * match column names to bean property names.  Properties are matched to
-     * columns based on several factors:
-     * <br/>
-     * <ol>
-     *     <li>
-     *     The class has a writable property with the same name as a column.
-     *     The name comparison is case insensitive.
-     *     </li>
-     *
-     *     <li>
-     *     The column type can be converted to the property's set method
-     *     parameter type with a ResultSet.get* method.  If the conversion fails
-     *     (ie. the property was an int and the column was a Timestamp) an
-     *     SQLException is thrown.
-     *     </li>
-     * </ol>
-     *
-     * <p>
-     * Primitive bean properties are set to their defaults when SQL NULL is
-     * returned from the <code>ResultSet</code>.  Numeric fields are set to 0
-     * and booleans are set to false.  Object bean properties are set to
-     * <code>null</code> when SQL NULL is returned.  This is the same behavior
-     * as the <code>ResultSet</code> get* methods.
-     * </p>
-     * @param <T> The type of bean to create
-     * @param rs ResultSet that supplies the bean data
-     * @param type Class from which to create the bean instance
-     * @throws SQLException if a database access error occurs
-     * @return the newly created bean
-     */
-    public <T> T toBean(ResultSet rs, Class<T> type) throws SQLException {
-
-        PropertyDescriptor[] props = this.propertyDescriptors(type);
-
-        ResultSetMetaData rsmd = rs.getMetaData();
-        int[] columnToProperty = this.mapColumnsToProperties(rsmd, props);
-
-        return this.createBean(rs, type, props, columnToProperty);
-    }
-
-    /**
-     * Convert a <code>ResultSet</code> into a <code>List</code> of JavaBeans.
-     * This implementation uses reflection and <code>BeanInfo</code> classes to
-     * match column names to bean property names. Properties are matched to
-     * columns based on several factors:
-     * <br/>
-     * <ol>
-     *     <li>
-     *     The class has a writable property with the same name as a column.
-     *     The name comparison is case insensitive.
-     *     </li>
-     *
-     *     <li>
-     *     The column type can be converted to the property's set method
-     *     parameter type with a ResultSet.get* method.  If the conversion fails
-     *     (ie. the property was an int and the column was a Timestamp) an
-     *     SQLException is thrown.
-     *     </li>
-     * </ol>
-     *
-     * <p>
-     * Primitive bean properties are set to their defaults when SQL NULL is
-     * returned from the <code>ResultSet</code>.  Numeric fields are set to 0
-     * and booleans are set to false.  Object bean properties are set to
-     * <code>null</code> when SQL NULL is returned.  This is the same behavior
-     * as the <code>ResultSet</code> get* methods.
-     * </p>
-     * @param <T> The type of bean to create
-     * @param rs ResultSet that supplies the bean data
-     * @param type Class from which to create the bean instance
-     * @throws SQLException if a database access error occurs
-     * @return the newly created List of beans
-     */
-    public <T> List<T> toBeanList(ResultSet rs, Class<T> type) throws SQLException {
-        List<T> results = new ArrayList<T>();
-
-        if (!rs.next()) {
-            return results;
-        }
-
-        PropertyDescriptor[] props = this.propertyDescriptors(type);
-        ResultSetMetaData rsmd = rs.getMetaData();
-        int[] columnToProperty = this.mapColumnsToProperties(rsmd, props);
-
-        do {
-            results.add(this.createBean(rs, type, props, columnToProperty));
-        } while (rs.next());
-
-        return results;
-    }
-
-    /**
-     * Creates a new object and initializes its fields from the ResultSet.
-     * @param <T> The type of bean to create
-     * @param rs The result set.
-     * @param type The bean type (the return type of the object).
-     * @param props The property descriptors.
-     * @param columnToProperty The column indices in the result set.
-     * @return An initialized object.
-     * @throws SQLException if a database error occurs.
-     */
-    private <T> T createBean(ResultSet rs, Class<T> type,
-            PropertyDescriptor[] props, int[] columnToProperty)
-            throws SQLException {
-
-        T bean = this.newInstance(type);
-
-        for (int i = 1; i < columnToProperty.length; i++) {
-
-            if (columnToProperty[i] == PROPERTY_NOT_FOUND) {
-                continue;
-            }
-
-            PropertyDescriptor prop = props[columnToProperty[i]];
-            Class<?> propType = prop.getPropertyType();
-
-            Object value = this.processColumn(rs, i, propType);
-
-            if (propType != null && value == null && propType.isPrimitive()) {
-                value = primitiveDefaults.get(propType);
-            }
-
-            this.callSetter(bean, prop, value);
-        }
-
-        return bean;
-    }
-
-    /**
-     * Calls the setter method on the target object for the given property.
-     * If no setter method exists for the property, this method does nothing.
-     * @param target The object to set the property on.
-     * @param prop The property to set.
-     * @param value The value to pass into the setter.
-     * @throws SQLException if an error occurs setting the property.
-     */
-    private void callSetter(Object target, PropertyDescriptor prop, Object value)
-            throws SQLException {
-
-        Method setter = prop.getWriteMethod();
-
-        if (setter == null) {
-            return;
-        }
-
-        Class<?>[] params = setter.getParameterTypes();
-        try {
-            // convert types for some popular ones
-            if (value instanceof java.util.Date) {
-                final String targetType = params[0].getName();
-                if ("java.sql.Date".equals(targetType)) {
-                    value = new java.sql.Date(((java.util.Date) value).getTime());
-                } else
-                if ("java.sql.Time".equals(targetType)) {
-                    value = new java.sql.Time(((java.util.Date) value).getTime());
-                } else
-                if ("java.sql.Timestamp".equals(targetType)) {
-                    value = new java.sql.Timestamp(((java.util.Date) value).getTime());
-                }
-            }
-
-            // Don't call setter if the value object isn't the right type
-            if (this.isCompatibleType(value, params[0])) {
-                setter.invoke(target, new Object[]{value});
-            } else {
-              throw new SQLException(
-                  "Cannot set " + prop.getName() + ": incompatible types, cannot convert "
-                  + value.getClass().getName() + " to " + params[0].getName());
-                  // value cannot be null here because isCompatibleType allows null
-            }
-
-        } catch (IllegalArgumentException e) {
-            throw new SQLException(
-                "Cannot set " + prop.getName() + ": " + e.getMessage());
-
-        } catch (IllegalAccessException e) {
-            throw new SQLException(
-                "Cannot set " + prop.getName() + ": " + e.getMessage());
-
-        } catch (InvocationTargetException e) {
-            throw new SQLException(
-                "Cannot set " + prop.getName() + ": " + e.getMessage());
-        }
-    }
-
-    /**
-     * ResultSet.getObject() returns an Integer object for an INT column.  The
-     * setter method for the property might take an Integer or a primitive int.
-     * This method returns true if the value can be successfully passed into
-     * the setter method.  Remember, Method.invoke() handles the unwrapping
-     * of Integer into an int.
-     *
-     * @param value The value to be passed into the setter method.
-     * @param type The setter's parameter type (non-null)
-     * @return boolean True if the value is compatible (null => true)
-     */
-    private boolean isCompatibleType(Object value, Class<?> type) {
-        // Do object check first, then primitives
-        if (value == null || type.isInstance(value)) {
-            return true;
-
-        } else if (type.equals(Integer.TYPE) && Integer.class.isInstance(value)) {
-            return true;
-
-        } else if (type.equals(Long.TYPE) && Long.class.isInstance(value)) {
-            return true;
-
-        } else if (type.equals(Double.TYPE) && Double.class.isInstance(value)) {
-            return true;
-
-        } else if (type.equals(Float.TYPE) && Float.class.isInstance(value)) {
-            return true;
-
-        } else if (type.equals(Short.TYPE) && Short.class.isInstance(value)) {
-            return true;
-
-        } else if (type.equals(Byte.TYPE) && Byte.class.isInstance(value)) {
-            return true;
-
-        } else if (type.equals(Character.TYPE) && Character.class.isInstance(value)) {
-            return true;
-
-        } else if (type.equals(Boolean.TYPE) && Boolean.class.isInstance(value)) {
-            return true;
-
-        }
-        return false;
-
-    }
-
-    /**
-     * Factory method that returns a new instance of the given Class.  This
-     * is called at the start of the bean creation process and may be
-     * overridden to provide custom behavior like returning a cached bean
-     * instance.
-     * @param <T> The type of object to create
-     * @param c The Class to create an object from.
-     * @return A newly created object of the Class.
-     * @throws SQLException if creation failed.
-     */
-    protected <T> T newInstance(Class<T> c) throws SQLException {
-        try {
-            return c.newInstance();
-
-        } catch (InstantiationException e) {
-            throw new SQLException(
-                "Cannot create " + c.getName() + ": " + e.getMessage());
-
-        } catch (IllegalAccessException e) {
-            throw new SQLException(
-                "Cannot create " + c.getName() + ": " + e.getMessage());
-        }
-    }
-
-    /**
-     * Returns a PropertyDescriptor[] for the given Class.
-     *
-     * @param c The Class to retrieve PropertyDescriptors for.
-     * @return A PropertyDescriptor[] describing the Class.
-     * @throws SQLException if introspection failed.
-     */
-    private PropertyDescriptor[] propertyDescriptors(Class<?> c)
-        throws SQLException {
-        // Introspector caches BeanInfo classes for better performance
-        BeanInfo beanInfo = null;
-        try {
-            beanInfo = Introspector.getBeanInfo(c);
-
-        } catch (IntrospectionException e) {
-            throw new SQLException(
-                "Bean introspection failed: " + e.getMessage());
-        }
-
-        return beanInfo.getPropertyDescriptors();
-    }
-
-    /**
-     * The positions in the returned array represent column numbers.  The
-     * values stored at each position represent the index in the
-     * <code>PropertyDescriptor[]</code> for the bean property that matches
-     * the column name.  If no bean property was found for a column, the
-     * position is set to <code>PROPERTY_NOT_FOUND</code>.
-     *
-     * @param rsmd The <code>ResultSetMetaData</code> containing column
-     * information.
-     *
-     * @param props The bean property descriptors.
-     *
-     * @throws SQLException if a database access error occurs
-     *
-     * @return An int[] with column index to property index mappings.  The 0th
-     * element is meaningless because JDBC column indexing starts at 1.
-     */
-    protected int[] mapColumnsToProperties(ResultSetMetaData rsmd,
-            PropertyDescriptor[] props) throws SQLException {
-
-        int cols = rsmd.getColumnCount();
-        int[] columnToProperty = new int[cols + 1];
-        Arrays.fill(columnToProperty, PROPERTY_NOT_FOUND);
-
-        for (int col = 1; col <= cols; col++) {
-            String columnName = rsmd.getColumnLabel(col);
-            if (null == columnName || 0 == columnName.length()) {
-              columnName = rsmd.getColumnName(col);
-            }
-            String propertyName = columnToPropertyOverrides.get(columnName);
-            if (propertyName == null) {
-                propertyName = columnName;
-            }
-            for (int i = 0; i < props.length; i++) {
-
-                if (propertyName.equalsIgnoreCase(props[i].getName())) {
-                    columnToProperty[col] = i;
-                    break;
-                }
-            }
-        }
-
-        return columnToProperty;
-    }
-
-    /**
-     * Convert a <code>ResultSet</code> column into an object.  Simple
-     * implementations could just call <code>rs.getObject(index)</code> while
-     * more complex implementations could perform type manipulation to match
-     * the column's type to the bean property type.
-     *
-     * <p>
-     * This implementation calls the appropriate <code>ResultSet</code> getter
-     * method for the given property type to perform the type conversion.  If
-     * the property type doesn't match one of the supported
-     * <code>ResultSet</code> types, <code>getObject</code> is called.
-     * </p>
-     *
-     * @param rs The <code>ResultSet</code> currently being processed.  It is
-     * positioned on a valid row before being passed into this method.
-     *
-     * @param index The current column index being processed.
-     *
-     * @param propType The bean property type that this column needs to be
-     * converted into.
-     *
-     * @throws SQLException if a database access error occurs
-     *
-     * @return The object from the <code>ResultSet</code> at the given column
-     * index after optional type processing or <code>null</code> if the column
-     * value was SQL NULL.
-     */
-    protected Object processColumn(ResultSet rs, int index, Class<?> propType)
-        throws SQLException {
-
-        if ( !propType.isPrimitive() && rs.getObject(index) == null ) {
-            return null;
-        }
-
-        if (propType.equals(String.class)) {
-            return rs.getString(index);
-
-        } else if (
-            propType.equals(Integer.TYPE) || propType.equals(Integer.class)) {
-            return Integer.valueOf(rs.getInt(index));
-
-        } else if (
-            propType.equals(Boolean.TYPE) || propType.equals(Boolean.class)) {
-            return Boolean.valueOf(rs.getBoolean(index));
-
-        } else if (propType.equals(Long.TYPE) || propType.equals(Long.class)) {
-            return Long.valueOf(rs.getLong(index));
-
-        } else if (
-            propType.equals(Double.TYPE) || propType.equals(Double.class)) {
-            return Double.valueOf(rs.getDouble(index));
-
-        } else if (
-            propType.equals(Float.TYPE) || propType.equals(Float.class)) {
-            return Float.valueOf(rs.getFloat(index));
-
-        } else if (
-            propType.equals(Short.TYPE) || propType.equals(Short.class)) {
-            return Short.valueOf(rs.getShort(index));
-
-        } else if (propType.equals(Byte.TYPE) || propType.equals(Byte.class)) {
-            return Byte.valueOf(rs.getByte(index));
-
-        } else if (propType.equals(Timestamp.class)) {
-            return rs.getTimestamp(index);
-
-        } else if (propType.equals(SQLXML.class)) {
-            return rs.getSQLXML(index);
-
-        } else {
-            return rs.getObject(index);
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/41d6d58c/src/main/java/org/apache/commons/dbutils/DbUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/DbUtils.java b/src/main/java/org/apache/commons/dbutils/DbUtils.java
deleted file mode 100644
index fbed34e..0000000
--- a/src/main/java/org/apache/commons/dbutils/DbUtils.java
+++ /dev/null
@@ -1,406 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils;
-
-import static java.sql.DriverManager.registerDriver;
-import java.io.PrintWriter;
-import java.lang.reflect.Constructor;
-import java.sql.Connection;
-import java.sql.Driver;
-import java.sql.DriverPropertyInfo;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.SQLFeatureNotSupportedException;
-import java.sql.Statement;
-import java.util.Properties;
-import java.util.logging.Logger;
-
-/**
- * A collection of JDBC helper methods.  This class is thread safe.
- */
-public final class DbUtils {
-
-    /**
-     * Utility classes do not have a public default constructor.
-     *
-     * @since 1.4
-     */
-    private DbUtils() {
-        // do nothing
-    }
-
-    /**
-     * Close a <code>Connection</code>, avoid closing if null.
-     *
-     * @param conn Connection to close.
-     * @throws SQLException if a database access error occurs
-     */
-    public static void close(Connection conn) throws SQLException {
-        if (conn != null) {
-            conn.close();
-        }
-    }
-
-    /**
-     * Close a <code>ResultSet</code>, avoid closing if null.
-     *
-     * @param rs ResultSet to close.
-     * @throws SQLException if a database access error occurs
-     */
-    public static void close(ResultSet rs) throws SQLException {
-        if (rs != null) {
-            rs.close();
-        }
-    }
-
-    /**
-     * Close a <code>Statement</code>, avoid closing if null.
-     *
-     * @param stmt Statement to close.
-     * @throws SQLException if a database access error occurs
-     */
-    public static void close(Statement stmt) throws SQLException {
-        if (stmt != null) {
-            stmt.close();
-        }
-    }
-
-    /**
-     * Close a <code>Connection</code>, avoid closing if null and hide
-     * any SQLExceptions that occur.
-     *
-     * @param conn Connection to close.
-     */
-    public static void closeQuietly(Connection conn) {
-        try {
-            close(conn);
-        } catch (SQLException e) { // NOPMD
-            // quiet
-        }
-    }
-
-    /**
-     * Close a <code>Connection</code>, <code>Statement</code> and
-     * <code>ResultSet</code>.  Avoid closing if null and hide any
-     * SQLExceptions that occur.
-     *
-     * @param conn Connection to close.
-     * @param stmt Statement to close.
-     * @param rs ResultSet to close.
-     */
-    public static void closeQuietly(Connection conn, Statement stmt,
-            ResultSet rs) {
-
-        try {
-            closeQuietly(rs);
-        } finally {
-            try {
-                closeQuietly(stmt);
-            } finally {
-                closeQuietly(conn);
-            }
-        }
-
-    }
-
-    /**
-     * Close a <code>ResultSet</code>, avoid closing if null and hide any
-     * SQLExceptions that occur.
-     *
-     * @param rs ResultSet to close.
-     */
-    public static void closeQuietly(ResultSet rs) {
-        try {
-            close(rs);
-        } catch (SQLException e) { // NOPMD
-            // quiet
-        }
-    }
-
-    /**
-     * Close a <code>Statement</code>, avoid closing if null and hide
-     * any SQLExceptions that occur.
-     *
-     * @param stmt Statement to close.
-     */
-    public static void closeQuietly(Statement stmt) {
-        try {
-            close(stmt);
-        } catch (SQLException e) { // NOPMD
-            // quiet
-        }
-    }
-
-    /**
-     * Commits a <code>Connection</code> then closes it, avoid closing if null.
-     *
-     * @param conn Connection to close.
-     * @throws SQLException if a database access error occurs
-     */
-    public static void commitAndClose(Connection conn) throws SQLException {
-        if (conn != null) {
-            try {
-                conn.commit();
-            } finally {
-                conn.close();
-            }
-        }
-    }
-
-    /**
-     * Commits a <code>Connection</code> then closes it, avoid closing if null
-     * and hide any SQLExceptions that occur.
-     *
-     * @param conn Connection to close.
-     */
-    public static void commitAndCloseQuietly(Connection conn) {
-        try {
-            commitAndClose(conn);
-        } catch (SQLException e) { // NOPMD
-            // quiet
-        }
-    }
-
-    /**
-     * Loads and registers a database driver class.
-     * If this succeeds, it returns true, else it returns false.
-     *
-     * @param driverClassName of driver to load
-     * @return boolean <code>true</code> if the driver was found, otherwise <code>false</code>
-     */
-    public static boolean loadDriver(String driverClassName) {
-        return loadDriver(DbUtils.class.getClassLoader(), driverClassName);
-    }
-
-    /**
-     * Loads and registers a database driver class.
-     * If this succeeds, it returns true, else it returns false.
-     *
-     * @param classLoader the class loader used to load the driver class
-     * @param driverClassName of driver to load
-     * @return boolean <code>true</code> if the driver was found, otherwise <code>false</code>
-     * @since 1.4
-     */
-    public static boolean loadDriver(ClassLoader classLoader, String driverClassName) {
-        try {
-            Class<?> loadedClass = classLoader.loadClass(driverClassName);
-
-            if (!Driver.class.isAssignableFrom(loadedClass)) {
-                return false;
-            }
-
-            @SuppressWarnings("unchecked") // guarded by previous check
-            Class<Driver> driverClass = (Class<Driver>) loadedClass;
-            Constructor<Driver> driverConstructor = driverClass.getConstructor();
-
-            // make Constructor accessible if it is private
-            boolean isConstructorAccessible = driverConstructor.isAccessible();
-            if (!isConstructorAccessible) {
-                driverConstructor.setAccessible(true);
-            }
-
-            try {
-                Driver driver = driverConstructor.newInstance();
-                registerDriver(new DriverProxy(driver));
-            } finally {
-                driverConstructor.setAccessible(isConstructorAccessible);
-            }
-
-            return true;
-        } catch (Exception e) {
-            return false;
-
-        }
-    }
-
-    /**
-     * Print the stack trace for a SQLException to STDERR.
-     *
-     * @param e SQLException to print stack trace of
-     */
-    public static void printStackTrace(SQLException e) {
-        printStackTrace(e, new PrintWriter(System.err));
-    }
-
-    /**
-     * Print the stack trace for a SQLException to a
-     * specified PrintWriter.
-     *
-     * @param e SQLException to print stack trace of
-     * @param pw PrintWriter to print to
-     */
-    public static void printStackTrace(SQLException e, PrintWriter pw) {
-
-        SQLException next = e;
-        while (next != null) {
-            next.printStackTrace(pw);
-            next = next.getNextException();
-            if (next != null) {
-                pw.println("Next SQLException:");
-            }
-        }
-    }
-
-    /**
-     * Print warnings on a Connection to STDERR.
-     *
-     * @param conn Connection to print warnings from
-     */
-    public static void printWarnings(Connection conn) {
-        printWarnings(conn, new PrintWriter(System.err));
-    }
-
-    /**
-     * Print warnings on a Connection to a specified PrintWriter.
-     *
-     * @param conn Connection to print warnings from
-     * @param pw PrintWriter to print to
-     */
-    public static void printWarnings(Connection conn, PrintWriter pw) {
-        if (conn != null) {
-            try {
-                printStackTrace(conn.getWarnings(), pw);
-            } catch (SQLException e) {
-                printStackTrace(e, pw);
-            }
-        }
-    }
-
-    /**
-     * Rollback any changes made on the given connection.
-     * @param conn Connection to rollback.  A null value is legal.
-     * @throws SQLException if a database access error occurs
-     */
-    public static void rollback(Connection conn) throws SQLException {
-        if (conn != null) {
-            conn.rollback();
-        }
-    }
-
-    /**
-     * Performs a rollback on the <code>Connection</code> then closes it,
-     * avoid closing if null.
-     *
-     * @param conn Connection to rollback.  A null value is legal.
-     * @throws SQLException if a database access error occurs
-     * @since DbUtils 1.1
-     */
-    public static void rollbackAndClose(Connection conn) throws SQLException {
-        if (conn != null) {
-            try {
-                conn.rollback();
-            } finally {
-                conn.close();
-            }
-        }
-    }
-
-    /**
-     * Performs a rollback on the <code>Connection</code> then closes it,
-     * avoid closing if null and hide any SQLExceptions that occur.
-     *
-     * @param conn Connection to rollback.  A null value is legal.
-     * @since DbUtils 1.1
-     */
-    public static void rollbackAndCloseQuietly(Connection conn) {
-        try {
-            rollbackAndClose(conn);
-        } catch (SQLException e) { // NOPMD
-            // quiet
-        }
-    }
-
-    /**
-     * Simple {@link Driver} proxy class that proxies a JDBC Driver loaded dynamically.
-     *
-     * @since 1.6
-     */
-    private static final class DriverProxy implements Driver {
-
-        /**
-         * The adapted JDBC Driver loaded dynamically.
-         */
-        private final Driver adapted;
-
-        /**
-         * Creates a new JDBC Driver that adapts a JDBC Driver loaded dynamically.
-         *
-         * @param adapted the adapted JDBC Driver loaded dynamically.
-         */
-        public DriverProxy(Driver adapted) {
-            this.adapted = adapted;
-        }
-
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public boolean acceptsURL(String url) throws SQLException {
-            return adapted.acceptsURL(url);
-        }
-
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public Connection connect(String url, Properties info) throws SQLException {
-            return adapted.connect(url, info);
-        }
-
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public int getMajorVersion() {
-            return adapted.getMajorVersion();
-        }
-
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public int getMinorVersion() {
-            return adapted.getMinorVersion();
-        }
-
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException {
-            return adapted.getPropertyInfo(url, info);
-        }
-
-        /**
-         * {@inheritDoc}
-         */
-        @Override
-        public boolean jdbcCompliant() {
-            return adapted.jdbcCompliant();
-        }
-
-        /**
-         * Java 1.7 method.
-         */
-        @SuppressWarnings("unused")
-        public Logger getParentLogger() throws SQLFeatureNotSupportedException {
-            throw new SQLFeatureNotSupportedException();
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/41d6d58c/src/main/java/org/apache/commons/dbutils/GenerousBeanProcessor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/GenerousBeanProcessor.java b/src/main/java/org/apache/commons/dbutils/GenerousBeanProcessor.java
deleted file mode 100644
index 8dccee7..0000000
--- a/src/main/java/org/apache/commons/dbutils/GenerousBeanProcessor.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils;
-
-
-import java.beans.PropertyDescriptor;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.util.Arrays;
-
-
-/**
- * Provides generous name matching (e.g. underscore-aware) from DB
- * columns to Java Bean properties.
- */
-public class GenerousBeanProcessor extends BeanProcessor {
-    
-    /**
-     * Default constructor.
-     */
-    public GenerousBeanProcessor() {
-        super();
-    }
-    
-    @Override
-    protected int[] mapColumnsToProperties(final ResultSetMetaData rsmd,
-                                           final PropertyDescriptor[] props) throws SQLException {
-
-        final int cols = rsmd.getColumnCount();
-        final int[] columnToProperty = new int[cols + 1];
-        Arrays.fill(columnToProperty, PROPERTY_NOT_FOUND);
-
-        for (int col = 1; col <= cols; col++) {
-            String columnName = rsmd.getColumnLabel(col);
-            
-            if (null == columnName || 0 == columnName.length()) {
-                columnName = rsmd.getColumnName(col);
-            }
-            
-            final String generousColumnName = columnName.replace("_","");
-
-            for (int i = 0; i < props.length; i++) {
-                final String propName = props[i].getName();
-                
-                // see if either the column name, or the generous one matches
-                if (columnName.equalsIgnoreCase(propName) ||
-                    generousColumnName.equalsIgnoreCase(propName)) {
-                    columnToProperty[col] = i;
-                    break;
-                }
-            }
-        }
-
-        return columnToProperty;
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/41d6d58c/src/main/java/org/apache/commons/dbutils/InsertExecutor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/InsertExecutor.java b/src/main/java/org/apache/commons/dbutils/InsertExecutor.java
deleted file mode 100644
index a3a9898..0000000
--- a/src/main/java/org/apache/commons/dbutils/InsertExecutor.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-
-public class InsertExecutor extends AbstractExecutor<InsertExecutor> {
-
-    private final boolean closeConn;
-
-    public InsertExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
-        super(conn, sql);
-        this.closeConn = closeConnection;
-    }
-
-    /**
-     * Executes the given INSERT SQL statement.
-     * 
-     * @param handler The handler used to create the result object from
-     * the <code>ResultSet</code> of auto-generated keys.
-     *
-     * @return An object generated by the handler.
-     * @throws SQLException If there are database or parameter errors.
-     */
-    public <T> T execute(ResultSetHandler<T> handler) throws SQLException {
-        // throw an exception if there are unmapped parameters
-        this.throwIfUnmappedParams();
-
-        // make sure our handler is not null
-        if (handler == null) {
-            if (closeConn) {
-                close(getConnection());
-            }
-            throw new SQLException("Null ResultSetHandler");
-        }
-
-        try {
-            // execute the update
-            getStatement().executeUpdate();
-            
-            // get the result set
-            final ResultSet resultSet = getStatement().getGeneratedKeys();
-            
-            // run the handler over the results and return them
-            return handler.handle(resultSet);
-        } catch (SQLException e) {
-            this.rethrow(e);
-        } finally {
-            close(getStatement());
-            if (closeConn) {
-                close(getConnection());
-            }
-        }
-
-        // we get here only if something is thrown
-        return null;
-    }
-    
-    /**
-     * Executes the given INSERT SQL statement.
-     * @return the number of rows updated.
-     * @throws SQLException If there are database or parameter errors.
-     */
-    public int execute() throws SQLException {
-        // throw an exception if there are unmapped parameters
-        this.throwIfUnmappedParams();
-
-        try {
-            // execute the insert
-            return getStatement().executeUpdate();
-        } catch (SQLException e) {
-            this.rethrow(e);
-        } finally {
-            close(getStatement());
-            if (closeConn) {
-                close(getConnection());
-            }
-        }
-        
-        return 0; // only get here on an error
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/41d6d58c/src/main/java/org/apache/commons/dbutils/ProxyFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/ProxyFactory.java b/src/main/java/org/apache/commons/dbutils/ProxyFactory.java
deleted file mode 100644
index 3a212e1..0000000
--- a/src/main/java/org/apache/commons/dbutils/ProxyFactory.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Proxy;
-import java.sql.CallableStatement;
-import java.sql.Connection;
-import java.sql.Driver;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.Statement;
-
-/**
- * Creates proxy implementations of JDBC interfaces.  This avoids
- * incompatibilities between the JDBC 2 and JDBC 3 interfaces.  This class is
- * thread safe.
- *
- * @see java.lang.reflect.Proxy
- * @see java.lang.reflect.InvocationHandler
- */
-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() {
-        super();
-    }
-
-    /**
-     * 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(Class<T> type, InvocationHandler handler) {
-        return type.cast(Proxy.newProxyInstance(handler.getClass().getClassLoader(), new Class<?>[] {type}, handler));
-    }
-
-    /**
-     * Creates a new proxy <code>CallableStatement</code> object.
-     * @param handler The handler that intercepts/overrides method calls.
-     * @return proxied CallableStatement
-     */
-    public CallableStatement createCallableStatement(InvocationHandler handler) {
-        return newProxyInstance(CallableStatement.class, handler);
-    }
-
-    /**
-     * Creates a new proxy <code>Connection</code> object.
-     * @param handler The handler that intercepts/overrides method calls.
-     * @return proxied Connection
-     */
-    public Connection createConnection(InvocationHandler handler) {
-        return newProxyInstance(Connection.class, handler);
-    }
-
-    /**
-     * Creates a new proxy <code>Driver</code> object.
-     * @param handler The handler that intercepts/overrides method calls.
-     * @return proxied Driver
-     */
-    public Driver createDriver(InvocationHandler handler) {
-        return newProxyInstance(Driver.class, handler);
-    }
-
-    /**
-     * Creates a new proxy <code>PreparedStatement</code> object.
-     * @param handler The handler that intercepts/overrides method calls.
-     * @return proxied PreparedStatement
-     */
-    public PreparedStatement createPreparedStatement(InvocationHandler handler) {
-        return newProxyInstance(PreparedStatement.class, handler);
-    }
-
-    /**
-     * Creates a new proxy <code>ResultSet</code> object.
-     * @param handler The handler that intercepts/overrides method calls.
-     * @return proxied ResultSet
-     */
-    public ResultSet createResultSet(InvocationHandler handler) {
-        return newProxyInstance(ResultSet.class, handler);
-    }
-
-    /**
-     * Creates a new proxy <code>ResultSetMetaData</code> object.
-     * @param handler The handler that intercepts/overrides method calls.
-     * @return proxied ResultSetMetaData
-     */
-    public ResultSetMetaData createResultSetMetaData(InvocationHandler handler) {
-        return newProxyInstance(ResultSetMetaData.class, handler);
-    }
-
-    /**
-     * Creates a new proxy <code>Statement</code> object.
-     * @param handler The handler that intercepts/overrides method calls.
-     * @return proxied Statement
-     */
-    public Statement createStatement(InvocationHandler handler) {
-        return newProxyInstance(Statement.class, handler);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/41d6d58c/src/main/java/org/apache/commons/dbutils/QueryExecutor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/QueryExecutor.java b/src/main/java/org/apache/commons/dbutils/QueryExecutor.java
deleted file mode 100644
index 9f13bb0..0000000
--- a/src/main/java/org/apache/commons/dbutils/QueryExecutor.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-/**
- * Fluent class for executing a query.
- * 
- * @since 2.0
- * @author William Speirs <ws...@apache.org>
- */
-class QueryExecutor extends AbstractExecutor<QueryExecutor> {
-    
-    private final boolean closeConn;
-
-    public QueryExecutor(final Connection conn, final String sql, final boolean closeConnection) throws SQLException {
-        super(conn, sql);
-        this.closeConn = closeConnection;
-    }
-
-    /**
-     * Calls query after checking the parameters to ensure nothing is null.
-     *
-     * @param rsh The handler that converts the results into an object.
-     *
-     * @return The results of the query.
-     * @throws SQLException If there are database or parameter errors.
-     */
-    public <T> T execute(ResultSetHandler<T> handler) throws SQLException {
-        // throw an exception if there are unmapped parameters
-        this.throwIfUnmappedParams();
-        
-        // make sure our handler is not null
-        if (handler == null) {
-            if (closeConn) {
-                close(getConnection());
-            }
-            throw new SQLException("Null ResultSetHandler");
-        }
-
-        ResultSet resultSet = null;
-
-        try {
-            // execute the query, wrapping it
-            resultSet = this.wrap(getStatement().executeQuery());
-            // execute the handler
-            return handler.handle(resultSet);
-        } catch (SQLException e) {
-            // rethrow our exception printing more information
-            this.rethrow(e);
-        } finally {
-            try {
-                close(resultSet);
-            } finally {
-                close(getStatement());
-                if (closeConn) {
-                    close(getConnection());
-                }
-            }
-        }
-
-        // we get here only if something is thrown
-        return null;
-    }
-}

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/41d6d58c/src/main/java/org/apache/commons/dbutils/QueryLoader.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/QueryLoader.java b/src/main/java/org/apache/commons/dbutils/QueryLoader.java
deleted file mode 100644
index e19d08b..0000000
--- a/src/main/java/org/apache/commons/dbutils/QueryLoader.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-/**
- * <code>QueryLoader</code> is a registry for sets of queries so
- * that multiple copies of the same queries aren't loaded into memory.
- * This implementation loads properties files filled with query name to
- * SQL mappings.  This class is thread safe.
- */
-public class QueryLoader {
-
-    /**
-     * The Singleton instance of this class.
-     */
-    private static final QueryLoader instance = new QueryLoader();
-
-    /**
-     * Return an instance of this class.
-     * @return The Singleton instance.
-     */
-    public static QueryLoader instance() {
-        return instance;
-    }
-
-    /**
-     * Maps query set names to Maps of their queries.
-     */
-    private final Map<String, Map<String, String>> queries = new HashMap<String, Map<String, String>>();
-
-    /**
-     * QueryLoader constructor.
-     */
-    protected QueryLoader() {
-        super();
-    }
-
-    /**
-     * Loads a Map of query names to SQL values.  The Maps are cached so a
-     * subsequent request to load queries from the same path will return
-     * the cached Map.
-     *
-     * @param path The path that the ClassLoader will use to find the file.
-     * This is <strong>not</strong> a file system path.  If you had a jarred
-     * Queries.properties file in the com.yourcorp.app.jdbc package you would
-     * pass "/com/yourcorp/app/jdbc/Queries.properties" to this method.
-     * @throws IOException if a file access error occurs
-     * @throws IllegalArgumentException if the ClassLoader can't find a file at
-     * the given path.
-     * @return Map of query names to SQL values
-     */
-    public synchronized Map<String, String> load(String path) throws IOException {
-
-        Map<String, String> queryMap = this.queries.get(path);
-
-        if (queryMap == null) {
-            queryMap = this.loadQueries(path);
-            this.queries.put(path, queryMap);
-        }
-
-        return queryMap;
-    }
-
-    /**
-     * Loads a set of named queries into a Map object.  This implementation
-     * reads a properties file at the given path.
-     * @param path The path that the ClassLoader will use to find the file.
-     * @throws IOException if a file access error occurs
-     * @throws IllegalArgumentException if the ClassLoader can't find a file at
-     * the given path.
-     * @since DbUtils 1.1
-     * @return Map of query names to SQL values
-     */
-    protected Map<String, String> loadQueries(String path) throws IOException {
-        // Findbugs flags getClass().getResource as a bad practice; maybe we should change the API?
-        InputStream in = getClass().getResourceAsStream(path);
-
-        if (in == null) {
-            throw new IllegalArgumentException(path + " not found.");
-        }
-
-        Properties props = new Properties();
-        try {
-            props.load(in);
-        } finally {
-            in.close();
-        }
-
-        // Copy to HashMap for better performance
-
-        @SuppressWarnings({ "rawtypes", "unchecked" }) // load() always creates <String,String> entries
-        HashMap<String, String> hashMap = new HashMap(props);
-        return hashMap;
-    }
-
-    /**
-     * Removes the queries for the given path from the cache.
-     * @param path The path that the queries were loaded from.
-     */
-    public synchronized void unload(String path) {
-        this.queries.remove(path);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/41d6d58c/src/main/java/org/apache/commons/dbutils/QueryRunner.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/QueryRunner.java b/src/main/java/org/apache/commons/dbutils/QueryRunner.java
deleted file mode 100644
index 47a21cd..0000000
--- a/src/main/java/org/apache/commons/dbutils/QueryRunner.java
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-import javax.sql.DataSource;
-
-/**
- * Executes SQL queries with pluggable strategies for handling
- * <code>ResultSet</code>s.  This class is thread safe.
- *
- * @see ResultSetHandler
- */
-public class QueryRunner {
-    /**
-     * The DataSource to retrieve connections from.
-     */
-    private final DataSource ds;
-
-    /**
-     * Constructor for QueryRunner.
-     */
-    public QueryRunner() {
-        ds = null;
-    }
-
-    /**
-     * Constructor for QueryRunner that takes a <code>DataSource</code> to use.
-     *
-     * Methods that do not take a <code>Connection</code> parameter will retrieve connections from this
-     * <code>DataSource</code>.
-     *
-     * @param ds The <code>DataSource</code> to retrieve connections from.
-     */
-    public QueryRunner(final DataSource ds) {
-        this.ds = ds;
-    }
-    
-    /**
-     * Returns the <code>DataSource</code> this runner is using.
-     * <code>QueryRunner</code> methods always call this method to get the
-     * <code>DataSource</code> so subclasses can provide specialized behavior.
-     *
-     * @return DataSource the runner is using
-     */
-    public DataSource getDataSource() {
-        return this.ds;
-    }
-
-    /**
-     * Factory method that creates and initializes a <code>Connection</code>
-     * object. <code>QueryRunner</code> methods always call this method to
-     * retrieve connections from its DataSource. Subclasses can override this
-     * method to provide special <code>Connection</code> configuration if
-     * needed. This implementation simply calls <code>ds.getConnection()</code>.
-     *
-     * @return An initialized <code>Connection</code>.
-     * @throws SQLException if a database access error occurs
-     */
-    protected Connection prepareConnection() throws SQLException {
-        if (this.getDataSource() == null) {
-            throw new SQLException(
-                    "QueryRunner requires a DataSource to be "
-                    + "invoked in this way, or a Connection should be passed in");
-        }
-        return this.getDataSource().getConnection();
-    }
-
-    /**
-     * Close a <code>Connection</code>. This implementation avoids closing if
-     * null and does <strong>not</strong> suppress any exceptions. Subclasses
-     * can override to provide special handling like logging.
-     *
-     * @param conn Connection to close
-     * @throws SQLException if a database access error occurs
-     */
-    private void close(Connection conn) throws SQLException {
-        DbUtils.close(conn);
-    }
-
-    /**
-     * Creates an {@link org.apache.commons.dbutils.BatchExecutor} for the given SQL.
-     * <code>Connection</code> is retrieved from the <code>DataSource</code>
-     * set in the constructor.  This <code>Connection</code> must be in
-     * auto-commit mode or the insert will not be saved. The <code>Connection</code> is
-     * closed after the call. 
-     * 
-     * @param sql The SQL statement to execute.
-     * 
-     * @return An {@link org.apache.commons.dbutils.BatchExecutor} for this SQL statement.
-     * @throws SQLException If there are database or parameter errors.
-     */
-    public BatchExecutor batch(String sql) throws SQLException {
-        return this.batch(this.prepareConnection(), true, sql);
-    }
-
-    /**
-     * Creates an {@link org.apache.commons.dbutils.BatchExecutor} for the given SQL statement and connection.
-     * The connection is <b>NOT</b> closed after execution.
-     *
-     * @param conn The connection to use for the batch call.
-     * @param sql The SQL statement to execute.
-     * 
-     * @return An {@link org.apache.commons.dbutils.BatchExecutor} for this SQL statement.
-     * @throws SQLException If there are database or parameter errors.
-     */
-    public BatchExecutor batch(Connection conn, String sql) throws SQLException {
-        return this.batch(conn, true, sql);
-    }
-
-    /**
-     * Creates an {@link org.apache.commons.dbutils.BatchExecutor} for the given SQL statement and connection.
-     * 
-     * @param conn The connection to use for the batch call.
-     * @param closeConn True if the connection should be closed, false otherwise.
-     * @param sql The SQL statement to execute.
-     * 
-     * @return An {@link org.apache.commons.dbutils.BatchExecutor} for this SQL statement.
-     * @throws SQLException If there are database or parameter errors.
-     */
-    public BatchExecutor batch(Connection conn, boolean closeConn, String sql) throws SQLException {
-        if (conn == null) {
-            throw new SQLException("Null connection");
-        }
-
-        if (sql == null) {
-            if (closeConn) {
-                close(conn);
-            }
-            throw new SQLException("Null SQL statement");
-        }
-        
-        return new BatchExecutor(conn, sql, closeConn);
-    }
-
-    /**
-     * Creates an {@link org.apache.commons.dbutils.QueryExecutor} for the given SQL.
-     * <code>Connection</code> is retrieved from the <code>DataSource</code>
-     * set in the constructor.  This <code>Connection</code> must be in
-     * auto-commit mode or the insert will not be saved. The <code>Connection</code> is
-     * closed after the call. 
-     * 
-     * @param sql The SQL statement to execute.
-     * 
-     * @return An {@link org.apache.commons.dbutils.QueryExecutor} for this SQL statement.
-     * @throws SQLException If there are database or parameter errors.
-     */
-    public QueryExecutor query(String sql) throws SQLException {
-        return this.query(this.prepareConnection(), true, sql);
-    }
-
-    /**
-     * Creates an {@link org.apache.commons.dbutils.QueryExecutor} for the given SQL statement and connection.
-     * The connection is <b>NOT</b> closed after execution.
-     * 
-     * @param conn The connection to use for the update call.
-     * @param sql The SQL statement to execute.
-     * 
-     * @return An {@link org.apache.commons.dbutils.QueryExecutor} for this SQL statement.
-     * @throws SQLException If there are database or parameter errors.
-     */
-    public QueryExecutor query(Connection conn, String sql) throws SQLException {
-        return this.query(conn, false, sql);
-    }
-
-    /**
-     * Creates an {@link org.apache.commons.dbutils.QueryExecutor} for the given SQL statement and connection.
-     * 
-     * @param conn The connection to use for the query call.
-     * @param closeConn True if the connection should be closed, false otherwise.
-     * @param sql The SQL statement to execute.
-     * 
-     * @return An {@link org.apache.commons.dbutils.QueryExecutor} for this SQL statement.
-     * @throws SQLException If there are database or parameter errors.
-     */
-    public QueryExecutor query(Connection conn, boolean closeConn, String sql) throws SQLException {
-        if (conn == null) {
-            throw new SQLException("Null connection");
-        }
-
-        if (sql == null) {
-            if (closeConn) {
-                close(conn);
-            }
-            throw new SQLException("Null SQL statement");
-        }
-        
-        return new QueryExecutor(conn, sql, closeConn);
-    }
-
-    /**
-     * Creates an {@link org.apache.commons.dbutils.UpdateExecutor} for the given SQL.
-     * <code>Connection</code> is retrieved from the <code>DataSource</code>
-     * set in the constructor.  This <code>Connection</code> must be in
-     * auto-commit mode or the insert will not be saved. The <code>Connection</code> is
-     * closed after the call. 
-     *
-     * @param sql The SQL statement to execute.
-     * 
-     * @return An {@link org.apache.commons.dbutils.UpdateExecutor} for this SQL statement.
-     * @throws SQLException if a database access error occurs
-     */
-    public UpdateExecutor update(String sql) throws SQLException {
-        return this.update(this.prepareConnection(), true, sql);
-    }
-
-    /**
-     * Creates an {@link org.apache.commons.dbutils.UpdateExecutor} for the given SQL statement and connection.
-     * The connection is <b>NOT</b> closed after execution.
-     * 
-     * @param conn The connection to use for the update call.
-     * @param sql The SQL statement to execute.
-     * 
-     * @return An {@link org.apache.commons.dbutils.UpdateExecutor} for this SQL statement.
-     * @throws SQLException If there are database or parameter errors.
-     */
-    public UpdateExecutor update(Connection conn, String sql) throws SQLException {
-        return this.update(conn, false, sql);
-    }
-
-    /**
-     * Creates an {@link org.apache.commons.dbutils.UpdateExecutor} for the given SQL statement and connection.
-     * 
-     * @param conn The connection to use for the update call.
-     * @param closeConn True if the connection should be closed, false otherwise.
-     * @param sql The SQL statement to execute.
-     * 
-     * @return An {@link org.apache.commons.dbutils.UpdateExecutor} for this SQL statement.
-     * @throws SQLException If there are database or parameter errors.
-     */
-    public UpdateExecutor update(Connection conn, boolean closeConn, String sql) throws SQLException {
-        if (conn == null) {
-            throw new SQLException("Null connection");
-        }
-
-        if (sql == null) {
-            if (closeConn) {
-                close(conn);
-            }
-            throw new SQLException("Null SQL statement");
-        }
-
-        return new UpdateExecutor(conn, sql, closeConn);
-    }
-
-    /**
-     * Creates an {@link org.apache.commons.dbutils.InsertExecutor} for the given SQL.
-     * <code>Connection</code> is retrieved from the <code>DataSource</code>
-     * set in the constructor.  This <code>Connection</code> must be in
-     * auto-commit mode or the insert will not be saved. The <code>Connection</code> is
-     * closed after the call. 
-     * 
-     * @param sql The SQL statement to execute.
-     *
-     * @return An {@link org.apache.commons.dbutils.InsertExecutor} for this SQL statement.
-     * @throws SQLException If there are database or parameter errors.
-     */
-    public InsertExecutor insert(String sql) throws SQLException {
-        return insert(this.prepareConnection(), true, sql);
-    }
-
-    /**
-     * Creates an {@link org.apache.commons.dbutils.InsertExecutor} for the given SQL and connection
-     * The connection is <b>NOT</b> closed after execution.
-     * 
-     * @param conn The connection to use for the query call.
-     * @param sql The SQL statement to execute.
-     *
-     * @return An {@link org.apache.commons.dbutils.InsertExecutor} for this SQL statement.
-     * @throws SQLException If there are database or parameter errors.
-     */
-    public InsertExecutor insert(Connection conn, String sql) throws SQLException {
-        return insert(conn, false, sql);
-    }
-
-    /**
-     * Creates an {@link org.apache.commons.dbutils.InsertExecutor} for the given SQL and connection.
-     * 
-     * @param conn The connection to use for the insert call.
-     * @param closeConn True if the connection should be closed, false otherwise.
-     * @param sql The SQL statement to execute.
-     *
-     * @return An {@link org.apache.commons.dbutils.InsertExecutor} for this SQL statement.
-     * @throws SQLException If there are database or parameter errors.
-     */
-    public InsertExecutor insert(Connection conn, boolean closeConn, String sql) throws SQLException {
-        if (conn == null) {
-            throw new SQLException("Null connection");
-        }
-
-        if (sql == null) {
-            if (closeConn) {
-                close(conn);
-            }
-            throw new SQLException("Null SQL statement");
-        }
-        
-        return new InsertExecutor(conn, sql, closeConn);
-    }
-}

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/41d6d58c/src/main/java/org/apache/commons/dbutils/ResultSetHandler.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/ResultSetHandler.java b/src/main/java/org/apache/commons/dbutils/ResultSetHandler.java
deleted file mode 100644
index d1a7b4c..0000000
--- a/src/main/java/org/apache/commons/dbutils/ResultSetHandler.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils;
-
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-/**
- * Implementations of this interface convert ResultSets into other objects.
- *
- * @param <T> the target type the input ResultSet will be converted to.
- */
-public interface ResultSetHandler<T> {
-
-    /**
-     * Turn the <code>ResultSet</code> into an Object.
-     *
-     * @param rs The <code>ResultSet</code> to handle.  It has not been touched
-     * before being passed to this method.
-     *
-     * @return An Object initialized with <code>ResultSet</code> data. It is
-     * legal for implementations to return <code>null</code> if the
-     * <code>ResultSet</code> contained 0 rows.
-     *
-     * @throws SQLException if a database access error occurs
-     */
-    T handle(ResultSet rs) throws SQLException;
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/41d6d58c/src/main/java/org/apache/commons/dbutils/ResultSetIterator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/dbutils/ResultSetIterator.java b/src/main/java/org/apache/commons/dbutils/ResultSetIterator.java
deleted file mode 100644
index 0eeda4a..0000000
--- a/src/main/java/org/apache/commons/dbutils/ResultSetIterator.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.commons.dbutils;
-
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.Iterator;
-
-/**
- * <p>
- * Wraps a <code>ResultSet</code> in an <code>Iterator<Object[]></code>.  This is useful
- * when you want to present a non-database application layer with domain
- * neutral data.
- * </p>
- *
- * <p>
- * This implementation requires the <code>ResultSet.isLast()</code> method
- * to be implemented.
- * </p>
- */
-public class ResultSetIterator implements Iterator<Object[]> {
-
-    /**
-     * The wrapped <code>ResultSet</code>.
-     */
-    private final ResultSet rs;
-
-    /**
-     * The processor to use when converting a row into an Object[].
-     */
-    private final RowProcessor convert;
-
-    /**
-     * Constructor for ResultSetIterator.
-     * @param rs Wrap this <code>ResultSet</code> in an <code>Iterator</code>.
-     */
-    public ResultSetIterator(ResultSet rs) {
-        this(rs, new BasicRowProcessor());
-    }
-
-    /**
-     * Constructor for ResultSetIterator.
-     * @param rs Wrap this <code>ResultSet</code> in an <code>Iterator</code>.
-     * @param convert The processor to use when converting a row into an
-     * <code>Object[]</code>.  Defaults to a
-     * <code>BasicRowProcessor</code>.
-     */
-    public ResultSetIterator(ResultSet rs, RowProcessor convert) {
-        this.rs = rs;
-        this.convert = convert;
-    }
-
-    /**
-     * Returns true if there are more rows in the ResultSet.
-     * @return boolean <code>true</code> if there are more rows
-     * @throws RuntimeException if an SQLException occurs.
-     */
-    @Override
-    public boolean hasNext() {
-        try {
-            return !rs.isLast();
-        } catch (SQLException e) {
-            rethrow(e);
-            return false;
-        }
-    }
-
-    /**
-     * Returns the next row as an <code>Object[]</code>.
-     * @return An <code>Object[]</code> with the same number of elements as
-     * columns in the <code>ResultSet</code>.
-     * @see java.util.Iterator#next()
-     * @throws RuntimeException if an SQLException occurs.
-     */
-    @Override
-    public Object[] next() {
-        try {
-            rs.next();
-            return this.convert.toArray(rs);
-        } catch (SQLException e) {
-            rethrow(e);
-            return null;
-        }
-    }
-
-    /**
-     * Deletes the current row from the <code>ResultSet</code>.
-     * @see java.util.Iterator#remove()
-     * @throws RuntimeException if an SQLException occurs.
-     */
-    @Override
-    public void remove() {
-        try {
-            this.rs.deleteRow();
-        } catch (SQLException e) {
-            rethrow(e);
-        }
-    }
-
-    /**
-     * Rethrow the SQLException as a RuntimeException.  This implementation
-     * creates a new RuntimeException with the SQLException's error message.
-     * @param e SQLException to rethrow
-     * @since DbUtils 1.1
-     */
-    protected void rethrow(SQLException e) {
-        throw new RuntimeException(e.getMessage());
-    }
-
-    /**
-     * Generates an <code>Iterable</code>, suitable for use in for-each loops.
-     *
-     * @param rs Wrap this <code>ResultSet</code> in an <code>Iterator</code>.
-     * @return an <code>Iterable</code>, suitable for use in for-each loops.
-     */
-    public static Iterable<Object[]> iterable(final ResultSet rs) {
-        return new Iterable<Object[]>() {
-
-            @Override
-            public Iterator<Object[]> iterator() {
-                return new ResultSetIterator(rs);
-            }
-
-        };
-    }
-
-}