Added: 
dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/BasicRowProcessor.java.html
==============================================================================
--- 
dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/BasicRowProcessor.java.html
 (added)
+++ 
dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/BasicRowProcessor.java.html
 Wed Jan  8 06:02:46 2020
@@ -0,0 +1,277 @@
+<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD 
XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";><html 
xmlns="http://www.w3.org/1999/xhtml"; lang="en"><head><meta 
http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link 
rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link 
rel="shortcut icon" href="../jacoco-resources/report.gif" 
type="image/gif"/><title>BasicRowProcessor.java</title><link rel="stylesheet" 
href="../jacoco-resources/prettify.css" type="text/css"/><script 
type="text/javascript" 
src="../jacoco-resources/prettify.js"></script></head><body 
onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" 
id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" 
class="el_session">Sessions</a></span><a href="../index.html" 
class="el_report">Apache Commons DbUtils</a> &gt; <a href="index.source.html" 
class="el_package">org.apache.commons.dbutils</a> &gt; <span class="el
 
_source">BasicRowProcessor.java</span></div><h1>BasicRowProcessor.java</h1><pre 
class="source lang-java linenums">/*
+ * 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 &quot;License&quot;); 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 &quot;AS IS&quot; 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.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Basic implementation of the {@code RowProcessor} interface.
+ *
+ * &lt;p&gt;
+ * This class is thread-safe.
+ * &lt;/p&gt;
+ *
+ * @see RowProcessor
+ */
+public class BasicRowProcessor implements RowProcessor {
+
+    /**
+     * The default BeanProcessor instance to use if not supplied in the
+     * constructor.
+     */
+<span class="fc" id="L43">    private static final BeanProcessor 
defaultConvert = new BeanProcessor();</span>
+
+    /**
+     * The Singleton instance of this class.
+     */
+<span class="fc" id="L48">    private static final BasicRowProcessor instance 
= new BasicRowProcessor();</span>
+
+    protected static Map&lt;String, Object&gt; 
createCaseInsensitiveHashMap(final int cols) {
+<span class="fc" id="L51">        return new 
CaseInsensitiveHashMap(cols);</span>
+    }
+
+    /**
+     * Returns the Singleton instance of this class.
+     *
+     * @return The single instance of this class.
+     * @deprecated Create instances with the constructors instead.  This will
+     * be removed after DbUtils 1.1.
+     */
+    @Deprecated
+    public static BasicRowProcessor instance() {
+<span class="nc" id="L63">        return instance;</span>
+    }
+
+    /**
+     * Use this to process beans.
+     */
+    private final BeanProcessor convert;
+
+    /**
+     * BasicRowProcessor constructor.  Bean processing defaults to a
+     * BeanProcessor instance.
+     */
+    public BasicRowProcessor() {
+<span class="fc" id="L76">        this(defaultConvert);</span>
+<span class="fc" id="L77">    }</span>
+
+    /**
+     * BasicRowProcessor constructor.
+     * @param convert The BeanProcessor to use when converting columns to
+     * bean properties.
+     * @since DbUtils 1.1
+     */
+    public BasicRowProcessor(final BeanProcessor convert) {
+<span class="fc" id="L86">        super();</span>
+<span class="fc" id="L87">        this.convert = convert;</span>
+<span class="fc" id="L88">    }</span>
+
+    /**
+     * Convert a {@code ResultSet} row into an {@code Object[]}.
+     * This implementation copies column values into the array in the same
+     * order they're returned from the {@code ResultSet}.  Array elements
+     * will be set to {@code null} 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(final ResultSet rs) throws SQLException {
+<span class="fc" id="L103">        final ResultSetMetaData meta = 
rs.getMetaData();</span>
+<span class="fc" id="L104">        final int cols = 
meta.getColumnCount();</span>
+<span class="fc" id="L105">        final Object[] result = new 
Object[cols];</span>
+
+<span class="fc bfc" id="L107" title="All 2 branches covered.">        for 
(int i = 0; i &lt; cols; i++) {</span>
+<span class="fc" id="L108">            result[i] = rs.getObject(i + 1);</span>
+        }
+
+<span class="fc" id="L111">        return result;</span>
+    }
+
+    /**
+     * Convert a {@code ResultSet} 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 &lt;T&gt; 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 &lt;T&gt; T toBean(final ResultSet rs, final Class&lt;? extends 
T&gt; type) throws SQLException {
+<span class="fc" id="L127">        return this.convert.toBean(rs, type);</span>
+    }
+
+    /**
+     * Convert a {@code ResultSet} into a {@code List} 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 &lt;T&gt; 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} of beans with the given type in the order
+     * they were returned by the {@code ResultSet}.
+     */
+    @Override
+    public &lt;T&gt; List&lt;T&gt; toBeanList(final ResultSet rs, final 
Class&lt;? extends T&gt; type) throws SQLException {
+<span class="fc" id="L144">        return this.convert.toBeanList(rs, 
type);</span>
+    }
+
+    /**
+     * Convert a {@code ResultSet} row into a {@code Map}.
+     *
+     * &lt;p&gt;
+     * This implementation returns a {@code Map} with case insensitive column 
names as keys. Calls to
+     * {@code map.get(&quot;COL&quot;)} and {@code map.get(&quot;col&quot;)} 
return the same value. Furthermore this implementation
+     * will return an ordered map, that preserves the ordering of the columns 
in the ResultSet, so that iterating over
+     * the entry set of the returned map will return the first column of the 
ResultSet, then the second and so forth.
+     * &lt;/p&gt;
+     *
+     * @param rs ResultSet that supplies the map data
+     * @return the newly created Map
+     * @throws SQLException if a database access error occurs
+     * @see org.apache.commons.dbutils.RowProcessor#toMap(java.sql.ResultSet)
+     */
+    @Override
+    public Map&lt;String, Object&gt; toMap(final ResultSet rs) throws 
SQLException {
+<span class="fc" id="L164">        final ResultSetMetaData rsmd = 
rs.getMetaData();</span>
+<span class="fc" id="L165">        final int cols = 
rsmd.getColumnCount();</span>
+<span class="fc" id="L166">        final Map&lt;String, Object&gt; result = 
createCaseInsensitiveHashMap(cols);</span>
+
+<span class="fc bfc" id="L168" title="All 2 branches covered.">        for 
(int i = 1; i &lt;= cols; i++) {</span>
+<span class="fc" id="L169">            String columnName = 
rsmd.getColumnLabel(i);</span>
+<span class="pc bpc" id="L170" title="3 of 4 branches missed.">            if 
(null == columnName || 0 == columnName.length()) {</span>
+<span class="fc" id="L171">              columnName = 
rsmd.getColumnName(i);</span>
+            }
+<span class="fc" id="L173">            result.put(columnName, 
rs.getObject(i));</span>
+        }
+
+<span class="fc" id="L176">        return result;</span>
+    }
+
+
+    /**
+     * 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.
+     *
+     * &lt;p&gt;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.
+     *
+     * &lt;p&gt;Note: This implementation does not allow {@code null}
+     * for key, whereas {@link LinkedHashMap} does, because of the code:
+     * &lt;pre&gt;
+     * key.toString().toLowerCase()
+     * &lt;/pre&gt;
+     */
+    private static final class CaseInsensitiveHashMap extends 
LinkedHashMap&lt;String, Object&gt; {
+
+        private CaseInsensitiveHashMap(final int initialCapacity) {
+<span class="fc" id="L198">            super(initialCapacity);</span>
+<span class="fc" id="L199">        }</span>
+
+        /**
+         * The internal mapping from lowercase keys to the real keys.
+         *
+         * &lt;p&gt;
+         * Any query operation using the key
+         * ({@link #get(Object)}, {@link #containsKey(Object)})
+         * is done in three steps:
+         * &lt;ul&gt;
+         * &lt;li&gt;convert the parameter key to lower case&lt;/li&gt;
+         * &lt;li&gt;get the actual key that corresponds to the lower case 
key&lt;/li&gt;
+         * &lt;li&gt;query the map with the actual key&lt;/li&gt;
+         * &lt;/ul&gt;
+         * &lt;/p&gt;
+         */
+<span class="fc" id="L215">        private final Map&lt;String, String&gt; 
lowerCaseMap = new HashMap&lt;&gt;();</span>
+
+        /**
+         * Required for serialization support.
+         *
+         * @see java.io.Serializable
+         */
+        private static final long serialVersionUID = -2848100435296897392L;
+
+        /** {@inheritDoc} */
+        @Override
+        public boolean containsKey(final Object key) {
+<span class="nc" id="L227">            final Object realKey = 
lowerCaseMap.get(key.toString().toLowerCase(Locale.ENGLISH));</span>
+<span class="nc" id="L228">            return 
super.containsKey(realKey);</span>
+            // 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(final Object key) {
+<span class="fc" id="L238">            final Object realKey = 
lowerCaseMap.get(key.toString().toLowerCase(Locale.ENGLISH));</span>
+<span class="fc" id="L239">            return super.get(realKey);</span>
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        public Object put(final String key, final 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))
+             */
+<span class="fc" id="L252">            final Object oldKey = 
lowerCaseMap.put(key.toLowerCase(Locale.ENGLISH), key);</span>
+<span class="fc" id="L253">            final Object oldValue = 
super.remove(oldKey);</span>
+<span class="fc" id="L254">            super.put(key, value);</span>
+<span class="fc" id="L255">            return oldValue;</span>
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        public void putAll(final Map&lt;? extends String, ?&gt; m) {
+<span class="nc bnc" id="L261" title="All 2 branches missed.">            for 
(final Map.Entry&lt;? extends String, ?&gt; entry : m.entrySet()) {</span>
+<span class="nc" id="L262">                final String key = 
entry.getKey();</span>
+<span class="nc" id="L263">                final Object value = 
entry.getValue();</span>
+<span class="nc" id="L264">                this.put(key, value);</span>
+<span class="nc" id="L265">            }</span>
+<span class="nc" id="L266">        }</span>
+
+        /** {@inheritDoc} */
+        @Override
+        public Object remove(final Object key) {
+<span class="nc" id="L271">            final Object realKey = 
lowerCaseMap.remove(key.toString().toLowerCase(Locale.ENGLISH));</span>
+<span class="nc" id="L272">            return super.remove(realKey);</span>
+        }
+    }
+
+}
+</pre><div class="footer"><span class="right">Created with <a 
href="http://www.jacoco.org/jacoco";>JaCoCo</a> 
0.8.5.201910111838</span></div></body></html>
\ No newline at end of file

