<?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>

  <!-- Checks for Size Violations. -->
  <!-- See http://checkstyle.sf.net/config_sizes.html -->
  <module name="LineLength">
    <property name="max" value="120" />
  </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" />
    </module>
    <module name="MissingJavadocMethod"/>
    
    <!-- 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="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>
