<!--

    Copyright (c) 2011, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<FindBugsFilter>
    <!--
         Shing Wai Chan claims that whichever thread is woken up will do
         the requested work, so there's no need to wake up more than one
         thread.
     -->
    <Match>
        <Class name="org.apache.catalina.core.StandardWrapper"/>
        <Method name="deallocate"/>
        <Bug pattern="NO_NOTIFY_NOT_NOTIFYALL"/>
    </Match>

    <!--
        A "." at the beginning of a package name is never legal and the
        code handles that case.
    -->
    <Match>
        <Class name="org.apache.tomcat.util.modeler.Registry"/>
        <Method name="findDescriptor"/>
        <Bug pattern="RV_CHECK_FOR_POSITIVE_INDEXOF"/>
    </Match>

    <!--
        These methods correspond to HttpServletResponse methods.
    -->
    <Match>
        <Class name="org.apache.catalina.connector.Response"/>
        <Or>
            <Method name="encodeRedirectURL"/>
            <Method name="encodeURL"/>
        </Or>
        <Bug pattern="NM_CONFUSING"/>
    </Match>

    <!--
        These private Comparator classes are never used with TreeSets
        or TreeMaps and so don't need to be Serializable.
    -->
    <Match>
        <Or>
            <Class name="org.apache.catalina.servlets.DefaultServlet$LastModifiedComparator"/>
            <Class name="org.apache.catalina.servlets.DefaultServlet$SizeComparator"/>
        </Or>
        <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE"/>
    </Match>
</FindBugsFilter>