Added: 
dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/BeanProcessor.html
==============================================================================
--- 
dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/BeanProcessor.html
 (added)
+++ 
dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/BeanProcessor.html
 Wed Jan  8 06:02:46 2020
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD 
XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";><html 
xmlns="http://www.w3.org/1999/xhtml"; lang="en"><head><meta 
http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link 
rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link 
rel="shortcut icon" href="../jacoco-resources/report.gif" 
type="image/gif"/><title>BeanProcessor</title><script type="text/javascript" 
src="../jacoco-resources/sort.js"></script></head><body 
onload="initialSort(['breadcrumb'])"><div class="breadcrumb" 
id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" 
class="el_session">Sessions</a></span><a href="../index.html" 
class="el_report">Apache Commons DbUtils</a> &gt; <a href="index.html" 
class="el_package">org.apache.commons.dbutils</a> &gt; <span 
class="el_class">BeanProcessor</span></div><h1>BeanProcessor</h1><table 
class="coverage" cellspacing="0" id="coveragetab
 le"><thead><tr><td class="sortable" id="a" 
onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" 
onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" 
id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" 
onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" 
onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" 
onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" 
onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" 
onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" 
onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" 
onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" 
onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td
 class="bar">134 of 587</td><td class="ctr2">77%</td><td class="bar">10 of 
62</td><td class="ctr2">83%</td><td class="ctr1">10</td><td class="ctr
 2">47</td><td class="ctr1">27</td><td class="ctr2">135</td><td 
class="ctr1">0</td><td class="ctr2">16</td></tr></tfoot><tbody><tr><td 
id="a2"><a href="BeanProcessor.java.html#L294" 
class="el_method">callSetter(Object, PropertyDescriptor, Object)</a></td><td 
class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="70" 
height="10" title="82" alt="82"/><img src="../jacoco-resources/greenbar.gif" 
width="49" height="10" title="58" alt="58"/></td><td class="ctr2" 
id="c13">41%</td><td class="bar" id="d0"><img 
src="../jacoco-resources/redbar.gif" width="25" height="10" title="3" 
alt="3"/><img src="../jacoco-resources/greenbar.gif" width="60" height="10" 
title="7" alt="7"/></td><td class="ctr2" id="e6">70%</td><td class="ctr1" 
id="f0">3</td><td class="ctr2" id="g1">6</td><td class="ctr1" 
id="h0">13</td><td class="ctr2" id="i0">25</td><td class="ctr1" 
id="j0">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a8"><a 
href="BeanProcessor.java.html#L410" class="el_method">newInsta
 nce(Class)</a></td><td class="bar" id="b1"><img 
src="../jacoco-resources/redbar.gif" width="16" height="10" title="19" 
alt="19"/><img src="../jacoco-resources/greenbar.gif" width="6" height="10" 
title="8" alt="8"/></td><td class="ctr2" id="c15">29%</td><td class="bar" 
id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f6">0</td><td 
class="ctr2" id="g9">1</td><td class="ctr1" id="h2">3</td><td class="ctr2" 
id="i9">4</td><td class="ctr1" id="j1">0</td><td class="ctr2" 
id="k1">1</td></tr><tr><td id="a12"><a href="BeanProcessor.java.html#L428" 
class="el_method">propertyDescriptors(Class)</a></td><td class="bar" 
id="b2"><img src="../jacoco-resources/redbar.gif" width="12" height="10" 
title="14" alt="14"/><img src="../jacoco-resources/greenbar.gif" width="7" 
height="10" title="9" alt="9"/></td><td class="ctr2" id="c14">39%</td><td 
class="bar" id="d10"/><td class="ctr2" id="e10">n/a</td><td class="ctr1" 
id="f7">0</td><td class="ctr2" id="g10">1</td><td class="ctr1" id="h3">3</t
 d><td class="ctr2" id="i7">7</td><td class="ctr1" id="j2">0</td><td 
class="ctr2" id="k2">1</td></tr><tr><td id="a7"><a 
href="BeanProcessor.java.html#L362" class="el_method">matchesPrimitive(Class, 
Class)</a></td><td class="bar" id="b3"><img 
src="../jacoco-resources/redbar.gif" width="6" height="10" title="8" 
alt="8"/><img src="../jacoco-resources/greenbar.gif" width="13" height="10" 
title="16" alt="16"/></td><td class="ctr2" id="c11">66%</td><td class="bar" 
id="d2"><img src="../jacoco-resources/redbar.gif" width="17" height="10" 
title="2" alt="2"/><img src="../jacoco-resources/greenbar.gif" width="17" 
height="10" title="2" alt="2"/></td><td class="ctr2" id="e7">50%</td><td 
class="ctr1" id="f1">2</td><td class="ctr2" id="g5">3</td><td class="ctr1" 
id="h1">5</td><td class="ctr2" id="i4">10</td><td class="ctr1" 
id="j3">0</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a1"><a 
href="BeanProcessor.java.html#L114" 
class="el_method">BeanProcessor(Map)</a></td><td class="bar" id="b4"><im
 g src="../jacoco-resources/redbar.gif" width="4" height="10" title="5" 
alt="5"/><img src="../jacoco-resources/greenbar.gif" width="6" height="10" 
title="8" alt="8"/></td><td class="ctr2" id="c12">61%</td><td class="bar" 
id="d5"><img src="../jacoco-resources/redbar.gif" width="8" height="10" 
title="1" alt="1"/><img src="../jacoco-resources/greenbar.gif" width="8" 
height="10" title="1" alt="1"/></td><td class="ctr2" id="e8">50%</td><td 
class="ctr1" id="f3">1</td><td class="ctr2" id="g8">2</td><td class="ctr1" 
id="h4">1</td><td class="ctr2" id="i8">5</td><td class="ctr1" id="j4">0</td><td 
class="ctr2" id="k4">1</td></tr><tr><td id="a10"><a 
href="BeanProcessor.java.html#L259" class="el_method">populateBean(ResultSet, 
Object, PropertyDescriptor[], int[])</a></td><td class="bar" id="b5"><img 
src="../jacoco-resources/redbar.gif" width="3" height="10" title="4" 
alt="4"/><img src="../jacoco-resources/greenbar.gif" width="38" height="10" 
title="45" alt="45"/></td><td class="ctr2" id="c9">91%<
 /td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" 
