<?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>
  <!-- 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>
</FindBugsFilter>
