<?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
    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">

  <!-- TODO Can any of these be done without breaking binary compatibility? -->
  <Match>
    <Class name="~.*" />
    <Or>
      <Bug pattern="EI_EXPOSE_REP" />
      <Bug pattern="EI_EXPOSE_REP2" />
      <Bug pattern="MS_EXPOSE_REP" />
    </Or>
  </Match>

  <!-- https://github.com/spotbugs/spotbugs/issues/2710 -->
  <Match>
    <Class name="~.*" />
    <Bug pattern="CT_CONSTRUCTOR_THROW" />
  </Match>

  <!--  See discussion on https://issues.apache.org/jira/browse/IO-216 -->
  <Match>
    <Class name="org.apache.commons.io.output.LockableFileWriter" />
    <Method name="close" params="" returns="void" />
    <Bug pattern="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE" />
  </Match>

  <!-- The constructors intentionally do not copy the input byte array -->
  <Match>
    <Class name="org.apache.commons.io.input.UnsynchronizedByteArrayInputStream" />
    <Method name="&lt;init&gt;" />
    <Bug pattern="EI_EXPOSE_REP2" />
  </Match>

  <!-- The encoding is irrelevant as output is binned -->
  <Match>
    <Class name="org.apache.commons.io.output.NullPrintStream" />
    <Bug pattern="DM_DEFAULT_ENCODING" />
  </Match>

  <!-- Deprecated -->
  <Match>
    <Class name="org.apache.commons.io.file.PathUtils" />
    <Field name="NOFOLLOW_LINK_OPTION_ARRAY" />
    <Bug pattern="MS_PKGPROTECT" />
  </Match>

  <!-- Deprecated -->
  <Match>
    <Class name="org.apache.commons.io.monitor.FileAlterationObserver" />
    <Field name="fileFilter" />
    <Bug pattern="SE_TRANSIENT_FIELD_NOT_RESTORED" />
  </Match>

  <!-- Deprecated -->
  <Match>
    <Class name="org.apache.commons.io.monitor.FileAlterationObserver" />
    <Field name="listeners" />
    <Bug pattern="SE_TRANSIENT_FIELD_NOT_RESTORED" />
  </Match>

  <!-- This class only throws unchecked exceptions. -->
  <Match>
    <Class name="org.apache.commons.io.function.UncheckedIOIterator" />
    <Method name="next" />
    <Bug pattern="IT_NO_SUCH_ELEMENT" />
  </Match>

</FindBugsFilter>