width="17" height="10" title="2" alt="2"/><img 
src="../jacoco-resources/greenbar.gif" width="68" height="10" title="8" 
alt="8"/></td><td class="ctr2" id="e5">80%</td><td class="ctr1" 
id="f2">2</td><td class="ctr2" id="g2">6</td><td class="ctr1" id="h5">1</td><td 
class="ctr2" id="i3">12</td><td class="ctr1" id="j5">0</td><td class="ctr2" 
id="k5">1</td></tr><tr><td id="a5"><a href="BeanProcessor.java.html#L346" 
class="el_method">isCompatibleType(Object, Class)</a></td><td class="bar" 
id="b6"><img src="../jacoco-resources/redbar.gif" width="1" height="10" 
title="2" alt="2"/><img src="../jacoco-resources/greenbar.gif" width="12" 
height="10" title="14" alt="14"/></td><td class="ctr2" id="c10">87%</td><td 
class="bar" id="d4"><img src="../jacoco-resources/redbar.gif" width="8" 
height="10" title="1" alt="1"/><img src="../jacoco-resources/greenbar.gif" 
width="42" height="10" title="5" alt="5"/></td><td class="ctr2" id="e4"
 >83%</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">4</td><td 
 >class="ctr1" id="h6">1</td><td class="ctr2" id="i11">3</td><td class="ctr1" 
 >id="j6">0</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a13"><a 
 >href="BeanProcessor.java.html#L68" class="el_method">static {...}</a></td><td 
 >class="bar" id="b7"><img src="../jacoco-resources/greenbar.gif" width="78" 
 >height="10" title="92" alt="92"/></td><td class="ctr2" id="c0">100%</td><td 
 >class="bar" id="d7"><img src="../jacoco-resources/greenbar.gif" width="34" 
 >height="10" title="4" alt="4"/></td><td class="ctr2" id="e0">100%</td><td 
 >class="ctr1" id="f8">0</td><td class="ctr2" id="g6">3</td><td class="ctr1" 
 >id="h7">0</td><td class="ctr2" id="i2">18</td><td class="ctr1" 
 >id="j7">0</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a6"><a 
 >href="BeanProcessor.java.html#L460" 
 >class="el_method">mapColumnsToProperties(ResultSetMetaData, 
 >PropertyDescriptor[])</a></td><td class="bar" id="b8"><img 
 >src="../jacoco-resources/greenbar.gi
 f" width="71" height="10" title="83" alt="83"/></td><td class="ctr2" 
id="c1">100%</td><td class="bar" id="d3"><img 
src="../jacoco-resources/redbar.gif" width="8" height="10" title="1" 
alt="1"/><img src="../jacoco-resources/greenbar.gif" width="111" height="10" 
title="13" alt="13"/></td><td class="ctr2" id="e3">92%</td><td class="ctr1" 
id="f5">1</td><td class="ctr2" id="g0">8</td><td class="ctr1" id="h8">0</td><td 
class="ctr2" id="i1">21</td><td class="ctr1" id="j8">0</td><td class="ctr2" 
id="k8">1</td></tr><tr><td id="a15"><a href="BeanProcessor.java.html#L193" 
class="el_method">toBeanList(ResultSet, Class)</a></td><td class="bar" 
id="b9"><img src="../jacoco-resources/greenbar.gif" width="30" height="10" 
title="35" alt="35"/></td><td class="ctr2" id="c2">100%</td><td class="bar" 
id="d8"><img src="../jacoco-resources/greenbar.gif" width="34" height="10" 
title="4" alt="4"/></td><td class="ctr2" id="e1">100%</td><td class="ctr1" 
id="f9">0</td><td class="ctr2" id="g7">3</td><td class="c
 tr1" id="h9">0</td><td class="ctr2" id="i5">9</td><td class="ctr1" 
id="j9">0</td><td class="ctr2" id="k9">1</td></tr><tr><td id="a11"><a 
href="BeanProcessor.java.html#L523" class="el_method">processColumn(ResultSet, 
int, Class)</a></td><td class="bar" id="b10"><img 
src="../jacoco-resources/greenbar.gif" width="29" height="10" title="34" 
alt="34"/></td><td class="ctr2" id="c3">100%</td><td class="bar" id="d6"><img 
src="../jacoco-resources/greenbar.gif" width="68" height="10" title="8" 
alt="8"/></td><td class="ctr2" id="e2">100%</td><td class="ctr1" 
id="f10">0</td><td class="ctr2" id="g3">5</td><td class="ctr1" 
id="h10">0</td><td class="ctr2" id="i6">9</td><td class="ctr1" 
id="j10">0</td><td class="ctr2" id="k10">1</td></tr><tr><td id="a9"><a 
href="BeanProcessor.java.html#L237" class="el_method">populateBean(ResultSet, 
Object)</a></td><td class="bar" id="b11"><img 
src="../jacoco-resources/greenbar.gif" width="17" height="10" title="20" 
alt="20"/></td><td class="ctr2" id="c4">100%</td>
 <td class="bar" id="d11"/><td class="ctr2" id="e11">n/a</td><td class="ctr1" 
id="f11">0</td><td class="ctr2" id="g11">1</td><td class="ctr1" 
id="h11">0</td><td class="ctr2" id="i10">4</td><td class="ctr1" 
id="j11">0</td><td class="ctr2" id="k11">1</td></tr><tr><td id="a3"><a 
href="BeanProcessor.java.html#L224" class="el_method">createBean(ResultSet, 
Class, PropertyDescriptor[], int[])</a></td><td class="bar" id="b12"><img 
src="../jacoco-resources/greenbar.gif" width="9" height="10" title="11" 
alt="11"/></td><td class="ctr2" id="c5">100%</td><td class="bar" id="d12"/><td 
class="ctr2" id="e12">n/a</td><td class="ctr1" id="f12">0</td><td class="ctr2" 
id="g12">1</td><td class="ctr1" id="h12">0</td><td class="ctr2" 
id="i12">2</td><td class="ctr1" id="j12">0</td><td class="ctr2" 
id="k12">1</td></tr><tr><td id="a14"><a href="BeanProcessor.java.html#L155" 
class="el_method">toBean(ResultSet, Class)</a></td><td class="bar" 
id="b13"><img src="../jacoco-resources/greenbar.gif" width="7" height=
 "10" title="9" alt="9"/></td><td class="ctr2" id="c6">100%</td><td class="bar" 
id="d13"/><td class="ctr2" id="e13">n/a</td><td class="ctr1" id="f13">0</td><td 
class="ctr2" id="g13">1</td><td class="ctr1" id="h13">0</td><td class="ctr2" 
id="i13">2</td><td class="ctr1" id="j13">0</td><td class="ctr2" 
id="k13">1</td></tr><tr><td id="a0"><a href="BeanProcessor.java.html#L104" 
class="el_method">BeanProcessor()</a></td><td class="bar" id="b14"><img 
src="../jacoco-resources/greenbar.gif" width="5" height="10" title="6" 
alt="6"/></td><td class="ctr2" id="c7">100%</td><td class="bar" id="d14"/><td 
class="ctr2" id="e14">n/a</td><td class="ctr1" id="f14">0</td><td class="ctr2" 
id="g14">1</td><td class="ctr1" id="h14">0</td><td class="ctr2" 
id="i14">2</td><td class="ctr1" id="j14">0</td><td class="ctr2" 
id="k14">1</td></tr><tr><td id="a4"><a href="BeanProcessor.java.html#L394" 
class="el_method">getWriteMethod(Object, PropertyDescriptor, 
Object)</a></td><td class="bar" id="b15"><img src="../jaco
 co-resources/greenbar.gif" width="4" height="10" title="5" alt="5"/></td><td 
class="ctr2" id="c8">100%</td><td class="bar" id="d15"/><td class="ctr2" 
id="e15">n/a</td><td class="ctr1" id="f15">0</td><td class="ctr2" 
id="g15">1</td><td class="ctr1" id="h15">0</td><td class="ctr2" 
id="i15">2</td><td class="ctr1" id="j15">0</td><td class="ctr2" 
id="k15">1</td></tr></tbody></table><div class="footer"><span 
class="right">Created with <a href="http://www.jacoco.org/jacoco";>JaCoCo</a> 
0.8.5.201910111838</span></div></body></html>
\ No newline at end of file

Added: 
dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/BeanProcessor.java.html
==============================================================================
--- 
dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/BeanProcessor.java.html
 (added)
+++ 
dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/BeanProcessor.java.html
 Wed Jan  8 06:02:46 2020
@@ -0,0 +1,541 @@
+<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD 
XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";><html 
xmlns="http://www.w3.org/1999/xhtml"; lang="en"><head><meta 
http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link 
rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link 
rel="shortcut icon" href="../jacoco-resources/report.gif" 
type="image/gif"/><title>BeanProcessor.java</title><link rel="stylesheet" 
href="../jacoco-resources/prettify.css" type="text/css"/><script 
type="text/javascript" 
src="../jacoco-resources/prettify.js"></script></head><body 
onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" 
id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" 
class="el_session">Sessions</a></span><a href="../index.html" 
class="el_report">Apache Commons DbUtils</a> &gt; <a href="index.source.html" 
class="el_package">org.apache.commons.dbutils</a> &gt; <span class="el_sou
 rce">BeanProcessor.java</span></div><h1>BeanProcessor.java</h1><pre 
