<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
    "-//Puppy Crawl//DTD Check Configuration 1.1//EN"
    "http://www.puppycrawl.com/dtds/configuration_1_1.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.
-->

<!-- Checkstyle configuration that checks the commons-configuration coding conventions -->

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

  <!-- Checks that a package.html file exists for each package. -->
  <!-- See http://checkstyle.sourceforge.net/config_javadoc.html -->
  <module name="JavadocPackage">
    <property name="allowLegacy" value="true" />
  </module>

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

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

  <!-- Checks for Tab characters -->
  <!-- See http://checkstyle.sourceforge.net/config_whitespace.html#FileTabCharacter -->
  <module name="FileTabCharacter">
    <property name="fileExtensions" value="java" />
  </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" />
    <property name="severity" value="warning" />
  </module>

  <!-- Don't use SVN $Date$ variable - it's localized and causes source archives to differ from the SVN tag -->
  <module name="RegexpSingleline">
    <property name="format" value="\$Date.+\$" />
    <property name="message" value="Don't use SVN $Date$ variable" />
    <property name="fileExtensions" value="java" />
    <property name="severity" value="warning" />
  </module>

  <!-- Exceptions -->
  <!--<module name="SuppressionFilter">
    <property name="file" value="conf/checkstyle-suppressions.xml"/>
    </module> -->

  <module name="TreeWalker">

    <!-- Checks for Javadoc comments. -->
    <!-- See http://checkstyle.sf.net/config_javadoc.html -->
    <module name="JavadocMethod">
      <property name="scope" value="public" />
      <property name="allowUndeclaredRTE" value="true" />
      <property name="allowMissingJavadoc" value="true" />
    </module>
    <!-- http://checkstyle.sourceforge.net/config_javadoc.html#JavadocType -->
    <module name="JavadocType">
      <!-- It is unfortunate to have to do this but checkstyle doesn't allow custom tags -->
      <property name="allowUnknownTags" value="true" />
    </module>
    <module name="JavadocVariable">
      <property name="scope" value="protected" />
    </module>
    <module name="JavadocStyle">
      <property name="scope" value="public" />
    </module>

    <!-- Checks for Naming Conventions. -->
    <!-- See http://checkstyle.sf.net/config_naming.html -->
    <module name="ConstantName">
      <property name="format" value="^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$|^capabilities$|^log$" />
    </module>
    <module name="LocalFinalVariableName" />
    <module name="LocalVariableName" />
    <module name="MemberName" />
    <module name="MethodName" />
    <module name="PackageName" />
    <module name="ParameterName" />
    <module name="StaticVariableName" />
    <module name="TypeName" />

    <!-- Following interprets the header file as regular expressions. -->
    <!-- <module name="RegexpHeader"/> -->

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

    <!-- Checks for Size Violations. -->
    <!-- See http://checkstyle.sf.net/config_sizes.html -->
    <!--<module name="FileLength"/> -->
    <module name="LineLength">
      <property name="max" value="120" />
    </module>
    <module name="MethodLength" />
    <module name="ParameterNumber">
      <property name="max" value="10" />
    </module>

    <!-- Checks for whitespace -->
    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
    <module name="EmptyForIteratorPad" />
    <module name="NoWhitespaceAfter" />
    <module name="NoWhitespaceBefore" />
    <module name="OperatorWrap">
      <property name="tokens" value="ASSIGN" />
      <property name="option" value="eol" />
    </module>
    <module name="ParenPad" />
    <module name="WhitespaceAfter" />
    <module name="WhitespaceAround" />
    <module name="GenericWhitespace" />

    <!-- 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" />
    <!-- Require empty catch blocks to have at least a comment -->
    <module name="EmptyBlock">
      <property name="option" value="text" />
      <property name="tokens" value="LITERAL_CATCH" />
    </module>
    <module name="LeftCurly">
      <property name="option" value="eol" />
    </module>
    <module name="NeedBraces" />
    <module name="RightCurly">
      <property name="option" value="same" />
    </module>

    <!-- Checks for common coding problems -->
    <!-- See http://checkstyle.sf.net/config_coding.html -->
    <module name="CovariantEquals" />
    <module name="EqualsHashCode" />
    <module name="IllegalInstantiation" />
    <!-- <module name="InnerAssignment"/> -->
    <module name="MagicNumber">
      <property name="ignoreNumbers" value="-1,0,1,2,3" />
    </module>
    <module name="SimplifyBooleanExpression" />
    <module name="SimplifyBooleanReturn" />
    <module name="StringLiteralEquality" />
    <module name="SuperClone" />
    <module name="SuperFinalize" />
    <module name="DeclarationOrder" />
    <!-- <module name="ExplicitInitialization"/> -->
    <module name="DefaultComesLast" />
    <module name="FallThrough" />
    <module name="MultipleVariableDeclarations" />
    <!-- <module name="UnnecessaryParentheses"/> -->

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

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

  </module>

</module>
