<?xml version="1.0"?>

<!--
  ~ Copyright (c) 2008-2014 MongoDB, Inc.
  ~
  ~ Licensed 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.
  -->

<!DOCTYPE suppressions PUBLIC
        "-//Puppy Crawl//DTD Suppressions 1.1//EN"
        "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">

<suppressions>
    <suppress checks="MethodLength" files="QuickTour"/>
    <suppress checks="Regexp" files="QuickTour"/>

    <suppress checks="MethodLength" files="PojoRoundTripTest"/>

    <suppress checks="JavadocPackage" files="com[\\/]mongodb[\\/][^\\/]*\.java"/>
    <suppress checks="JavadocPackage" files="com[\\/]mongodb[\\/]client[\\/][^\\/]*\.java"/>
    <suppress checks="JavadocPackage" files="com[\\/]mongodb[\\/]client[\\/]model[\\/][^\\/]*\.java"/>
    <suppress checks="JavadocPackage" files="org[\\/]bson[\\/][^\\/]*\.java"/>
    <suppress checks="JavadocPackage" files="org[\\/]bson[\\/]io[\\/][^\\/]*\.java"/>
    <suppress checks="JavadocPackage" files="org[\\/]bson[\\/]types[\\/][^\\/]*\.java"/>

    <suppress checks="Javadoc*" files="com[\\/]mongodb[\\/]internal[\\/]"/>
    <suppress checks="Javadoc*" files="org[\\/]bson[\\/]internal[\\/]"/>

    <!--Do not check primer classes -->
    <suppress checks="Javadoc*" files=".*primer.*"/>
    <suppress checks="Regexp" files=".*primer.*"/>
    <suppress checks="AvoidStarImportCheck" files=".*primer.*"/>
    <suppress checks="VisibilityModifierCheck" files=".*primer.*"/>

    <!--Do not check documentation tests classes -->
    <suppress checks="Javadoc*" files=".*documentation.*"/>
    <suppress checks="Regexp" files=".*documentation.*"/>

    <!--Do not check test classes -->
    <suppress checks="Javadoc*" files=".*test.*"/>

    <!--Do not check The GridFSTour -->
    <suppress checks="Regexp" files="GridFSTour"/>
    <suppress checks="MethodLength" files="GridFSTour"/>

    <!--DBCollection is insanely long, and we should not compromise every class length for this one-->
    <suppress checks="FileLength" files="DBCollection"/>

    <suppress checks="ParameterNumber" files="Connection"/>
    <suppress checks="ParameterNumber" files="DefaultServer"/>
    <suppress checks="ParameterNumber" files="DefaultClusterFactory"/>
    <suppress checks="ParameterNumber" files="DefaultClusterableServerFactory"/>

    <!--Legacy code that has not yet been cleaned-->
    <suppress checks="FinalClass" files="AggregationOptions"/>

    <suppress checks="MemberName" files="BasicDBList"/>
    <suppress checks="MemberName" files="BasicDBObjectBuilder"/>
    <suppress checks="MemberName" files="Bytes"/>
    <suppress checks="MemberName" files="ClassMapBasedObjectSerializer"/>
    <suppress checks="MemberName" files="DBAddress"/>
    <suppress checks="MemberName" files="JSON"/>
    <suppress checks="MemberName" files="QueryBuilder"/>

    <suppress checks="ConstantName" files="BSON"/>
    <suppress checks="ConstantName" files="ClassAncestry"/>
    <suppress checks="ConstantName" files="JSONCallback"/>
    <suppress checks="ConstantName" files="Mongo"/>
    <suppress checks="ConstantName" files="ReflectionDBObject"/>
    <suppress checks="ConstantName" files="Decimal128"/>  <!-- For NaN -->

    <suppress checks="JavadocMethod" files="BasicDBObject"/>

    <suppress checks="MethodName" files="BasicBSONCallback"/>
    <suppress checks="MethodName" files="BasicBSONEncoder"/>
    <suppress checks="MethodName" files="BasicBSONList"/>
    <suppress checks="MethodName" files="BasicDBObjectBuilder"/>
    <suppress checks="MethodName" files="DBAddress"/>
    <suppress checks="MethodName" files="GridFSInputFile"/>
    <suppress checks="MethodName" files="ReflectionDBObject"/>

    <suppress checks="VisibilityModifier" files="Bytes"/>
    <suppress checks="VisibilityModifier" files="GridFSFile"/>
    <suppress checks="VisibilityModifier" files="JSON"/>
    <suppress checks="VisibilityModifier" files="MongoOptions"/>

    <suppress checks="InnerAssignment" files="DBCursor"/>
    <suppress checks="InnerAssignment" files="JSON"/>

    <suppress checks="FinalClass" files="DBCursor"/>
    <suppress checks="FinalClass" files="MongoClientOptions"/>
    <suppress checks="FinalClass" files="QueryOperators"/>
    <suppress checks="FinalClass" files="JSONSerializers"/>

    <suppress checks="HideUtilityClassConstructor" files="BSON"/>
    <suppress checks="HideUtilityClassConstructor" files="Bits"/>
    <suppress checks="HideUtilityClassConstructor" files="ClassAncestry"/>
    <suppress checks="HideUtilityClassConstructor" files="CLI"/>
    <suppress checks="HideUtilityClassConstructor" files="JSON"/>
    <suppress checks="HideUtilityClassConstructor" files="QuickTour"/>
    <suppress checks="HideUtilityClassConstructor" files="Util"/>

    <suppress checks="ParameterNumber" files="BulkWriteBatch"/>

    <!-- Alternative copyrights -->
    <suppress checks="RegexpSingleline" files="Immutable"/>
    <suppress checks="RegexpSingleline" files="NotThreadSafe"/>
    <suppress checks="RegexpSingleline" files="ThreadSafe"/>

    <!-- Pojo test entities -->
    <suppress checks="ConstantName" files=".*org[\\/]bson[\\/]codecs[\\/]pojo[\\/]entities[\\/].*"/>
    <suppress checks="VisibilityModifier" files=".*org[\\/]bson[\\/]codecs[\\/]pojo[\\/]entities[\\/].*"/>
    <suppress checks="ParameterNumber" files=".*org[\\/]bson[\\/]codecs[\\/]pojo[\\/]entities[\\/].*"/>

    <!-- Pojo test bench -->
    <suppress checks="MemberName" files=".*org[\\/]bson[\\/]codecs[\\/]pojo[\\/]bench[\\/].*"/>
    <suppress checks="MethodName" files=".*org[\\/]bson[\\/]codecs[\\/]pojo[\\/]bench[\\/].*"/>
    <suppress checks="ParameterName" files=".*org[\\/]bson[\\/]codecs[\\/]pojo[\\/]bench[\\/].*"/>
    <suppress checks="Regexp" files=".*org[\\/]bson[\\/]codecs[\\/]pojo[\\/]bench[\\/].*"/>

</suppressions>
