<?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 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="142, 151, 161"/>
    <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>
