<?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"
          "https://checkstyle.org/dtds/configuration_1_3.dtd">

<!--
  Commons Numbers customization of default Checkstyle behavior:
  https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/sun_checks.xml
-->
<module name="Checker">
  <module name="SuppressionFilter">
    <!-- Default property set by maven-checkstyle-plugin -->
    <property name="file" value="${checkstyle.suppressions.file}"/>
    <property name="optional" value="false"/>
  </module>

  <property name="localeLanguage" value="en"/>

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

  <!-- Excludes all 'module-info.java' files -->
  <!-- See https://checkstyle.org/config_filefilters.html -->
  <module name="BeforeExecutionExclusionFileFilter">
    <property name="fileNamePattern" value="module\-info\.java$" />
  </module>

  <!-- Checks that a package-info.java file exists for each package. -->
  <!-- See http://checkstyle.sourceforge.net/config_javadoc.html#JavadocPackage -->
  <module name="JavadocPackage" />

  <!-- Checks whether files end with a new line. -->
  <!-- See http://checkstyle.sourceforge.net/config_misc.html#NewlineAtEndOfFile -->
  <module name="NewlineAtEndOfFile" />

  <!-- Checks that property files contain the same keys. -->
  <!-- See http://checkstyle.sourceforge.net/config_misc.html#Translation -->
  <module name="Translation" />

  <!-- Checks for Size Violations. -->
  <!-- See http://checkstyle.sourceforge.net/config_sizes.html -->
  <module name="FileLength" />
  <module name="LineLength">
    <property name="fileExtensions" value="java"/>
    <!-- Ignore lines that begin with " * ", such as within a Javadoc comment. -->
    <property name="ignorePattern" value="^ *\* *[^ ]"/>
    <property name="max" value="120"/>
  </module>

  <!-- Checks for whitespace -->
  <!-- See http://checkstyle.sourceforge.net/config_whitespace.html -->
  <module name="FileTabCharacter" />

  <!-- Miscellaneous other checks. -->
  <!-- See http://checkstyle.sourceforge.net/config_misc.html -->
  <module name="RegexpSingleline">
    <property name="format" value="\s+$" />
    <property name="minimum" value="0" />
    <property name="maximum" value="0" />
    <property name="message" value="Line has trailing spaces." />
  </module>

  <!-- Checks for Headers -->
  <!-- See http://checkstyle.sourceforge.net/config_header.html -->
  <module name="Header">
    <property name="headerFile" value="${checkstyle.header.file}"/>
    <property name="fileExtensions" value="java"/>
  </module>

  <module name="TreeWalker">

    <!-- Checks for Javadoc comments. -->
    <!-- See http://checkstyle.sourceforge.net/config_javadoc.html -->
    <module name="InvalidJavadocPosition"/>
    <module name="JavadocMethod" />
    <module name="JavadocType" />
    <module name="JavadocVariable" />
    <module name="JavadocStyle" />
    <!-- <module name="MissingJavadocType"/> -->

    <!-- Checks for Naming Conventions. -->
    <!-- See http://checkstyle.sourceforge.net/config_naming.html -->
    <module name="ConstantName" />
    <module name="LocalFinalVariableName" />
    <module name="LocalVariableName" />
    <module name="MemberName" />
    <module name="MethodName" />
    <module name="PackageName" />
    <module name="ParameterName" />
    <module name="StaticVariableName" />
    <module name="TypeName" />

    <!-- Checks for imports -->
    <!-- See http://checkstyle.sourceforge.net/config_import.html -->
    <module name="AvoidStarImport" />
    <module name="IllegalImport" /> <!-- defaults to sun.* packages -->
    <module name="RedundantImport" />
    <module name="UnusedImports">
      <property name="processJavadoc" value="false" />
    </module>

    <!-- Checks for Size Violations. -->
    <!-- See http://checkstyle.sourceforge.net/config_sizes.html -->
    <module name="MethodLength" />
    <!-- <module name="ParameterNumber" /> -->

    <!-- Checks for whitespace -->
    <!-- See http://checkstyle.sourceforge.net/config_whitespace.html -->
    <module name="EmptyForIteratorPad" />
    <module name="GenericWhitespace" />
    <!-- <module name="MethodParamPad" /> -->
    <!-- <module name="NoWhitespaceAfter" /> -->
    <!-- <module name="NoWhitespaceBefore" /> -->
    <!-- Operator must be at end of wrapped line -->
    <!-- <module name="OperatorWrap">
      <property name="option" value="eol"/>
    </module> -->
    <!-- <module name="ParenPad" /> -->
    <module name="TypecastParenPad" />
    <!--<module name="WhitespaceAfter">
      <property name="tokens" value="COMMA, SEMI, LITERAL_IF, LITERAL_ELSE, LITERAL_WHILE, LITERAL_DO, LITERAL_FOR, DO_WHILE"/>
    </module> -->
    <!--<module name="WhitespaceAround">
      <property name="allowEmptyConstructors" value="true"/>
      <property name="allowEmptyTypes" value="true"/>
    </module> -->

    <!-- Modifier Checks -->
    <!-- See http://checkstyle.sourceforge.net/config_modifiers.html -->
    <module name="ModifierOrder" />
    <module name="RedundantModifier" />

    <!-- Checks for blocks. You know, those {}'s -->
    <!-- See http://checkstyle.sourceforge.net/config_blocks.html -->
    <module name="AvoidNestedBlocks" />
    <module name="EmptyBlock" />
    <module name="LeftCurly" />
    <module name="NeedBraces" />
    <module name="RightCurly" />

    <!-- Checks for common coding problems -->
    <!-- See http://checkstyle.sourceforge.net/config_coding.html -->
    <module name="EmptyStatement" />
    <module name="EqualsHashCode" />
    <!-- Method parameters and local variables should not hide fields, except in constructors and setters -->
    <!-- 
    <module name="HiddenField">
        <property name="ignoreConstructorParameter" value="true" />
        <property name="ignoreSetter" value="true" />
    </module>
     -->
    <!-- Disallow unnecessary instantiation of Boolean, String -->
    <module name="IllegalInstantiation">
      <property name="classes" value="java.lang.Boolean, java.lang.String"/>
    </module>
    <!-- Allowed for algorithm implementations. -->
    <!-- <module name="InnerAssignment" /> -->
    <!-- <module name="MagicNumber" /> -->
    <module name="MissingSwitchDefault" />
    <module name="MultipleVariableDeclarations" />
    <module name="SimplifyBooleanExpression" />
    <module name="SimplifyBooleanReturn" />

    <!-- Checks for class design -->
    <!-- See http://checkstyle.sourceforge.net/config_design.html -->
    <module name="DesignForExtension" />
    <module name="FinalClass" />
    <module name="HideUtilityClassConstructor" />
    <module name="InterfaceIsType" />
    <!-- No public fields -->
    <module name="VisibilityModifier">
       <property name="protectedAllowed" value="true"/>
    </module>

    <!-- Miscellaneous other checks. -->
    <!-- See http://checkstyle.sourceforge.net/config_misc.html -->
    <!-- <module name="ArrayTypeStyle" /> -->
    <!-- <module name="FinalParameters" />  -->
    <module name="TodoComment">
      <property name="severity" value="warning"/>
    </module>
    <module name="UpperEll" />

    <!-- Addition to Checkstyle sun_checks.xml  -->

    <!-- Indentation of 4 spaces. -->
    <!-- This has many errors
    <module name="Indentation">
      // Indentation style recommended by Oracle
      <property name="caseIndent" value="0"/>
    </module>
    -->

    <!-- Switch statements should have independent cases -->
    <module name="FallThrough" />

    <!-- Constant names should obey the traditional all uppercase naming convention -->
    <module name="ConstantName" />

    <!-- No System.out.println() statements -->
    <module name="Regexp">
      <!-- no sysouts -->
      <property name="format" value="System\.(out|err)\."/>
      <property name="illegalPattern" value="true"/>
    </module>

    <!-- Authors should be in pom.xml file -->
    <module name="Regexp">
      <property name="format" value="@author"/>
      <property name="illegalPattern" value="true"/>
      <property name="message" value="Developers names should be in pom file"/>
    </module>

    <!-- Use a consistent way to put declarations -->
    <module name="DeclarationOrder" />

    <!-- Don't add up parentheses when they are not required -->
    <module name="UnnecessaryParentheses" />

    <!--  Don't use too widespread catch (Exception, Throwable, RuntimeException)  -->
    <module name="IllegalCatch" />

    <!-- Don't use = or != for string comparisons -->
    <module name="StringLiteralEquality" />

    <!-- String literals more than one character long should not be repeated several times -->
    <!-- the "unchecked" string is also accepted to allow @SuppressWarnings("unchecked") -->
    <module name="MultipleStringLiterals" >
      <property name="ignoreStringsRegexp" value='^(("")|(".")|("unchecked"))$'/>
    </module>

    <!-- Check if @Override tags are present  -->
    <module name="MissingOverride" />

    <!-- Setup special comments to suppress specific checks from source files -->
    <module name="SuppressionCommentFilter">
      <property name="offCommentFormat" value="CHECKSTYLE\: stop ([\w\|]+)"/>
      <property name="onCommentFormat"  value="CHECKSTYLE\: resume ([\w\|]+)"/>
      <property name="checkFormat"      value="$1"/>
    </module>
    <module name="SuppressionCommentFilter">
      <property name="offCommentFormat" value="CHECKSTYLE\: stop all"/>
      <property name="onCommentFormat"  value="CHECKSTYLE\: resume all"/>
    </module>
  </module>

</module>