class="source lang-java linenums">/*
+ * 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 &quot;License&quot;); 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 &quot;AS IS&quot; 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 org.apache.commons.dbutils.annotations.Column;
+
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.ServiceLoader;
+
+/**
+ * &lt;p&gt;
+ * {@code BeanProcessor} matches column names to bean property names
+ * and converts {@code ResultSet} columns into objects for those bean
+ * properties.  Subclasses should override the methods in the processing chain
+ * to customize behavior.
+ * &lt;/p&gt;
+ *
+ * &lt;p&gt;
+ * This class is thread-safe.
+ * &lt;/p&gt;
+ *
+ * @see BasicRowProcessor
+ *
+ * @since DbUtils 1.1
+ */
+public class BeanProcessor {
+
+    /**
+     * Special array value used by {@code mapColumnsToProperties} that
+     * indicates there is no bean property that matches a column from a
+     * {@code ResultSet}.
+     */
+    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.
+     */
+<span class="fc" id="L68">    private static final Map&lt;Class&lt;?&gt;, 
Object&gt; primitiveDefaults = new HashMap&lt;&gt;();</span>
+
+<span class="fc" id="L70">    private static final List&lt;ColumnHandler&gt; 
columnHandlers = new ArrayList&lt;&gt;();</span>
+
+<span class="fc" id="L72">    private static final List&lt;PropertyHandler&gt; 
propertyHandlers = new ArrayList&lt;&gt;();</span>
+
+    /**
+     * ResultSet column to bean property name overrides.
+     */
+    private final Map&lt;String, String&gt; columnToPropertyOverrides;
+
+    static {
+<span class="fc" id="L80">        primitiveDefaults.put(Integer.TYPE, 
Integer.valueOf(0));</span>
+<span class="fc" id="L81">        primitiveDefaults.put(Short.TYPE, 
Short.valueOf((short) 0));</span>
+<span class="fc" id="L82">        primitiveDefaults.put(Byte.TYPE, 
Byte.valueOf((byte) 0));</span>
+<span class="fc" id="L83">        primitiveDefaults.put(Float.TYPE, 
Float.valueOf(0f));</span>
+<span class="fc" id="L84">        primitiveDefaults.put(Double.TYPE, 
Double.valueOf(0d));</span>
+<span class="fc" id="L85">        primitiveDefaults.put(Long.TYPE, 
Long.valueOf(0L));</span>
+<span class="fc" id="L86">        primitiveDefaults.put(Boolean.TYPE, 
Boolean.FALSE);</span>
+<span class="fc" id="L87">        primitiveDefaults.put(Character.TYPE, 
Character.valueOf((char) 0));</span>
+
+        // Use a ServiceLoader to find implementations
+<span class="fc bfc" id="L90" title="All 2 branches covered.">        for 
(final ColumnHandler handler : ServiceLoader.load(ColumnHandler.class)) {</span>
+<span class="fc" id="L91">            columnHandlers.add(handler);</span>
+<span class="fc" id="L92">        }</span>
+
+        // Use a ServiceLoader to find implementations
+<span class="fc bfc" id="L95" title="All 2 branches covered.">        for 
(final PropertyHandler handler : ServiceLoader.load(PropertyHandler.class)) 
{</span>
+<span class="fc" id="L96">            propertyHandlers.add(handler);</span>
+<span class="fc" id="L97">        }</span>
+<span class="fc" id="L98">    }</span>
+
+    /**
+     * Constructor for BeanProcessor.
+     */
+    public BeanProcessor() {
+<span class="fc" id="L104">        this(new HashMap&lt;String, 
String&gt;());</span>
+<span class="fc" id="L105">    }</span>
+
+    /**
+     * Constructor for BeanProcessor configured with column to property name 
overrides.
+     *
+     * @param columnToPropertyOverrides ResultSet column to bean property name 
overrides
+     * @since 1.5
+     */
+    public BeanProcessor(final Map&lt;String, String&gt; 
columnToPropertyOverrides) {
+<span class="fc" id="L114">        super();</span>
+<span class="pc bpc" id="L115" title="1 of 2 branches missed.">        if 
(columnToPropertyOverrides == null) {</span>
+<span class="nc" id="L116">            throw new 
IllegalArgumentException(&quot;columnToPropertyOverrides map cannot be 
null&quot;);</span>
+        }
+<span class="fc" id="L118">        this.columnToPropertyOverrides = 
columnToPropertyOverrides;</span>
+<span class="fc" id="L119">    }</span>
+
+    /**
+     * Convert a {@code ResultSet} row into a JavaBean.  This
+     * implementation uses reflection and {@code BeanInfo} classes to
+     * match column names to bean property names.  Properties are matched to
+     * columns based on several factors:
+     * &amp;lt;br/&amp;gt;
+     * &amp;lt;ol&amp;gt;
+     *     &amp;lt;li&amp;gt;
+     *     The class has a writable property with the same name as a column.
+     *     The name comparison is case insensitive.
+     *     &amp;lt;/li&amp;gt;
+     *
+     *     &amp;lt;li&amp;gt;
+     *     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.
+     *     &amp;lt;/li&amp;gt;
+     * &amp;lt;/ol&amp;gt;
+     *
+     * &amp;lt;p&amp;gt;
+     * Primitive bean properties are set to their defaults when SQL NULL is
+     * returned from the {@code ResultSet}.  Numeric fields are set to 0
+     * and booleans are set to false.  Object bean properties are set to
+     * {@code null} when SQL NULL is returned.  This is the same behavior
+     * as the {@code ResultSet} get* methods.
+     * &amp;lt;/p&amp;gt;
+     * @param &lt;T&gt; 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 &lt;T&gt; T toBean(final ResultSet rs, final Class&lt;? extends 
T&gt; type) throws SQLException {
+<span class="fc" id="L155">        final T bean = 
this.newInstance(type);</span>
+<span class="fc" id="L156">        return this.populateBean(rs, bean);</span>
+    }
+
+    /**
+     * Convert a {@code ResultSet} into a {@code List} of JavaBeans.
+     * This implementation uses reflection and {@code BeanInfo} classes to
+     * match column names to bean property names. Properties are matched to
+     * columns based on several factors:
+     * &amp;lt;br/&amp;gt;
+     * &amp;lt;ol&amp;gt;
+     *     &amp;lt;li&amp;gt;
+     *     The class has a writable property with the same name as a column.
+     *     The name comparison is case insensitive.
+     *     &amp;lt;/li&amp;gt;
+     *
+     *     &amp;lt;li&amp;gt;
+     *     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.
+     *     &amp;lt;/li&amp;gt;
+     * &amp;lt;/ol&amp;gt;
+     *
+     * &lt;p&gt;
+     * Primitive bean properties are set to their defaults when SQL NULL is
+     * returned from the {@code ResultSet}.  Numeric fields are set to 0
+     * and booleans are set to false.  Object bean properties are set to
+     * {@code null} when SQL NULL is returned.  This is the same behavior
+     * as the {@code ResultSet} get* methods.
+     * &amp;lt;/p&amp;gt;
+     * @param &lt;T&gt; 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 &lt;T&gt; List&lt;T&gt; toBeanList(final ResultSet rs, final 
Class&lt;? extends T&gt; type) throws SQLException {
+<span class="fc" id="L193">        final List&lt;T&gt; results = new 
ArrayList&lt;&gt;();</span>
+
+<span class="fc bfc" id="L195" title="All 2 branches covered.">        if 
(!rs.next()) {</span>
+<span class="fc" id="L196">            return results;</span>
+        }
+
+<span class="fc" id="L199">        final PropertyDescriptor[] props = 
this.propertyDescriptors(type);</span>
+<span class="fc" id="L200">        final ResultSetMetaData rsmd = 
rs.getMetaData();</span>
+<span class="fc" id="L201">        final int[] columnToProperty = 
this.mapColumnsToProperties(rsmd, props);</span>
+
+        do {
+<span class="fc" id="L204">            results.add(this.createBean(rs, type, 
props, columnToProperty));</span>
+<span class="fc bfc" id="L205" title="All 2 branches covered.">        } while 
(rs.next());</span>
+
+<span class="fc" id="L207">        return results;</span>
+    }
+
+    /**
+     * Creates a new object and initializes its fields from the ResultSet.
+     * @param &lt;T&gt; 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 &lt;T&gt; T createBean(final ResultSet rs, final Class&lt;T&gt; 
type,
+                             final PropertyDescriptor[] props, final int[] 
columnToProperty)
+    throws SQLException {
+
+<span class="fc" id="L224">        final T bean = 
this.newInstance(type);</span>
+<span class="fc" id="L225">        return populateBean(rs, bean, props, 
columnToProperty);</span>
+    }
+
+    /**
+     * Initializes the fields of the provided bean from the ResultSet.
+     * @param &lt;T&gt; The type of bean
+     * @param rs The result set.
+     * @param bean The bean to be populated.
+     * @return An initialized object.
+     * @throws SQLException if a database error occurs.
+     */
+    public &lt;T&gt; T populateBean(final ResultSet rs, final T bean) throws 
SQLException {
+<span class="fc" id="L237">        final PropertyDescriptor[] props = 
this.propertyDescriptors(bean.getClass());</span>
+<span class="fc" id="L238">        final ResultSetMetaData rsmd = 
rs.getMetaData();</span>
+<span class="fc" id="L239">        final int[] columnToProperty = 
this.mapColumnsToProperties(rsmd, props);</span>
+
+<span class="fc" id="L241">        return populateBean(rs, bean, props, 
columnToProperty);</span>
+    }
+
+    /**
+     * This method populates a bean from the ResultSet based upon the 
underlying meta-data.
+     *
+     * @param &lt;T&gt; The type of bean
+     * @param rs The result set.
+     * @param bean The bean to be populated.
+     * @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 &lt;T&gt; T populateBean(final ResultSet rs, final T bean,
+            final PropertyDescriptor[] props, final int[] columnToProperty)
+            throws SQLException {
+
+<span class="fc bfc" id="L259" title="All 2 branches covered.">        for 
(int i = 1; i &lt; columnToProperty.length; i++) {</span>
+
+<span class="fc bfc" id="L261" title="All 2 branches covered.">            if 
(columnToProperty[i] == PROPERTY_NOT_FOUND) {</span>
+<span class="fc" id="L262">                continue;</span>
+            }
+
+<span class="fc" id="L265">            final PropertyDescriptor prop = 
props[columnToProperty[i]];</span>
+<span class="fc" id="L266">            final Class&lt;?&gt; propType = 
prop.getPropertyType();</span>
+
+<span class="fc" id="L268">            Object value = null;</span>
+<span class="pc bpc" id="L269" title="1 of 2 branches missed.">            if 
(propType != null) {</span>
+<span class="fc" id="L270">                value = this.processColumn(rs, i, 
propType);</span>
+
+<span class="pc bpc" id="L272" title="1 of 4 branches missed.">                
if (value == null &amp;&amp; propType.isPrimitive()) {</span>
+<span class="nc" id="L273">                    value = 
primitiveDefaults.get(propType);</span>
+                }
+            }
+
+<span class="fc" id="L277">            this.callSetter(bean, prop, 
value);</span>
+        }
+
+<span class="fc" id="L280">        return bean;</span>
+    }
+
+    /**
+     * 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(final Object target, final PropertyDescriptor 
prop, Object value)
+            throws SQLException {
+
+<span class="fc" id="L294">        final Method setter = 
getWriteMethod(target, prop, value);</span>
+
+<span class="pc bpc" id="L296" title="2 of 4 branches missed.">        if 
(setter == null || setter.getParameterTypes().length != 1) {</span>
+<span class="nc" id="L297">            return;</span>
+        }
+
+        try {
+<span class="fc" id="L301">            final Class&lt;?&gt; firstParam = 
setter.getParameterTypes()[0];</span>
+<span class="fc bfc" id="L302" title="All 2 branches covered.">            for 
(final PropertyHandler handler : propertyHandlers) {</span>
+<span class="fc bfc" id="L303" title="All 2 branches covered.">                
if (handler.match(firstParam, value)) {</span>
+<span class="fc" id="L304">                    value = 
handler.apply(firstParam, value);</span>
+<span class="fc" id="L305">                    break;</span>
+                }
+<span class="fc" id="L307">            }</span>
+
+            // Don't call setter if the value object isn't the right type
+<span class="pc bpc" id="L310" title="1 of 2 branches missed.">            if 
(this.isCompatibleType(value, firstParam)) {</span>
+<span class="fc" id="L311">                setter.invoke(target, value);</span>
+            } else {
+<span class="nc" id="L313">              throw new SQLException(</span>
+<span class="nc" id="L314">                  &quot;Cannot set &quot; + 
prop.getName() + &quot;: incompatible types, cannot convert &quot;</span>
+<span class="nc" id="L315">                  + value.getClass().getName() + 
&quot; to &quot; + firstParam.getName());</span>
+                  // value cannot be null here because isCompatibleType allows 
null
+            }
+
+<span class="nc" id="L319">        } catch (final IllegalArgumentException e) 
{</span>
+<span class="nc" id="L320">            throw new SQLException(</span>
+<span class="nc" id="L321">                &quot;Cannot set &quot; + 
prop.getName() + &quot;: &quot; + e.getMessage());</span>
+
+<span class="nc" id="L323">        } catch (final IllegalAccessException e) 
{</span>
+<span class="nc" id="L324">            throw new SQLException(</span>
+<span class="nc" id="L325">                &quot;Cannot set &quot; + 
prop.getName() + &quot;: &quot; + e.getMessage());</span>
+
+<span class="nc" id="L327">        } catch (final InvocationTargetException e) 
{</span>
+<span class="nc" id="L328">            throw new SQLException(</span>
+<span class="nc" id="L329">                &quot;Cannot set &quot; + 
prop.getName() + &quot;: &quot; + e.getMessage());</span>
+<span class="fc" id="L330">        }</span>
+<span class="fc" id="L331">    }</span>
+
+    /**
+     * 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 =&gt; true)
+     */
+    private boolean isCompatibleType(final Object value, final Class&lt;?&gt; 
type) {
+        // Do object check first, then primitives
+<span class="pc bpc" id="L346" title="1 of 6 branches missed.">        if 
(value == null || type.isInstance(value) || matchesPrimitive(type, 
value.getClass())) {</span>
+<span class="fc" id="L347">            return true;</span>
+
+        }
+<span class="nc" id="L350">        return false;</span>
+
+    }
+
+    /**
+     * Check whether a value is of the same primitive type as {@code 
targetType}.
+     *
+     * @param targetType The primitive type to target.
+     * @param valueType The value to match to the primitive type.
+     * @return Whether {@code valueType} can be coerced (e.g. autoboxed) into 
{@code targetType}.
+     */
+    private boolean matchesPrimitive(final Class&lt;?&gt; targetType, final 
Class&lt;?&gt; valueType) {
+<span class="pc bpc" id="L362" title="1 of 2 branches missed.">        if 
(!targetType.isPrimitive()) {</span>
+<span class="nc" id="L363">            return false;</span>
+        }
+
+        try {
+            // see if there is a &quot;TYPE&quot; field.  This is present for 
primitive wrappers.
+<span class="fc" id="L368">            final Field typeField = 
valueType.getField(&quot;TYPE&quot;);</span>
+<span class="fc" id="L369">            final Object primitiveValueType = 
typeField.get(valueType);</span>
+
+<span class="pc bpc" id="L371" title="1 of 2 branches missed.">            if 
(targetType == primitiveValueType) {</span>
+<span class="fc" id="L372">                return true;</span>
+            }
+<span class="nc" id="L374">        } catch (final NoSuchFieldException e) 
{</span>
+            // lacking the TYPE field is a good sign that we're not working 
with a primitive wrapper.
+            // we can't match for compatibility
+<span class="nc" id="L377">        } catch (final IllegalAccessException e) 
{</span>
+            // an inaccessible TYPE field is a good sign that we're not 
working with a primitive wrapper.
+            // nothing to do.  we can't match for compatibility
+<span class="nc" id="L380">        }</span>
+<span class="nc" id="L381">        return false;</span>
+    }
+
+    /**
+     * Get the write method to use when setting {@code value} to the {@code 
target}.
+     *
+     * @param target Object where the write method will be called.
+     * @param prop   BeanUtils information.
+     * @param value  The value that will be passed to the write method.
+     * @return The {@link java.lang.reflect.Method} to call on {@code target} 
to write {@code value} or {@code null} if
+     *         there is no suitable write method.
+     */
+    protected Method getWriteMethod(final Object target, final 
PropertyDescriptor prop, final Object value) {
+<span class="fc" id="L394">        final Method method = 
prop.getWriteMethod();</span>
+<span class="fc" id="L395">        return method;</span>
+    }
+
+    /**
+     * 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 &lt;T&gt; 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 &lt;T&gt; T newInstance(final Class&lt;T&gt; c) throws 
SQLException {
+        try {
+<span class="fc" id="L410">            return 
c.getDeclaredConstructor().newInstance();</span>
+
+<span class="nc" id="L412">        } catch (final IllegalAccessException | 
InstantiationException | InvocationTargetException | NoSuchMethodException e) 
{</span>
+<span class="nc" id="L413">            throw new SQLException(</span>
+<span class="nc" id="L414">                &quot;Cannot create &quot; + 
c.getName() + &quot;: &quot; + e.getMessage());</span>
+        }
+    }
+
+    /**
+     * 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(final Class&lt;?&gt; c)
+        throws SQLException {
+        // Introspector caches BeanInfo classes for better performance
+<span class="fc" id="L428">        BeanInfo beanInfo = null;</span>
+        try {
+<span class="fc" id="L430">            beanInfo = 
Introspector.getBeanInfo(c);</span>
+
+<span class="nc" id="L432">        } catch (final IntrospectionException e) 
{</span>
+<span class="nc" id="L433">            throw new SQLException(</span>
+<span class="nc" id="L434">                &quot;Bean introspection failed: 
&quot; + e.getMessage());</span>
+<span class="fc" id="L435">        }</span>
+
+<span class="fc" id="L437">        return 
beanInfo.getPropertyDescriptors();</span>
+    }
+
+    /**
+     * The positions in the returned array represent column numbers.  The
+     * values stored at each position represent the index in the
+     * {@code PropertyDescriptor[]} 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}.
+     *
+     * @param rsmd The {@code ResultSetMetaData} 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(final ResultSetMetaData rsmd,
+            final PropertyDescriptor[] props) throws SQLException {
+
+<span class="fc" id="L460">        final int cols = 
rsmd.getColumnCount();</span>
+<span class="fc" id="L461">        final int[] columnToProperty = new int[cols 
+ 1];</span>
+<span class="fc" id="L462">        Arrays.fill(columnToProperty, 
PROPERTY_NOT_FOUND);</span>
+
+<span class="fc bfc" id="L464" title="All 2 branches covered.">        for 
(int col = 1; col &lt;= cols; col++) {</span>
+<span class="fc" id="L465">            String columnName = 
rsmd.getColumnLabel(col);</span>
+<span class="pc bpc" id="L466" title="1 of 4 branches missed.">            if 
(null == columnName || 0 == columnName.length()) {</span>
+<span class="fc" id="L467">              columnName = 
rsmd.getColumnName(col);</span>
+            }
+<span class="fc" id="L469">            String propertyName = 
columnToPropertyOverrides.get(columnName);</span>
+<span class="fc bfc" id="L470" title="All 2 branches covered.">            if 
(propertyName == null) {</span>
+<span class="fc" id="L471">                propertyName = columnName;</span>
+            }
+<span class="fc bfc" id="L473" title="All 2 branches covered.">            for 
(int i = 0; i &lt; props.length; i++) {</span>
+
+<span class="fc" id="L475">                PropertyDescriptor prop = 
props[i];</span>
+<span class="fc" id="L476">                Column column = 
prop.getReadMethod().getAnnotation(Column.class);</span>
+<span class="fc" id="L477">                String propertyColumnName = 
null;</span>
+<span class="fc bfc" id="L478" title="All 2 branches covered.">                
if (column != null) {</span>
+<span class="fc" id="L479">                    propertyColumnName = 
column.name();</span>
+                } else {
+<span class="fc" id="L481">                    propertyColumnName = 
prop.getName();</span>
+                }
+<span class="fc bfc" id="L483" title="All 2 branches covered.">                
if (propertyName.equalsIgnoreCase(propertyColumnName)) {</span>
+<span class="fc" id="L484">                    columnToProperty[col] = 
i;</span>
+<span class="fc" id="L485">                    break;</span>
+                }
+            }
+        }
+
+<span class="fc" id="L490">        return columnToProperty;</span>
+    }
+
+    /**
+     * Convert a {@code ResultSet} column into an object.  Simple
+     * implementations could just call {@code rs.getObject(index)} while
+     * more complex implementations could perform type manipulation to match
+     * the column's type to the bean property type.
+     *
+     * &lt;p&gt;
+     * This implementation calls the appropriate {@code ResultSet} 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} types, {@code getObject} is called.
+     * &lt;/p&gt;
+     *
+     * @param rs The {@code ResultSet} 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} at the given column
+     * index after optional type processing or {@code null} if the column
+     * value was SQL NULL.
+     */
+    protected Object processColumn(final ResultSet rs, final int index, final 
Class&lt;?&gt; propType)
+        throws SQLException {
+
+<span class="fc" id="L523">        Object retval = rs.getObject(index);</span>
+
+<span class="fc bfc" id="L525" title="All 4 branches covered.">        if ( 
!propType.isPrimitive() &amp;&amp; retval == null ) {</span>
+<span class="fc" id="L526">            return null;</span>
+        }
+
+<span class="fc bfc" id="L529" title="All 2 branches covered.">        for 
(final ColumnHandler handler : columnHandlers) {</span>
+<span class="fc bfc" id="L530" title="All 2 branches covered.">            if 
(handler.match(propType)) {</span>
+<span class="fc" id="L531">                retval = handler.apply(rs, 
index);</span>
+<span class="fc" id="L532">                break;</span>
+            }
+<span class="fc" id="L534">        }</span>
+
+<span class="fc" id="L536">        return retval;</span>
+
+    }
+
+}
+</pre><div class="footer"><span class="right">Created with <a 
href="http://www.jacoco.org/jacoco";>JaCoCo</a> 
0.8.5.201910111838</span></div></body></html>
\ No newline at end of file

