<?xml version="1.0" encoding="UTF-8"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<FindBugsFilter>
    <!-- PrintWriter wraps System.err which always uses the default encoding -->
    <Match>
        <Class name="org.apache.commons.dbutils.DbUtils" />
        <Method name="printStackTrace" />
        <Bug pattern="DM_DEFAULT_ENCODING" />
    </Match>
    <!-- PrintWriter wraps System.err which always uses the default encoding -->
    <Match>
        <Class name="org.apache.commons.dbutils.DbUtils" />
        <Method name="printWarnings" />
        <Bug pattern="DM_DEFAULT_ENCODING" />
    </Match>
    <!-- The javadocs state and the called code shows that null can be returned. -->
    <Match>
        <Class name="org.apache.commons.dbutils.QueryLoader" />
        <Method name="loadQueries" />
        <Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE" />
    </Match>
</FindBugsFilter>