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

<!-- Commons Net customization of default Checkstyle behavior -->
<module name="Checker">

  <property name="localeLanguage" value="en"/>
  <module name="JavadocPackage">
    <!-- setting allowLegacy means it will check for package.html instead of just package-info.java -->
    <property name="allowLegacy" value="true"/>
  </module>

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

  <!-- Checks for white space at the end of the line -->
  <!-- See http://checkstyle.sourceforge.net/config_regexp.html -->
  <module name="RegexpSingleline">
    <property name="format" value="\s+$" />
    <property name="message" value="Line has trailing spaces." />
    <property name="fileExtensions" value="java" />
  </module>

  <!-- @author tags are deprecated -->
  <module name="RegexpSingleline">
    <property name="format" value="^\s+\*\s+@author\s" />
    <property name="message" value="Deprecated @author tag" />
    <property name="fileExtensions" value="java" />
  </module>

  <module name="LineLength">
    <property name="max" value="132"/>
  </module>

  <module name="TreeWalker">
    <module name="AvoidStarImport">
      <property name="excludes" value="org.junit.Assert"/>
    </module>
    <module name="RedundantImport"/>
    <module name="UnusedImports"/>
    <module name="NeedBraces"/>

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

    <!--module name="RedundantModifier"/-->

    <!-- Checks for blocks. You know, those {}'s         -->
    <!-- See http://checkstyle.sf.net/config_blocks.html -->
    <!--module name="AvoidNestedBlocks"/-->
    <module name="EmptyBlock">
      <property name="option" value="text"/>
    </module>
    <module name="EmptyCatchBlock"></module>

    <module name="JavadocMethod">
      <property name="scope" value="public"/>
      <property name="allowMissingParamTags" value="true"/>
    </module>

    <module name="SuppressionCommentFilter"/>

    <!--
        Allow comment to suppress checkstyle for a single line
        e.g. // CHECKSTYLE IGNORE MagicNumber
     -->
    <module name="SuppressWithNearbyCommentFilter">
      <property name="commentFormat" value="CHECKSTYLE IGNORE (\w+)"/>
      <property name="checkFormat" value="$1"/>
    </module>

  </module>

  <module name="SuppressionFilter">
    <!-- config_loc is used by Eclipse plugin -->
    <property name="file" value="${config_loc}/checkstyle-suppressions.xml"/>
  </module>

</module>


