<?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.
  $Id$
-->

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