<?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.
-->

<!--
  This file contains some false positive bugs detected by findbugs. Their
  false positive nature has been analyzed individually and they have been
  put here to instruct findbugs it must ignore them.
-->
<FindBugsFilter
    xmlns="https://github.com/spotbugs/filter/3.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="https://github.com/spotbugs/filter/3.0.0 https://raw.githubusercontent.com/spotbugs/spotbugs/3.1.0/spotbugs/etc/findbugsfilter.xsd">

  <!-- Reason: Testing shows that new Integer(...) etc is quicker than Integer.valueOf -->
  <Match>
    <Bug pattern="DM_NUMBER_CTOR" />
  </Match>
  <Match>
    <Class name="org.apache.commons.ognl.OgnlParser" />
    <Bug pattern="NM_METHOD_NAMING_CONVENTION" />
  </Match>
  <Match>
    <Class name="org.apache.commons.ognl.OgnlParserTokenManager" />
    <Bug pattern="NM_METHOD_NAMING_CONVENTION" />
  </Match>

</FindBugsFilter>
