<?xml version="1.0"?>

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

<!DOCTYPE module PUBLIC
    "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
    "http://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
    <property name="charset" value="UTF-8"/>

    <property name="fileExtensions" value="java, properties, xml"/>

    <!-- Whitespaces Checks. See: http://checkstyle.sourceforge.net/config_whitespace.html -->
    <module name="FileTabCharacter">
        <property name="eachLine" value="true"/>
    </module>

    <!-- SuppressWarning Filter. https://checkstyle.sourceforge.io/config_filters.html#SuppressWarningsFilter -->
    <module name="SuppressWarningsFilter" />

    <module name="TreeWalker">
        <!-- Handler for SuppressWarning Filter. https://checkstyle.sourceforge.io/config_filters.html#SuppressWarningsFilter -->
        <module name="SuppressWarningsHolder" />

        <!-- Coding Checks. See: https://checkstyle.sourceforge.io/config_coding.html -->
        <module name="SimplifyBooleanExpression"/>

        <!-- Import Checks. See: http://checkstyle.sourceforge.net/config_imports.html -->
        <module name="UnusedImports"/>

        <!-- Whitespaces: See: https://checkstyle.sourceforge.io/config_whitespace.html -->
        <module name="WhitespaceAround">
            <property name="allowEmptyConstructors" value="true"/>
            <property name="allowEmptyMethods" value="true"/>
            <property name="allowEmptyTypes" value="true"/>
            <property name="allowEmptyLoops" value="true"/>
            <property name="allowEmptyLambdas" value="true"/>
            <property name="allowEmptyCatches" value="true"/>
        </module>

        <!--Modifiers Checks. See: http://checkstyle.sourceforge.net/config_modifier.html-->
        <module name="ModifierOrder"/>

        <!--Annotation checks. See: http://checkstyle.sourceforge.net/config_annotation.html-->
        <module name="MissingOverride"/>

        <!-- Empty line checks. See: http://checkstyle.sourceforge.net/config_whitespace.html#EmptyLineSeparator -->
        <module name="EmptyLineSeparator">
            <!-- PACKAGE_DEF excluded according to Ignite code style. -->
            <property name="tokens" value="IMPORT, STATIC_IMPORT, CLASS_DEF, INTERFACE_DEF, ENUM_DEF, STATIC_INIT,
                INSTANCE_INIT, METHOD_DEF, CTOR_DEF, VARIABLE_DEF" />

            <property name="allowMultipleEmptyLines" value="false" />
            <property name="allowMultipleEmptyLinesInsideClassMembers" value="false" />
        </module>

        <!-- @Override annotations on the same line with a method declaration check. -->
        <!--module name="org.apache.ignite.tools.checkstyle.OverrideAnnotationOnTheSameLineCheck"/-->

        <!--
            Checks the padding between the identifier of a method definition, constructor definition, method call, or
            constructor invocation; and the left parenthesis of the parameter list.
            See: https://checkstyle.sourceforge.io/config_whitespace.html#MethodParamPad
        -->
        <module name="MethodParamPad"/>

        <!--
            Checks that there is no whitespace after a token.
            See: https://checkstyle.sourceforge.io/config_whitespace.html#NoWhitespaceAfter
        -->
        <module name="NoWhitespaceAfter">
            <property name="tokens" value="AT, INC, DEC, UNARY_MINUS, UNARY_PLUS, BNOT, LNOT, DOT, ARRAY_DECLARATOR,
                INDEX_OP, METHOD_REF"/>
        </module>

        <!--
            Checks that there is no whitespace before a token.
            See: https://checkstyle.sourceforge.io/config_whitespace.html#NoWhitespaceBefore
        -->
        <module name="NoWhitespaceBefore">
            <property name="tokens" value="COMMA, SEMI, POST_INC, POST_DEC, ELLIPSIS, METHOD_REF, GENERIC_END"/>
        </module>

        <module name="NoWhitespaceBefore">
            <property name="allowLineBreaks" value="true"/>
            <property name="tokens" value="DOT"/>
        </module>

        <!--
            Checks that the whitespace around the Generic tokens are correct.
            See: https://checkstyle.sourceforge.io/config_whitespace.html#GenericWhitespace
        -->
        <module name="GenericWhitespace"/>

        <!--
            Checks that non-whitespace characters are separated by no more than one whitespace.
            See: https://checkstyle.sourceforge.io/config_whitespace.html#SingleSpaceSeparator
        -->
        <module name="SingleSpaceSeparator"/>
    </module>
</module>