Added: 
dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/DbUtils$DriverProxy.html
==============================================================================
--- 
dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/DbUtils$DriverProxy.html
 (added)
+++ 
dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/DbUtils$DriverProxy.html
 Wed Jan  8 06:02:46 2020
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD 
XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";><html 
xmlns="http://www.w3.org/1999/xhtml"; lang="en"><head><meta 
http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link 
rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link 
rel="shortcut icon" href="../jacoco-resources/report.gif" 
type="image/gif"/><title>DbUtils.DriverProxy</title><script 
type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body 
onload="initialSort(['breadcrumb'])"><div class="breadcrumb" 
id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" 
class="el_session">Sessions</a></span><a href="../index.html" 
class="el_report">Apache Commons DbUtils</a> &gt; <a href="index.html" 
class="el_package">org.apache.commons.dbutils</a> &gt; <span 
class="el_class">DbUtils.DriverProxy</span></div><h1>DbUtils.DriverProxy</h1><table
 class="coverage" cellspacing="
 0" id="coveragetable"><thead><tr><td class="sortable" id="a" 
onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" 
onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" 
id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" 
onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" 
onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" 
onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" 
onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" 
onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" 
onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" 
onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" 
onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td
 class="bar">50 of 88</td><td class="ctr2">43%</td><td class="bar">2 of 
