<?xml version="1.0"?>

<!DOCTYPE suppressions PUBLIC
    "-//Checkstyle//DTD SuppressionFilter Configuration 1.0//EN"
    "https://checkstyle.org/dtds/suppressions_1_0.dtd">

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

<!-- Exceptions for Checkstyle -->

<suppressions>
    <!-- Disable some checks in tests -->
    <suppress checks="JavadocPackage" files="src[/\\]test[/\\]java[/\\]" />
    <suppress checks="JavadocMethod" files="src[/\\]test[/\\]java[/\\]" />
    <suppress checks="JavadocVariable" files="src[/\\]test[/\\]java[/\\]" />
    <suppress checks="MissingJavadocMethod" files="src[/\\]test[/\\]java[/\\]" />
    
    <!-- Disable the warnings for the generated classes -->
    <suppress checks=".*" files="ParseException.java"/>
    <suppress checks=".*" files="PropertyListParser.java"/>
    <suppress checks=".*" files="PropertyListParserConstants.java"/>
    <suppress checks=".*" files="PropertyListParserTokenManager.java"/>
    <suppress checks=".*" files="SimpleCharStream.java"/>
    <suppress checks=".*" files="Token.java"/>
    <suppress checks=".*" files="TokenMgrError.java"/>
    
    <suppress checks="LineLength" files=".*\.properties"/>

    <!-- Can't make class final without breaking binary compatibility. -->
    <suppress checks="FinalClass" files="URIUtils.java"/>
    <suppress checks="FinalClass" files="ZipFileSystemConfigBuilder.java"/>
    
    <!-- Can't change method name without breaking binary compatibility. -->
    <suppress checks="MethodName" files="DefaultFileSystemManager.java" lines="185"/>
    
    <!-- Use of literals here is reasonable. -->
    <suppress checks="MagicNumber" files="URIUtils.java" lines="143, 152, 162"/>
    <suppress checks="MagicNumber" files="RamFileRandomAccessContent.java"/>
    <suppress checks="MagicNumber" files="FtpCheck.java" lines="48, 28"/>
    <suppress checks="MagicNumber" files="SftpCheck.java" lines="42, 28"/>
    
    <!-- FileSystemOptions is a subclass of Object and uses the copy constructor pattern. -->
    <suppress checks="SuperClone" files="FileSystemOptions.java"/>
</suppressions>
