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 2020/01/08 06:02:47 UTC

svn commit: r37517 [48/50] - in /dev/commons/dbutils/1.8-RC2: ./ binaries/ site/ site/apidocs/ site/apidocs/jquery/ site/apidocs/jquery/external/ site/apidocs/jquery/external/jquery/ site/apidocs/jquery/images/ site/apidocs/jquery/jszip-utils/ site/api...

Added: dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/DbUtils.java.html
==============================================================================
--- dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/DbUtils.java.html (added)
+++ dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/DbUtils.java.html Wed Jan  8 06:02:46 2020
@@ -0,0 +1,435 @@
+<?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.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">D
 bUtils.java</span></div><h1>DbUtils.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 static java.sql.DriverManager.registerDriver;
+
+import java.io.PrintWriter;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+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.logging.Logger;
+import java.util.Properties;
+
+/**
+ * A collection of JDBC helper methods.  This class is thread safe.
+ */
+public final class DbUtils {
+
+    /**
+     * Default constructor.
+     *
+     * Utility classes should not have a public or default constructor,
+     * but this one preserves retro-compatibility.
+     *
+     * @since 1.4
+     */
+<span class="nc" id="L48">    public DbUtils() {</span>
+        // do nothing
+<span class="nc" id="L50">    }</span>
+
+    /**
+     * Close a {@code Connection}, avoid closing if null.
+     *
+     * @param conn Connection to close.
+     * @throws SQLException if a database access error occurs
+     */
+    public static void close(final Connection conn) throws SQLException {
+<span class="fc bfc" id="L59" title="All 2 branches covered.">        if (conn != null) {</span>
+<span class="fc" id="L60">            conn.close();</span>
+        }
+<span class="fc" id="L62">    }</span>
+
+    /**
+     * Close a {@code ResultSet}, avoid closing if null.
+     *
+     * @param rs ResultSet to close.
+     * @throws SQLException if a database access error occurs
+     */
+    public static void close(final ResultSet rs) throws SQLException {
+<span class="fc bfc" id="L71" title="All 2 branches covered.">        if (rs != null) {</span>
+<span class="fc" id="L72">            rs.close();</span>
+        }
+<span class="fc" id="L74">    }</span>
+
+    /**
+     * Close a {@code Statement}, avoid closing if null.
+     *
+     * @param stmt Statement to close.
+     * @throws SQLException if a database access error occurs
+     */
+    public static void close(final Statement stmt) throws SQLException {
+<span class="fc bfc" id="L83" title="All 2 branches covered.">        if (stmt != null) {</span>
+<span class="fc" id="L84">            stmt.close();</span>
+        }
+<span class="fc" id="L86">    }</span>
+
+    /**
+     * Close a {@code Connection}, avoid closing if null and hide
+     * any SQLExceptions that occur.
+     *
+     * @param conn Connection to close.
+     */
+    public static void closeQuietly(final Connection conn) {
+        try {
+<span class="fc" id="L96">            close(conn);</span>
+<span class="fc" id="L97">        } catch (final SQLException e) { // NOPMD</span>
+            // quiet
+<span class="fc" id="L99">        }</span>
+<span class="fc" id="L100">    }</span>
+
+    /**
+     * Close a {@code Connection}, {@code Statement} and
+     * {@code ResultSet}.  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(final Connection conn, final Statement stmt,
+            final ResultSet rs) {
+
+        try {
+<span class="fc" id="L115">            closeQuietly(rs);</span>
+        } finally {
+            try {
+<span class="fc" id="L118">                closeQuietly(stmt);</span>
+            } finally {
+<span class="fc" id="L120">                closeQuietly(conn);</span>
+            }
+        }
+
+<span class="fc" id="L124">    }</span>
+
+    /**
+     * Close a {@code ResultSet}, avoid closing if null and hide any
+     * SQLExceptions that occur.
+     *
+     * @param rs ResultSet to close.
+     */
+    public static void closeQuietly(final ResultSet rs) {
+        try {
+<span class="fc" id="L134">            close(rs);</span>
+<span class="fc" id="L135">        } catch (final SQLException e) { // NOPMD</span>
+            // quiet
+<span class="fc" id="L137">        }</span>
+<span class="fc" id="L138">    }</span>
+
+    /**
+     * Close a {@code Statement}, avoid closing if null and hide
+     * any SQLExceptions that occur.
+     *
+     * @param stmt Statement to close.
+     */
+    public static void closeQuietly(final Statement stmt) {
+        try {
+<span class="fc" id="L148">            close(stmt);</span>
+<span class="fc" id="L149">        } catch (final SQLException e) { // NOPMD</span>
+            // quiet
+<span class="fc" id="L151">        }</span>
+<span class="fc" id="L152">    }</span>
+
+    /**
+     * Commits a {@code Connection} then closes it, avoid closing if null.
+     *
+     * @param conn Connection to close.
+     * @throws SQLException if a database access error occurs
+     */
+    public static void commitAndClose(final Connection conn) throws SQLException {
+<span class="fc bfc" id="L161" title="All 2 branches covered.">        if (conn != null) {</span>
+            try {
+<span class="fc" id="L163">                conn.commit();</span>
+            } finally {
+<span class="fc" id="L165">                conn.close();</span>
+            }
+        }
+<span class="fc" id="L168">    }</span>
+
+    /**
+     * Commits a {@code Connection} then closes it, avoid closing if null
+     * and hide any SQLExceptions that occur.
+     *
+     * @param conn Connection to close.
+     */
+    public static void commitAndCloseQuietly(final Connection conn) {
+        try {
+<span class="fc" id="L178">            commitAndClose(conn);</span>
+<span class="fc" id="L179">        } catch (final SQLException e) { // NOPMD</span>
+            // quiet
+<span class="fc" id="L181">        }</span>
+<span class="fc" id="L182">    }</span>
+
+    /**
+     * 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} if the driver was found, otherwise {@code false}
+     */
+    public static boolean loadDriver(final String driverClassName) {
+<span class="fc" id="L192">        return loadDriver(DbUtils.class.getClassLoader(), driverClassName);</span>
+    }
+
+    /**
+     * 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} if the driver was found, otherwise {@code false}
+     * @since 1.4
+     */
+    public static boolean loadDriver(final ClassLoader classLoader, final String driverClassName) {
+        try {
+<span class="nc" id="L206">            final Class&lt;?&gt; loadedClass = classLoader.loadClass(driverClassName);</span>
+
+<span class="nc bnc" id="L208" title="All 2 branches missed.">            if (!Driver.class.isAssignableFrom(loadedClass)) {</span>
+<span class="nc" id="L209">                return false;</span>
+            }
+
+            @SuppressWarnings(&quot;unchecked&quot;) // guarded by previous check
+            final
+<span class="nc" id="L214">            Class&lt;Driver&gt; driverClass = (Class&lt;Driver&gt;) loadedClass;</span>
+<span class="nc" id="L215">            final Constructor&lt;Driver&gt; driverConstructor = driverClass.getConstructor();</span>
+
+            // make Constructor accessible if it is private
+            @SuppressWarnings(&quot;deprecation&quot;)
+            // TODO This is deprecated in Java9 and canAccess() should be used. Adding suppression for building on
+            //      later JDKs without a warning.
+<span class="nc" id="L221">            final boolean isConstructorAccessible = driverConstructor.isAccessible();</span>
+<span class="nc bnc" id="L222" title="All 2 branches missed.">            if (!isConstructorAccessible) {</span>
+<span class="nc" id="L223">                driverConstructor.setAccessible(true);</span>
+            }
+
+            try {
+<span class="nc" id="L227">                final Driver driver = driverConstructor.newInstance();</span>
+<span class="nc" id="L228">                registerDriver(new DriverProxy(driver));</span>
+            } finally {
+<span class="nc" id="L230">                driverConstructor.setAccessible(isConstructorAccessible);</span>
+            }
+
+<span class="nc" id="L233">            return true;</span>
+<span class="nc" id="L234">        } catch (final RuntimeException e) {</span>
+<span class="nc" id="L235">            return false;</span>
+<span class="fc" id="L236">        } catch (final Exception e) {</span>
+<span class="fc" id="L237">            return false;</span>
+        }
+    }
+
+    /**
+     * Print the stack trace for a SQLException to STDERR.
+     *
+     * @param e SQLException to print stack trace of
+     */
+    public static void printStackTrace(final SQLException e) {
+<span class="nc" id="L247">        printStackTrace(e, new PrintWriter(System.err));</span>
+<span class="nc" id="L248">    }</span>
+
+    /**
+     * 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(final SQLException e, final PrintWriter pw) {
+
+<span class="nc" id="L259">        SQLException next = e;</span>
+<span class="nc bnc" id="L260" title="All 2 branches missed.">        while (next != null) {</span>
+<span class="nc" id="L261">            next.printStackTrace(pw);</span>
+<span class="nc" id="L262">            next = next.getNextException();</span>
+<span class="nc bnc" id="L263" title="All 2 branches missed.">            if (next != null) {</span>
+<span class="nc" id="L264">                pw.println(&quot;Next SQLException:&quot;);</span>
+            }
+        }
+<span class="nc" id="L267">    }</span>
+
+    /**
+     * Print warnings on a Connection to STDERR.
+     *
+     * @param conn Connection to print warnings from
+     */
+    public static void printWarnings(final Connection conn) {
+<span class="nc" id="L275">        printWarnings(conn, new PrintWriter(System.err));</span>
+<span class="nc" id="L276">    }</span>
+
+    /**
+     * 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(final Connection conn, final PrintWriter pw) {
+<span class="nc bnc" id="L285" title="All 2 branches missed.">        if (conn != null) {</span>
+            try {
+<span class="nc" id="L287">                printStackTrace(conn.getWarnings(), pw);</span>
+<span class="nc" id="L288">            } catch (final SQLException e) {</span>
+<span class="nc" id="L289">                printStackTrace(e, pw);</span>
+<span class="nc" id="L290">            }</span>
+        }
+<span class="nc" id="L292">    }</span>
+
+    /**
+     * 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(final Connection conn) throws SQLException {
+<span class="fc bfc" id="L300" title="All 2 branches covered.">        if (conn != null) {</span>
+<span class="fc" id="L301">            conn.rollback();</span>
+        }
+<span class="fc" id="L303">    }</span>
+
+    /**
+     * Performs a rollback on the {@code Connection} 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(final Connection conn) throws SQLException {
+<span class="fc bfc" id="L314" title="All 2 branches covered.">        if (conn != null) {</span>
+            try {
+<span class="fc" id="L316">                conn.rollback();</span>
+            } finally {
+<span class="fc" id="L318">                conn.close();</span>
+            }
+        }
+<span class="fc" id="L321">    }</span>
+
+    /**
+     * Performs a rollback on the {@code Connection} 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(final Connection conn) {
+        try {
+<span class="fc" id="L332">            rollbackAndClose(conn);</span>
+<span class="fc" id="L333">        } catch (final SQLException e) { // NOPMD</span>
+            // quiet
+<span class="fc" id="L335">        }</span>
+<span class="fc" id="L336">    }</span>
+
+    /**
+     * Simple {@link Driver} proxy class that proxies a JDBC Driver loaded dynamically.
+     *
+     * @since 1.6
+     */
+    static final class DriverProxy implements Driver {
+
+<span class="fc" id="L345">        private boolean parentLoggerSupported = true;</span>
+
+        /**
+         * 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.
+         */
+<span class="fc" id="L357">        public DriverProxy(final Driver adapted) {</span>
+<span class="fc" id="L358">            this.adapted = adapted;</span>
+<span class="fc" id="L359">        }</span>
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public boolean acceptsURL(final String url) throws SQLException {
+<span class="fc" id="L366">            return adapted.acceptsURL(url);</span>
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public Connection connect(final String url, final Properties info) throws SQLException {
+<span class="fc" id="L374">            return adapted.connect(url, info);</span>
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public int getMajorVersion() {
+<span class="fc" id="L382">            return adapted.getMajorVersion();</span>
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public int getMinorVersion() {
+<span class="fc" id="L390">            return adapted.getMinorVersion();</span>
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public DriverPropertyInfo[] getPropertyInfo(final String url, final Properties info) throws SQLException {
+<span class="fc" id="L398">            return adapted.getPropertyInfo(url, info);</span>
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public boolean jdbcCompliant() {
+<span class="fc" id="L406">            return adapted.jdbcCompliant();</span>
+        }
+
+        /**
+         * Java 1.7 method.
+         */
+        @Override
+        public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+<span class="nc bnc" id="L414" title="All 2 branches missed.">            if (parentLoggerSupported) {</span>
+                try {
+<span class="nc" id="L416">                    final Method method = adapted.getClass().getMethod(&quot;getParentLogger&quot;);</span>
+<span class="nc" id="L417">                    return (Logger)method.invoke(adapted);</span>
+<span class="nc" id="L418">                } catch (final NoSuchMethodException e) {</span>
+<span class="nc" id="L419">                    parentLoggerSupported = false;</span>
+<span class="nc" id="L420">                    throw new SQLFeatureNotSupportedException(e);</span>
+<span class="nc" id="L421">                } catch (final IllegalAccessException e) {</span>
+<span class="nc" id="L422">                    parentLoggerSupported = false;</span>
+<span class="nc" id="L423">                    throw new SQLFeatureNotSupportedException(e);</span>
+<span class="nc" id="L424">                } catch (final InvocationTargetException e) {</span>
+<span class="nc" id="L425">                    parentLoggerSupported = false;</span>
+<span class="nc" id="L426">                    throw new SQLFeatureNotSupportedException(e);</span>
+                }
+            }
+<span class="nc" id="L429">            throw new SQLFeatureNotSupportedException();</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/GenerousBeanProcessor.html
==============================================================================
--- dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/GenerousBeanProcessor.html (added)
+++ dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/GenerousBeanProcessor.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>GenerousBeanProcessor</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">GenerousBeanProcessor</span></div><h1>GenerousBeanProcessor</h1><table class="coverage" cellspa
 cing="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">0 of 69</td><td class="ctr2">100%</td><td class="bar">1 of 12</td><td class="ctr2">91%</td><td class="ctr1">
 1</td><td class="ctr2">8</td><td class="ctr1">0</td><td class="ctr2">17</td><td class="ctr1">0</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a1"><a href="GenerousBeanProcessor.java.html#L45" class="el_method">mapColumnsToProperties(ResultSetMetaData, PropertyDescriptor[])</a></td><td class="bar" id="b0"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="66" alt="66"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="10" height="10" title="1" alt="1"/><img src="../jacoco-resources/greenbar.gif" width="110" height="10" title="11" alt="11"/></td><td class="ctr2" id="e0">91%</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">7</td><td class="ctr1" id="h0">0</td><td class="ctr2" id="i0">15</td><td class="ctr1" id="j0">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a0"><a href="GenerousBeanProcessor.java.html#L38" class="el_method">GenerousBeanProcessor()</a></td><td class="b
 ar" id="b1"><img src="../jacoco-resources/greenbar.gif" width="5" height="10" title="3" alt="3"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d1"/><td class="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">2</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k1">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/GenerousBeanProcessor.java.html
==============================================================================
--- dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/GenerousBeanProcessor.java.html (added)
+++ dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/GenerousBeanProcessor.java.html Wed Jan  8 06:02:46 2020
@@ -0,0 +1,74 @@
+<?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>GenerousBeanProcessor.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">GenerousBeanProcessor.java</span></div><h1>GenerousBeanProcessor.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.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.
+ *
+ * @since 1.6
+ */
+public class GenerousBeanProcessor extends BeanProcessor {
+
+    /**
+     * Default constructor.
+     */
+    public GenerousBeanProcessor() {
+<span class="fc" id="L38">        super();</span>
+<span class="fc" id="L39">    }</span>
+
+    @Override
+    protected int[] mapColumnsToProperties(final ResultSetMetaData rsmd,
+            final PropertyDescriptor[] props) throws SQLException {
+
+<span class="fc" id="L45">        final int cols = rsmd.getColumnCount();</span>
+<span class="fc" id="L46">        final int[] columnToProperty = new int[cols + 1];</span>
+<span class="fc" id="L47">        Arrays.fill(columnToProperty, PROPERTY_NOT_FOUND);</span>
+
+<span class="fc bfc" id="L49" title="All 2 branches covered.">        for (int col = 1; col &lt;= cols; col++) {</span>
+<span class="fc" id="L50">            String columnName = rsmd.getColumnLabel(col);</span>
+
+<span class="pc bpc" id="L52" title="1 of 4 branches missed.">            if (null == columnName || 0 == columnName.length()) {</span>
+<span class="fc" id="L53">                columnName = rsmd.getColumnName(col);</span>
+            }
+
+<span class="fc" id="L56">            final String generousColumnName = columnName.replace(&quot;_&quot;, &quot;&quot;);</span>
+
+<span class="fc bfc" id="L58" title="All 2 branches covered.">            for (int i = 0; i &lt; props.length; i++) {</span>
+<span class="fc" id="L59">                final String propName = props[i].getName();</span>
+
+                // see if either the column name, or the generous one matches
+<span class="fc bfc" id="L62" title="All 2 branches covered.">                if (columnName.equalsIgnoreCase(propName) ||</span>
+<span class="fc bfc" id="L63" title="All 2 branches covered.">                        generousColumnName.equalsIgnoreCase(propName)) {</span>
+<span class="fc" id="L64">                    columnToProperty[col] = i;</span>
+<span class="fc" id="L65">                    break;</span>
+                }
+            }
+        }
+
+<span class="fc" id="L70">        return columnToProperty;</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/OutParameter.html
==============================================================================
--- dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/OutParameter.html (added)
+++ dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/OutParameter.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>OutParameter</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">OutParameter</span></div><h1>OutParameter</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">28 of 87</td><td class="ctr2">67%</td><td class="bar">0 of 2</td><td class="ctr2">100%</td><td class="ctr1">3</td><td class="ctr2">10</
 td><td class="ctr1">3</td><td class="ctr2">23</td><td class="ctr1">3</td><td class="ctr2">9</td></tr></tfoot><tbody><tr><td id="a8"><a href="OutParameter.java.html#L139" class="el_method">toString()</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="22" alt="22"/></td><td class="ctr2" id="c6">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h0">1</td><td class="ctr2" id="i5">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="OutParameter.java.html#L77" class="el_method">getSqlType()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="16" height="10" title="3" alt="3"/></td><td class="ctr2" id="c7">0%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h1">1</td><td c
 lass="ctr2" id="i6">1</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a0"><a href="OutParameter.java.html#L85" class="el_method">getJavaType()</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="16" height="10" title="3" alt="3"/></td><td class="ctr2" id="c8">0%</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h2">1</td><td class="ctr2" id="i7">1</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a4"><a href="OutParameter.java.html#L39" class="el_method">OutParameter(int, Class, Object)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/greenbar.gif" width="81" height="10" title="15" alt="15"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f3">0</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h3">0</td><td
  class="ctr2" id="i0">6</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a5"><a href="OutParameter.java.html#L131" class="el_method">register(CallableStatement, int)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/greenbar.gif" width="76" height="10" title="14" alt="14"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d0"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="2" alt="2"/></td><td class="ctr2" id="e0">100%</td><td class="ctr1" id="f4">0</td><td class="ctr2" id="g0">2</td><td class="ctr1" id="h4">0</td><td class="ctr2" id="i2">4</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a3"><a href="OutParameter.java.html#L39" class="el_method">OutParameter(int, Class)</a></td><td class="bar" id="b5"><img src="../jacoco-resources/greenbar.gif" width="65" height="10" title="12" alt="12"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="d5"/><td class="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="i1">5</td><td class="ctr1" id="j5">0</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a6"><a href="OutParameter.java.html#L116" class="el_method">setValue(CallableStatement, int)</a></td><td class="bar" id="b6"><img src="../jacoco-resources/greenbar.gif" width="60" height="10" title="11" alt="11"/></td><td class="ctr2" id="c3">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="i3">3</td><td class="ctr1" id="j6">0</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a7"><a href="OutParameter.java.html#L104" class="el_method">setValue(Object)</a></td><td class="bar" id="b7"><img src="../jacoco-resources/greenbar.gif" width="21" height="10" title="4" alt="4"/></td><td class="ctr2" id="c4">100%</td><td class="bar" id="d7"/><td cl
 ass="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="i4">2</td><td class="ctr1" id="j7">0</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a2"><a href="OutParameter.java.html#L94" class="el_method">getValue()</a></td><td class="bar" id="b8"><img src="../jacoco-resources/greenbar.gif" width="16" height="10" title="3" alt="3"/></td><td class="ctr2" id="c5">100%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">0</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h8">0</td><td class="ctr2" id="i8">1</td><td class="ctr1" id="j8">0</td><td class="ctr2" id="k8">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/OutParameter.java.html
==============================================================================
--- dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/OutParameter.java.html (added)
+++ dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/OutParameter.java.html Wed Jan  8 06:02:46 2020
@@ -0,0 +1,143 @@
+<?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>OutParameter.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_sour
 ce">OutParameter.java</span></div><h1>OutParameter.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.CallableStatement;
+import java.sql.SQLException;
+
+/**
+ * Represents an OUT parameter for a stored procedure.  When running a stored
+ * procedure with {@link QueryRunner}, pass an instance of
+ * {@code OutParameter} to indicate that the parameter at that index is an
+ * OUT parameter.  The value of the parameter may be obtained from the
+ * {@code OutParameter} instance via {@link #getValue() }.
+ * &lt;p&gt;
+ * INOUT parameters are also supported by setting the {@code value} of
+ * the {@code OutParameter} instance before invoking the stored procedure.
+ *
+ * @param &lt;T&gt; the class of the parameter; should be compatible via cast with the
+ * class returned by the {@code CallableStatement.getObject(int)} method.
+ */
+public class OutParameter&lt;T&gt; {
+    private final int sqlType;
+    private final Class&lt;T&gt; javaType;
+<span class="fc" id="L39">    private T value = null;</span>
+
+    /**
+     * Construct an {@code OutParameter} for the given JDBC SQL type and
+     * Java type.
+     * @param sqlType the JDBC SQL type of the parameter as in
+     * {@code java.sql.Types}.
+     * @param javaType the Java class of the parameter value, cast compatible
+     * with the type returned by {@code CallableStatement.getObject(int)}
+     * for the JDBC type given by {@code sqlType}.
+     */
+<span class="fc" id="L50">    public OutParameter(final int sqlType, final Class&lt;T&gt; javaType) {</span>
+<span class="fc" id="L51">        this.sqlType = sqlType;</span>
+<span class="fc" id="L52">        this.javaType = javaType;</span>
+<span class="fc" id="L53">    }</span>
+
+    /**
+     * Construct an {@code OutParameter} for the given JDBC SQL type and
+     * Java type and with the given value.  The parameter will be treated as an
+     * INOUT parameter if the value is null.
+     * @param sqlType the JDBC SQL type of the parameter as in
+     * {@code java.sql.Types}.
+     * @param javaType the Java class of the parameter value, cast compatible
+     * with the type returned by {@code CallableStatement.getObject(int)}
+     * for the JDBC type given by {@code sqlType}.
+     * @param value the IN value of the parameter
+     */
+<span class="fc" id="L66">    public OutParameter(final int sqlType, final Class&lt;T&gt; javaType, final T value) {</span>
+<span class="fc" id="L67">        this.sqlType = sqlType;</span>
+<span class="fc" id="L68">        this.javaType = javaType;</span>
+<span class="fc" id="L69">        this.value = value;</span>
+<span class="fc" id="L70">    }</span>
+
+    /**
+     * Get the JDBC SQL type for this OUT parameter.
+     * @return the JDBC SQL type for this OUT parameter.
+     */
+    public int getSqlType() {
+<span class="nc" id="L77">        return sqlType;</span>
+    }
+
+    /**
+     * Get the Java class for this OUT parameter.
+     * @return the Java class for this OUT parameter.
+     */
+    public Class&lt;T&gt; getJavaType() {
+<span class="nc" id="L85">        return javaType;</span>
+    }
+
+    /**
+     * Get the value of the OUT parameter.  After the stored procedure has
+     * been executed, the value is the value returned via this parameter.
+     * @return the value of the OUT parameter.
+     */
+    public T getValue() {
+<span class="fc" id="L94">        return value;</span>
+    }
+
+    /**
+     * Set the value of the OUT parameter.  If the value is not null when the
+     * stored procedure is executed, then the parameter will be treated like an
+     * INOUT parameter.
+     * @param value the new value for the parameter.
+     */
+    public void setValue(final T value) {
+<span class="fc" id="L104">        this.value = value;</span>
+<span class="fc" id="L105">    }</span>
+
+    /**
+     * Set the value using the return value of the parameter an the given index
+     * from the given {@code CallableStatement}.
+     * @param stmt the already executed statement
+     * @param index the (1-based) index of the parameter
+     * @throws SQLException when the value could not be retrieved from the
+     * statement.
+     */
+    void setValue(final CallableStatement stmt, final int index) throws SQLException {
+<span class="fc" id="L116">        final Object object = stmt.getObject(index);</span>
+<span class="fc" id="L117">        value = javaType.cast(object);</span>
+<span class="fc" id="L118">    }</span>
+
+    /**
+     * Set up the given statement by registering an OUT parameter at the given
+     * index using the {@code sqlType} and {@code value} of this
+     * {@code OutParameter}.  If the value is not null, the parameter is
+     * treated like an INOUT parameter and the value is set on the statement.
+     * @param stmt the statement the parameter should register on.
+     * @param index the (1-based) index of the parameter.
+     * @throws SQLException if the parameter could not be registered, or if the
+     * value of the parameter could not be set.
+     */
+    void register(final CallableStatement stmt, final int index) throws SQLException {
+<span class="fc" id="L131">        stmt.registerOutParameter(index, sqlType);</span>
+<span class="fc bfc" id="L132" title="All 2 branches covered.">        if (value != null) {</span>
+<span class="fc" id="L133">            stmt.setObject(index, value);</span>
+        }
+<span class="fc" id="L135">    }</span>
+
+    @Override
+    public String toString() {
+<span class="nc" id="L139">        return &quot;OutParameter{&quot; + &quot;sqlType=&quot; + sqlType + &quot;, javaType=&quot;</span>
+            + javaType + &quot;, value=&quot; + value + '}';
+    }
+}
+</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/ProxyFactory.html
==============================================================================
--- dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/ProxyFactory.html (added)
+++ dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/ProxyFactory.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>ProxyFactory</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">ProxyFactory</span></div><h1>ProxyFactory</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">0 of 66</td><td class="ctr2">100%</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">0</td><td class="ctr2">11</t
 d><td class="ctr1">0</td><td class="ctr2">12</td><td class="ctr1">0</td><td class="ctr2">11</td></tr></tfoot><tbody><tr><td id="a8"><a href="ProxyFactory.java.html#L69" class="el_method">newProxyInstance(Class, InvocationHandler)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="14" alt="14"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">0</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">0</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j0">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a0"><a href="ProxyFactory.java.html#L78" class="el_method">createCallableStatement(InvocationHandler)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/greenbar.gif" width="51" height="10" title="6" alt="6"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">0</t
 d><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">0</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a1"><a href="ProxyFactory.java.html#L87" class="el_method">createConnection(InvocationHandler)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/greenbar.gif" width="51" height="10" title="6" alt="6"/></td><td class="ctr2" id="c2">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="i3">1</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a2"><a href="ProxyFactory.java.html#L96" class="el_method">createDriver(InvocationHandler)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/greenbar.gif" width="51" height="10" title="6" alt="6"/></td><td class="ctr2" id="c3">100%</td><td class="bar" id="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="i4">1</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a3"><a href="ProxyFactory.java.html#L105" class="el_method">createPreparedStatement(InvocationHandler)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/greenbar.gif" width="51" height="10" title="6" alt="6"/></td><td class="ctr2" id="c4">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="i5">1</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a4"><a href="ProxyFactory.java.html#L114" class="el_method">createResultSet(InvocationHandler)</a></td><td class="bar" id="b5"><img src="../jacoco-resources/greenbar.gif" width="51" height="10" title="6" alt="6"/></td><td class="ctr2" id="c5">100%</td><td class="bar" id="d5"/>
 <td class="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="i6">1</td><td class="ctr1" id="j5">0</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a5"><a href="ProxyFactory.java.html#L123" class="el_method">createResultSetMetaData(InvocationHandler)</a></td><td class="bar" id="b6"><img src="../jacoco-resources/greenbar.gif" width="51" height="10" title="6" alt="6"/></td><td class="ctr2" id="c6">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="i7">1</td><td class="ctr1" id="j6">0</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a6"><a href="ProxyFactory.java.html#L132" class="el_method">createStatement(InvocationHandler)</a></td><td class="bar" id="b7"><img src="../jacoco-resources/greenbar.gif" width="51" height="10" title="6" alt="6"/></td><td class="ctr2" id="c
 7">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="i8">1</td><td class="ctr1" id="j7">0</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a10"><a href="ProxyFactory.java.html#L42" class="el_method">static {...}</a></td><td class="bar" id="b8"><img src="../jacoco-resources/greenbar.gif" width="42" height="10" title="5" alt="5"/></td><td class="ctr2" id="c8">100%</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">0</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h8">0</td><td class="ctr2" id="i9">1</td><td class="ctr1" id="j8">0</td><td class="ctr2" id="k8">1</td></tr><tr><td id="a9"><a href="ProxyFactory.java.html#L57" class="el_method">ProxyFactory()</a></td><td class="bar" id="b9"><img src="../jacoco-resources/greenbar.gif" width="25" height="10" title="3" alt="3"/></td><td class="ctr2" id="c9">100%</td><t
 d class="bar" id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f9">0</td><td class="ctr2" id="g9">1</td><td class="ctr1" id="h9">0</td><td class="ctr2" id="i0">2</td><td class="ctr1" id="j9">0</td><td class="ctr2" id="k9">1</td></tr><tr><td id="a7"><a href="ProxyFactory.java.html#L50" class="el_method">instance()</a></td><td class="bar" id="b10"><img src="../jacoco-resources/greenbar.gif" width="17" height="10" title="2" alt="2"/></td><td class="ctr2" id="c10">100%</td><td class="bar" id="d10"/><td class="ctr2" id="e10">n/a</td><td class="ctr1" id="f10">0</td><td class="ctr2" id="g10">1</td><td class="ctr1" id="h10">0</td><td class="ctr2" id="i10">1</td><td class="ctr1" id="j10">0</td><td class="ctr2" id="k10">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/ProxyFactory.java.html
==============================================================================
--- dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/ProxyFactory.java.html (added)
+++ dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/ProxyFactory.java.html Wed Jan  8 06:02:46 2020
@@ -0,0 +1,136 @@
+<?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>ProxyFactory.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_sour
 ce">ProxyFactory.java</span></div><h1>ProxyFactory.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.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.
+     */
+<span class="fc" id="L42">    private static final ProxyFactory instance = new ProxyFactory();</span>
+
+    /**
+     * Returns the Singleton instance of this class.
+     *
+     * @return singleton instance
+     */
+    public static ProxyFactory instance() {
+<span class="fc" id="L50">        return instance;</span>
+    }
+
+    /**
+     * Protected constructor for ProxyFactory subclasses to use.
+     */
+    protected ProxyFactory() {
+<span class="fc" id="L57">        super();</span>
+<span class="fc" id="L58">    }</span>
+
+    /**
+     * Convenience method to generate a single-interface proxy using the handler's classloader
+     *
+     * @param &lt;T&gt; 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 &lt;T&gt; T newProxyInstance(final Class&lt;T&gt; type, final InvocationHandler handler) {
+<span class="fc" id="L69">        return type.cast(Proxy.newProxyInstance(handler.getClass().getClassLoader(), new Class&lt;?&gt;[] {type}, handler));</span>
+    }
+
+    /**
+     * Creates a new proxy {@code CallableStatement} object.
+     * @param handler The handler that intercepts/overrides method calls.
+     * @return proxied CallableStatement
+     */
+    public CallableStatement createCallableStatement(final InvocationHandler handler) {
+<span class="fc" id="L78">        return newProxyInstance(CallableStatement.class, handler);</span>
+    }
+
+    /**
+     * Creates a new proxy {@code Connection} object.
+     * @param handler The handler that intercepts/overrides method calls.
+     * @return proxied Connection
+     */
+    public Connection createConnection(final InvocationHandler handler) {
+<span class="fc" id="L87">        return newProxyInstance(Connection.class, handler);</span>
+    }
+
+    /**
+     * Creates a new proxy {@code Driver} object.
+     * @param handler The handler that intercepts/overrides method calls.
+     * @return proxied Driver
+     */
+    public Driver createDriver(final InvocationHandler handler) {
+<span class="fc" id="L96">        return newProxyInstance(Driver.class, handler);</span>
+    }
+
+    /**
+     * Creates a new proxy {@code PreparedStatement} object.
+     * @param handler The handler that intercepts/overrides method calls.
+     * @return proxied PreparedStatement
+     */
+    public PreparedStatement createPreparedStatement(final InvocationHandler handler) {
+<span class="fc" id="L105">        return newProxyInstance(PreparedStatement.class, handler);</span>
+    }
+
+    /**
+     * Creates a new proxy {@code ResultSet} object.
+     * @param handler The handler that intercepts/overrides method calls.
+     * @return proxied ResultSet
+     */
+    public ResultSet createResultSet(final InvocationHandler handler) {
+<span class="fc" id="L114">        return newProxyInstance(ResultSet.class, handler);</span>
+    }
+
+    /**
+     * Creates a new proxy {@code ResultSetMetaData} object.
+     * @param handler The handler that intercepts/overrides method calls.
+     * @return proxied ResultSetMetaData
+     */
+    public ResultSetMetaData createResultSetMetaData(final InvocationHandler handler) {
+<span class="fc" id="L123">        return newProxyInstance(ResultSetMetaData.class, handler);</span>
+    }
+
+    /**
+     * Creates a new proxy {@code Statement} object.
+     * @param handler The handler that intercepts/overrides method calls.
+     * @return proxied Statement
+     */
+    public Statement createStatement(final InvocationHandler handler) {
+<span class="fc" id="L132">        return newProxyInstance(Statement.class, handler);</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/QueryLoader.html
==============================================================================
--- dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/QueryLoader.html (added)
+++ dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/QueryLoader.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>QueryLoader</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">QueryLoader</span></div><h1>QueryLoader</h1><table class="coverage" cellspacing="0" id="coveragetable"><t
 head><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">4 of 86</td><td class="ctr2">95%</td><td class="bar">1 of 6</td><td class="ctr2">83%</td><td class="ctr1">1</td><td class="ctr2">9</td><td
  class="ctr1">1</td><td class="ctr2">22</td><td class="ctr1">0</td><td class="ctr2">6</td></tr></tfoot><tbody><tr><td id="a2"><a href="QueryLoader.java.html#L114" class="el_method">loadQueries(String)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="11" height="10" title="4" alt="4"/><img src="../jacoco-resources/greenbar.gif" width="108" height="10" title="38" alt="38"/></td><td class="ctr2" id="c5">90%</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="30" height="10" title="1" alt="1"/><img src="../jacoco-resources/greenbar.gif" width="90" height="10" title="3" alt="3"/></td><td class="ctr2" id="e1">75%</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">3</td><td class="ctr1" id="h0">1</td><td class="ctr2" id="i0">9</td><td class="ctr1" id="j0">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="QueryLoader.java.html#L85" class="el_method">load(String)</a></td><td class="bar" id="b1"><img src="../ja
 coco-resources/greenbar.gif" width="57" height="10" title="20" alt="20"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d1"><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="f1">0</td><td class="ctr2" id="g1">2</td><td class="ctr1" id="h1">0</td><td class="ctr2" id="i1">5</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a3"><a href="QueryLoader.java.html#L55" class="el_method">QueryLoader()</a></td><td class="bar" id="b2"><img src="../jacoco-resources/greenbar.gif" width="22" height="10" title="8" alt="8"/></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">3</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a4"><a href="QueryLoader.java.html#L37" cla
 ss="el_method">static {...}</a></td><td class="bar" id="b3"><img src="../jacoco-resources/greenbar.gif" width="22" height="10" title="8" alt="8"/></td><td class="ctr2" id="c2">100%</td><td class="bar" id="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">2</td><td class="ctr1" id="j3">0</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a5"><a href="QueryLoader.java.html#L140" class="el_method">unload(String)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/greenbar.gif" width="17" height="10" title="6" alt="6"/></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">2</td><td class="ctr1" id="j4">0</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a0"><a href="QueryLoader.java.html#L49" class="el_method">i
 nstance()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/greenbar.gif" width="5" height="10" title="2" alt="2"/></td><td class="ctr2" id="c4">100%</td><td class="bar" id="d5"/><td class="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></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/QueryLoader.java.html
==============================================================================
--- dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/QueryLoader.java.html (added)
+++ dev/commons/dbutils/1.8-RC2/site/jacoco/org.apache.commons.dbutils/QueryLoader.java.html Wed Jan  8 06:02:46 2020
@@ -0,0 +1,144 @@
+<?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>QueryLoader.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_sourc
 e">QueryLoader.java</span></div><h1>QueryLoader.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.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+import java.util.regex.Pattern;
+
+/**
+ * {@code QueryLoader} 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.
+     */
+<span class="fc" id="L37">    private static final QueryLoader instance = new QueryLoader();</span>
+
+    /**
+     * Matches .xml file extensions.
+     */
+<span class="fc" id="L42">    private static final Pattern dotXml = Pattern.compile(&quot;.+\\.[xX][mM][lL]&quot;);</span>
+
+    /**
+     * Return an instance of this class.
+     * @return The Singleton instance.
+     */
+    public static QueryLoader instance() {
+<span class="fc" id="L49">        return instance;</span>
+    }
+
+    /**
+     * Maps query set names to Maps of their queries.
+     */
+<span class="fc" id="L55">    private final Map&lt;String, Map&lt;String, String&gt;&gt; queries = new HashMap&lt;&gt;();</span>
+
+    /**
+     * QueryLoader constructor.
+     */
+    protected QueryLoader() {
+<span class="fc" id="L61">        super();</span>
+<span class="fc" id="L62">    }</span>
+
+    /**
+     * 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.  The properties file to load can be in either
+     * line-oriented or XML format.  XML formatted properties files must use a
+     * {@code .xml} file extension.
+     *
+     * @param path The path that the ClassLoader will use to find the file.
+     * This is &lt;strong&gt;not&lt;/strong&gt; a file system path.  If you had a jarred
+     * Queries.properties file in the com.yourcorp.app.jdbc package you would
+     * pass &quot;/com/yourcorp/app/jdbc/Queries.properties&quot; 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.
+     * @throws java.util.InvalidPropertiesFormatException if the XML properties file is
+     * invalid
+     * @return Map of query names to SQL values
+     * @see java.util.Properties
+     */
+    public synchronized Map&lt;String, String&gt; load(final String path) throws IOException {
+
+<span class="fc" id="L85">        Map&lt;String, String&gt; queryMap = this.queries.get(path);</span>
+
+<span class="fc bfc" id="L87" title="All 2 branches covered.">        if (queryMap == null) {</span>
+<span class="fc" id="L88">            queryMap = this.loadQueries(path);</span>
+<span class="fc" id="L89">            this.queries.put(path, queryMap);</span>
+        }
+
+<span class="fc" id="L92">        return queryMap;</span>
+    }
+
+    /**
+     * Loads a set of named queries into a Map object.  This implementation
+     * reads a properties file at the given path.  The properties file can be
+     * in either line-oriented or XML format.  XML formatted properties files
+     * must use a {@code .xml} file extension.
+
+     * @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.
+     * @throws java.util.InvalidPropertiesFormatException if the XML properties file is
+     * invalid
+     * @since DbUtils 1.1
+     * @return Map of query names to SQL values
+     * @see java.util.Properties
+     */
+    protected Map&lt;String, String&gt; loadQueries(final String path) throws IOException {
+        // Findbugs flags getClass().getResource as a bad practice; maybe we should change the API?
+        final Properties props;
+<span class="fc" id="L114">        try (InputStream in = getClass().getResourceAsStream(path)) {</span>
+
+<span class="fc bfc" id="L116" title="All 2 branches covered.">            if (in == null) {</span>
+<span class="fc" id="L117">                throw new IllegalArgumentException(path + &quot; not found.&quot;);</span>
+            }
+<span class="fc" id="L119">            props = new Properties();</span>
+<span class="pc bpc" id="L120" title="1 of 2 branches missed.">            if (dotXml.matcher(path).matches()) {</span>
+<span class="nc" id="L121">                props.loadFromXML(in);</span>
+            } else {
+<span class="fc" id="L123">                props.load(in);</span>
+            }
+        }
+
+        // Copy to HashMap for better performance
+
+        @SuppressWarnings({&quot;rawtypes&quot;, &quot;unchecked&quot; }) // load() always creates &lt;String,String&gt; entries
+        final
+<span class="fc" id="L131">        HashMap&lt;String, String&gt; hashMap = new HashMap(props);</span>
+<span class="fc" id="L132">        return hashMap;</span>
+    }
+
+    /**
+     * Removes the queries for the given path from the cache.
+     * @param path The path that the queries were loaded from.
+     */
+    public synchronized void unload(final String path) {
+<span class="fc" id="L140">        this.queries.remove(path);</span>
+<span class="fc" id="L141">    }</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