2</td><td class="ctr2">0%</td><td class="ctr1">2</td><t
 d class="ctr2">9</td><td class="ctr1">13</td><td class="ctr2">23</td><td 
class="ctr1">1</td><td class="ctr2">8</td></tr></tfoot><tbody><tr><td 
id="a5"><a href="DbUtils.java.html#L414" 
class="el_method">getParentLogger()</a></td><td class="bar" id="b0"><img 
src="../jacoco-resources/redbar.gif" width="120" height="10" title="50" 
alt="50"/></td><td class="ctr2" id="c7">0%</td><td class="bar" id="d0"><img 
src="../jacoco-resources/redbar.gif" width="120" height="10" title="2" 
alt="2"/></td><td class="ctr2" id="e0">0%</td><td class="ctr1" 
id="f0">2</td><td class="ctr2" id="g0">2</td><td class="ctr1" 
id="h0">13</td><td class="ctr2" id="i0">13</td><td class="ctr1" 
id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a2"><a 
href="DbUtils.java.html#L345" 
class="el_method">DbUtils.DriverProxy(Driver)</a></td><td class="bar" 
id="b1"><img src="../jacoco-resources/greenbar.gif" width="21" height="10" 
title="9" alt="9"/></td><td class="ctr2" id="c0">100%</td><td class="bar" 
id="d1"/><td c
 lass="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">0</td><td class="ctr2" 
id="g1">1</td><td class="ctr1" id="h1">0</td><td class="ctr2" id="i1">4</td><td 
class="ctr1" id="j1">0</td><td class="ctr2" id="k1">1</td></tr><tr><td 
id="a1"><a href="DbUtils.java.html#L374" class="el_method">connect(String, 
Properties)</a></td><td class="bar" id="b2"><img 
src="../jacoco-resources/greenbar.gif" width="14" height="10" title="6" 
alt="6"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d2"/><td 
class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">0</td><td class="ctr2" 
id="g2">1</td><td class="ctr1" id="h2">0</td><td class="ctr2" id="i2">1</td><td 
class="ctr1" id="j2">0</td><td class="ctr2" id="k2">1</td></tr><tr><td 
id="a6"><a href="DbUtils.java.html#L398" 
class="el_method">getPropertyInfo(String, Properties)</a></td><td class="bar" 
id="b3"><img src="../jacoco-resources/greenbar.gif" width="14" height="10" 
title="6" alt="6"/></td><td class="ctr2" id="c2">100%</td><td class="bar" i
 d="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">0</td><td 
