<?xml version="1.0" encoding="iso-8859-1"?>
<!--
   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: The reliance on default encoding is only in debug code. -->
  <Match>
    <Class name="org.apache.commons.configuration2.CombinedConfiguration" />
    <Method name="constructCombinedNode" />
    <Bug pattern="DM_DEFAULT_ENCODING" />
  </Match>
  <Match>
    <Class name="org.apache.commons.configuration2.ConfigurationUtils" />
    <Method name="dump" />
    <Bug pattern="DM_DEFAULT_ENCODING" />
  </Match>

  <!-- Reason: An encoding can be explicitly provided. If this is not done,
       the default encoding is used. This is stated in the documentation.
  -->
  <Match>
    <Class name="org.apache.commons.configuration2.io.FileHandler" />
    <Or>
      <Method name="loadFromTransformedStream" />
      <Method name="saveToStream" />
    </Or>
    <Bug pattern="DM_DEFAULT_ENCODING" />
  </Match>

  <!-- Reason: This warning is caused by the protected initResultInstance()
       method which is not synchronized. The documentation states that this
       method accesses internal state and must only be called in a synchronized
       block.
  -->
  <Match>
    <Class name="org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder" />
    <Field name="autoSaveListener" />
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>
  <Match>
    <Class name="org.apache.commons.configuration2.builder.combined.ReloadingCombinedConfigurationBuilder" />
    <Field name="reloadingController" />
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>
  <Match>
    <Class name="org.apache.commons.configuration2.builder.combined.CombinedConfigurationBuilder" />
    <Field name="sourceData" />
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>

  <!-- Reason: All these classes are generated by JavaCC.
  -->
  <Match>
    <Or>
      <Class name="org.apache.commons.configuration2.plist.ParseException" />
      <Class name="org.apache.commons.configuration2.plist.PropertyListParser" />
      <Class name="org.apache.commons.configuration2.plist.PropertyListParserConstants" />
      <Class name="org.apache.commons.configuration2.plist.PropertyListParserTokenManager" />
      <Class name="org.apache.commons.configuration2.plist.SimpleCharStream" />
      <Class name="org.apache.commons.configuration2.plist.TokenMgrError" />
    </Or>
  </Match>

  <!-- Reason: These classes are used only temporarily while executing XPATH
       queries on configuration nodes. They are not intended to be serialized.
  -->
  <Match>
    <Class name="org.apache.commons.configuration2.tree.xpath.ConfigurationNodePointer" />
    <Field name="handler" />
    <Bug pattern="SE_BAD_FIELD" />
  </Match>
  <Match>
    <Class name="org.apache.commons.configuration2.tree.xpath.ConfigurationAttributePointer" />
    <Field name="attributeResult" />
    <Bug pattern="SE_BAD_FIELD" />
  </Match>
  
  <!-- Reason: TODO, perhaps? -->
  <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>  
</FindBugsFilter>