class="ctr2" id="g3">1</td><td class="ctr1" id="h3">0</td><td class="ctr2" 
id="i3">1</td><td class="ctr1" id="j3">0</td><td class="ctr2" 
id="k3">1</td></tr><tr><td id="a0"><a href="DbUtils.java.html#L366" 
class="el_method">acceptsURL(String)</a></td><td class="bar" id="b4"><img 
src="../jacoco-resources/greenbar.gif" width="12" height="10" title="5" 
alt="5"/></td><td class="ctr2" id="c3">100%</td><td class="bar" id="d4"/><td 
class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">0</td><td class="ctr2" 
id="g4">1</td><td class="ctr1" id="h4">0</td><td class="ctr2" id="i4">1</td><td 
class="ctr1" id="j4">0</td><td class="ctr2" id="k4">1</td></tr><tr><td 
id="a3"><a href="DbUtils.java.html#L382" 
class="el_method">getMajorVersion()</a></td><td class="bar" id="b5"><img 
src="../jacoco-resources/greenbar.gif" width="9" height="10" title="4" 
alt="4"/></td><td class="ctr2" id="c4">100%</td><td class="bar" id="d5"/><td cla
 ss="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">0</td><td class="ctr2" 
id="g5">1</td><td class="ctr1" id="h5">0</td><td class="ctr2" id="i5">1</td><td 
class="ctr1" id="j5">0</td><td class="ctr2" id="k5">1</td></tr><tr><td 
id="a4"><a href="DbUtils.java.html#L390" 
class="el_method">getMinorVersion()</a></td><td class="bar" id="b6"><img 
src="../jacoco-resources/greenbar.gif" width="9" height="10" title="4" 
alt="4"/></td><td class="ctr2" id="c5">100%</td><td class="bar" id="d6"/><td 
class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">0</td><td class="ctr2" 
id="g6">1</td><td class="ctr1" id="h6">0</td><td class="ctr2" id="i6">1</td><td 
class="ctr1" id="j6">0</td><td class="ctr2" id="k6">1</td></tr><tr><td 
id="a7"><a href="DbUtils.java.html#L406" 
class="el_method">jdbcCompliant()</a></td><td class="bar" id="b7"><img 
src="../jacoco-resources/greenbar.gif" width="9" height="10" title="4" 
alt="4"/></td><td class="ctr2" id="c6">100%</td><td class="bar" id="d7"/><td 
class="ctr2" id="e7">n
 /a</td><td class="ctr1" id="f7">0</td><td class="ctr2" id="g7">1</td><td 
class="ctr1" id="h7">0</td><td class="ctr2" id="i7">1</td><td class="ctr1" 
id="j7">0</td><td class="ctr2" id="k7">1</td></tr></tbody></table><div 
class="footer"><span class="right">Created with <a 
href="http://www.jacoco.org/jacoco";>JaCoCo</a> 
0.8.5.201910111838</span></div></body></html>
\ No newline at end of file

Added: 
dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/DbUtils.html
==============================================================================
--- 
dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/DbUtils.html 
(added)
+++ 
dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/DbUtils.html 
Wed Jan  8 06:02:46 2020
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD 
XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";><html 
xmlns="http://www.w3.org/1999/xhtml"; lang="en"><head><meta 
http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link 
rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link 
rel="shortcut icon" href="../jacoco-resources/report.gif" 
type="image/gif"/><title>DbUtils</title><script type="text/javascript" 
src="../jacoco-resources/sort.js"></script></head><body 
onload="initialSort(['breadcrumb'])"><div class="breadcrumb" 
id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" 
class="el_session">Sessions</a></span><a href="../index.html" 
class="el_report">Apache Commons DbUtils</a> &gt; <a href="index.html" 
class="el_package">org.apache.commons.dbutils</a> &gt; <span 
class="el_class">DbUtils</span></div><h1>DbUtils</h1><table class="coverage" 
cellspacing="0" id="coveragetable"><thead><tr><td
  class="sortable" id="a" onclick="toggleSort(this)">Element</td><td 
class="down sortable bar" id="b" onclick="toggleSort(this)">Missed 
Instructions</td><td class="sortable ctr2" id="c" 
onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" 
onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" 
onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" 
onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" 
onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" 
onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" 
onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" 
onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" 
onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td
 class="bar">90 of 164</td><td class="ctr2">45%</td><td class="bar">10 of 
22</td><td class="ctr2">54%</td><td class="ctr1">10</td><td 
class="ctr2">30</td><td class
 ="ctr1">33</td><td class="ctr2">80</td><td class="ctr1">5</td><td 
class="ctr2">19</td></tr></tfoot><tbody><tr><td id="a10"><a 
href="DbUtils.java.html#L206" class="el_method">loadDriver(ClassLoader, 
String)</a></td><td class="bar" id="b0"><img 
src="../jacoco-resources/redbar.gif" width="112" height="10" title="44" 
alt="44"/><img src="../jacoco-resources/greenbar.gif" width="7" height="10" 
title="3" alt="3"/></td><td class="ctr2" id="c13">6%</td><td class="bar" 
id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" 
title="4" alt="4"/></td><td class="ctr2" id="e6">0%</td><td class="ctr1" 
id="f1">2</td><td class="ctr2" id="g0">3</td><td class="ctr1" 
id="h0">14</td><td class="ctr2" id="i0">16</td><td class="ctr1" 
id="j5">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a13"><a 
href="DbUtils.java.html#L259" class="el_method">printStackTrace(SQLException, 
PrintWriter)</a></td><td class="bar" id="b1"><img 
src="../jacoco-resources/redbar.gif" width="43" height="10" ti
 tle="17" alt="17"/></td><td class="ctr2" id="c14">0%</td><td class="bar" 
id="d1"><img src="../jacoco-resources/redbar.gif" width="120" height="10" 
title="4" alt="4"/></td><td class="ctr2" id="e7">0%</td><td class="ctr1" 
id="f0">3</td><td class="ctr2" id="g1">3</td><td class="ctr1" id="h1">7</td><td 
class="ctr2" id="i1">7</td><td class="ctr1" id="j0">1</td><td class="ctr2" 
id="k1">1</td></tr><tr><td id="a15"><a href="DbUtils.java.html#L285" 
class="el_method">printWarnings(Connection, PrintWriter)</a></td><td 
class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="30" 
height="10" title="12" alt="12"/></td><td class="ctr2" id="c15">0%</td><td 
class="bar" id="d2"><img src="../jacoco-resources/redbar.gif" width="60" 
height="10" title="2" alt="2"/></td><td class="ctr2" id="e8">0%</td><td 
class="ctr1" id="f2">2</td><td class="ctr2" id="g2">2</td><td class="ctr1" 
id="h2">6</td><td class="ctr2" id="i2">6</td><td class="ctr1" id="j1">1</td><td 
class="ctr2" id="k2">1</td></tr><tr>
 <td id="a12"><a href="DbUtils.java.html#L247" 
class="el_method">printStackTrace(SQLException)</a></td><td class="bar" 
id="b3"><img src="../jacoco-resources/redbar.gif" width="17" height="10" 
title="7" alt="7"/></td><td class="ctr2" id="c16">0%</td><td class="bar" 
id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f3">1</td><td 
class="ctr2" id="g9">1</td><td class="ctr1" id="h3">2</td><td class="ctr2" 
id="i15">2</td><td class="ctr1" id="j2">1</td><td class="ctr2" 
id="k3">1</td></tr><tr><td id="a14"><a href="DbUtils.java.html#L275" 
class="el_method">printWarnings(Connection)</a></td><td class="bar" 
id="b4"><img src="../jacoco-resources/redbar.gif" width="17" height="10" 
title="7" alt="7"/></td><td class="ctr2" id="c17">0%</td><td class="bar" 
id="d10"/><td class="ctr2" id="e10">n/a</td><td class="ctr1" id="f4">1</td><td 
class="ctr2" id="g10">1</td><td class="ctr1" id="h4">2</td><td class="ctr2" 
id="i16">2</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k4">1</td></t
 r><tr><td id="a9"><a href="DbUtils.java.html#L48" 
class="el_method">DbUtils()</a></td><td class="bar" id="b5"><img 
src="../jacoco-resources/redbar.gif" width="7" height="10" title="3" 
alt="3"/></td><td class="ctr2" id="c18">0%</td><td class="bar" id="d11"/><td 
class="ctr2" id="e11">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" 
id="g11">1</td><td class="ctr1" id="h5">2</td><td class="ctr2" 
id="i17">2</td><td class="ctr1" id="j4">1</td><td class="ctr2" 
id="k5">1</td></tr><tr><td id="a4"><a href="DbUtils.java.html#L115" 
class="el_method">closeQuietly(Connection, Statement, ResultSet)</a></td><td 
class="bar" id="b6"><img src="../jacoco-resources/greenbar.gif" width="17" 
height="10" title="7" alt="7"/></td><td class="ctr2" id="c0">100%</td><td 
class="bar" id="d12"/><td class="ctr2" id="e12">n/a</td><td class="ctr1" 
id="f6">0</td><td class="ctr2" id="g12">1</td><td class="ctr1" 
id="h6">0</td><td class="ctr2" id="i3">4</td><td class="ctr1" id="j6">0</td><td 
class="ctr2" id="k6">1
 </td></tr><tr><td id="a7"><a href="DbUtils.java.html#L161" 
class="el_method">commitAndClose(Connection)</a></td><td class="bar" 
id="b7"><img src="../jacoco-resources/greenbar.gif" width="17" height="10" 
title="7" alt="7"/></td><td class="ctr2" id="c1">100%</td><td class="bar" 
id="d3"><img src="../jacoco-resources/greenbar.gif" width="60" height="10" 
title="2" alt="2"/></td><td class="ctr2" id="e0">100%</td><td class="ctr1" 
id="f7">0</td><td class="ctr2" id="g3">2</td><td class="ctr1" id="h7">0</td><td 
class="ctr2" id="i4">4</td><td class="ctr1" id="j7">0</td><td class="ctr2" 
id="k7">1</td></tr><tr><td id="a17"><a href="DbUtils.java.html#L314" 
class="el_method">rollbackAndClose(Connection)</a></td><td class="bar" 
id="b8"><img src="../jacoco-resources/greenbar.gif" width="17" height="10" 
title="7" alt="7"/></td><td class="ctr2" id="c2">100%</td><td class="bar" 
id="d4"><img src="../jacoco-resources/greenbar.gif" width="60" height="10" 
title="2" alt="2"/></td><td class="ctr2" id="e1">10
 0%</td><td class="ctr1" id="f8">0</td><td class="ctr2" id="g4">2</td><td 
class="ctr1" id="h8">0</td><td class="ctr2" id="i5">4</td><td class="ctr1" 
id="j8">0</td><td class="ctr2" id="k8">1</td></tr><tr><td id="a0"><a 
href="DbUtils.java.html#L59" class="el_method">close(Connection)</a></td><td 
class="bar" id="b9"><img src="../jacoco-resources/greenbar.gif" width="12" 
height="10" title="5" alt="5"/></td><td class="ctr2" id="c3">100%</td><td 
class="bar" id="d5"><img src="../jacoco-resources/greenbar.gif" width="60" 
height="10" title="2" alt="2"/></td><td class="ctr2" id="e2">100%</td><td 
class="ctr1" id="f9">0</td><td class="ctr2" id="g5">2</td><td class="ctr1" 
id="h9">0</td><td class="ctr2" id="i11">3</td><td class="ctr1" 
id="j9">0</td><td class="ctr2" id="k9">1</td></tr><tr><td id="a1"><a 
href="DbUtils.java.html#L71" class="el_method">close(ResultSet)</a></td><td 
class="bar" id="b10"><img src="../jacoco-resources/greenbar.gif" width="12" 
height="10" title="5" alt="5"/></td><td class=
 "ctr2" id="c4">100%</td><td class="bar" id="d6"><img 
src="../jacoco-resources/greenbar.gif" width="60" height="10" title="2" 
alt="2"/></td><td class="ctr2" id="e3">100%</td><td class="ctr1" 
id="f10">0</td><td class="ctr2" id="g6">2</td><td class="ctr1" 
id="h10">0</td><td class="ctr2" id="i12">3</td><td class="ctr1" 
id="j10">0</td><td class="ctr2" id="k10">1</td></tr><tr><td id="a2"><a 
href="DbUtils.java.html#L83" class="el_method">close(Statement)</a></td><td 
class="bar" id="b11"><img src="../jacoco-resources/greenbar.gif" width="12" 
height="10" title="5" alt="5"/></td><td class="ctr2" id="c5">100%</td><td 
class="bar" id="d7"><img src="../jacoco-resources/greenbar.gif" width="60" 
height="10" title="2" alt="2"/></td><td class="ctr2" id="e4">100%</td><td 
class="ctr1" id="f11">0</td><td class="ctr2" id="g7">2</td><td class="ctr1" 
id="h11">0</td><td class="ctr2" id="i13">3</td><td class="ctr1" 
id="j11">0</td><td class="ctr2" id="k11">1</td></tr><tr><td id="a3"><a 
href="DbUtils.java.html
 #L96" class="el_method">closeQuietly(Connection)</a></td><td class="bar" 
id="b12"><img src="../jacoco-resources/greenbar.gif" width="12" height="10" 
title="5" alt="5"/></td><td class="ctr2" id="c6">100%</td><td class="bar" 
id="d13"/><td class="ctr2" id="e13">n/a</td><td class="ctr1" id="f12">0</td><td 
class="ctr2" id="g13">1</td><td class="ctr1" id="h12">0</td><td class="ctr2" 
id="i6">4</td><td class="ctr1" id="j12">0</td><td class="ctr2" 
id="k12">1</td></tr><tr><td id="a5"><a href="DbUtils.java.html#L134" 
class="el_method">closeQuietly(ResultSet)</a></td><td class="bar" id="b13"><img 
src="../jacoco-resources/greenbar.gif" width="12" height="10" title="5" 
alt="5"/></td><td class="ctr2" id="c7">100%</td><td class="bar" id="d14"/><td 
class="ctr2" id="e14">n/a</td><td class="ctr1" id="f13">0</td><td class="ctr2" 
id="g14">1</td><td class="ctr1" id="h13">0</td><td class="ctr2" 
id="i7">4</td><td class="ctr1" id="j13">0</td><td class="ctr2" 
id="k13">1</td></tr><tr><td id="a6"><a href="DbUt
 ils.java.html#L148" class="el_method">closeQuietly(Statement)</a></td><td 
class="bar" id="b14"><img src="../jacoco-resources/greenbar.gif" width="12" 
height="10" title="5" alt="5"/></td><td class="ctr2" id="c8">100%</td><td 
class="bar" id="d15"/><td class="ctr2" id="e15">n/a</td><td class="ctr1" 
id="f14">0</td><td class="ctr2" id="g15">1</td><td class="ctr1" 
id="h14">0</td><td class="ctr2" id="i8">4</td><td class="ctr1" 
id="j14">0</td><td class="ctr2" id="k14">1</td></tr><tr><td id="a8"><a 
href="DbUtils.java.html#L178" 
class="el_method">commitAndCloseQuietly(Connection)</a></td><td class="bar" 
id="b15"><img src="../jacoco-resources/greenbar.gif" width="12" height="10" 
title="5" alt="5"/></td><td class="ctr2" id="c9">100%</td><td class="bar" 
id="d16"/><td class="ctr2" id="e16">n/a</td><td class="ctr1" id="f15">0</td><td 
class="ctr2" id="g16">1</td><td class="ctr1" id="h15">0</td><td class="ctr2" 
id="i9">4</td><td class="ctr1" id="j15">0</td><td class="ctr2" 
id="k15">1</td></tr><tr><t
 d id="a11"><a href="DbUtils.java.html#L192" 
class="el_method">loadDriver(String)</a></td><td class="bar" id="b16"><img 
src="../jacoco-resources/greenbar.gif" width="12" height="10" title="5" 
alt="5"/></td><td class="ctr2" id="c10">100%</td><td class="bar" id="d17"/><td 
class="ctr2" id="e17">n/a</td><td class="ctr1" id="f16">0</td><td class="ctr2" 
id="g17">1</td><td class="ctr1" id="h16">0</td><td class="ctr2" 
id="i18">1</td><td class="ctr1" id="j16">0</td><td class="ctr2" 
id="k16">1</td></tr><tr><td id="a16"><a href="DbUtils.java.html#L300" 
class="el_method">rollback(Connection)</a></td><td class="bar" id="b17"><img 
src="../jacoco-resources/greenbar.gif" width="12" height="10" title="5" 
alt="5"/></td><td class="ctr2" id="c11">100%</td><td class="bar" id="d8"><img 
src="../jacoco-resources/greenbar.gif" width="60" height="10" title="2" 
alt="2"/></td><td class="ctr2" id="e5">100%</td><td class="ctr1" 
id="f17">0</td><td class="ctr2" id="g8">2</td><td class="ctr1" 
id="h17">0</td><td clas
 s="ctr2" id="i14">3</td><td class="ctr1" id="j17">0</td><td class="ctr2" 
id="k17">1</td></tr><tr><td id="a18"><a href="DbUtils.java.html#L332" 
class="el_method">rollbackAndCloseQuietly(Connection)</a></td><td class="bar" 
id="b18"><img src="../jacoco-resources/greenbar.gif" width="12" height="10" 
title="5" alt="5"/></td><td class="ctr2" id="c12">100%</td><td class="bar" 
id="d18"/><td class="ctr2" id="e18">n/a</td><td class="ctr1" id="f18">0</td><td 
class="ctr2" id="g18">1</td><td class="ctr1" id="h18">0</td><td class="ctr2" 
id="i10">4</td><td class="ctr1" id="j18">0</td><td class="ctr2" 
id="k18">1</td></tr></tbody></table><div class="footer"><span 
class="right">Created with <a href="http://www.jacoco.org/jacoco";>JaCoCo</a> 
0.8.5.201910111838</span></div></body></html>
\ No newline at end of file


Reply via email to