<?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
    "-//Puppy Crawl//DTD Check Configuration 1.1//EN"
    "http://www.puppycrawl.com/dtds/configuration_1_1.dtd">


<!--
  
  These checks still need to be Voted on for Validator, but
  at least serve to cut down on some of the noise. 


  A Checkstyle configuration that checks against the recommendations
  in Joshua Bloch, Effective Java (highliy recommended read!)

  This file does NOT duplicate the checks for whitespace settings,
  placement of curly braces, etc.  Only the rules that are explicitly
  mentioned in the book are enforced.

  Currently the amount of rules that can be automatically checked by
  Checkstyle is not very large, but adding more checks of this quality
  is a high priority goal for the development team.

-->

<module name="Checker">

   <module name="TreeWalker">

    <!-- Item 4 - Avoid creating duplicate objects -->
    <module name="IllegalInstantiation">
      <property name="classes" value="java.lang.Boolean, java.lang.String"/>
    </module>

    <!-- Item 8 - Always override hashCode when you override equals -->
    <module name="EqualsHashCode"/>

    <!-- Item 12 - Make all fields private -->
    <!--
    <module name="VisibilityModifier"/>
    -->

    <!-- Item 15 - Design and document for inheritance or else prohibit it -->
    <!-- the module actually implements a very strict rule, it would be
         interesting to know whether Joshua meant what checkstyle implements.
         We feel this implementation is well suited as a warning,
         i.e. if you get error messages from this check you should be
         able to name a good reason to implement your code the way you do it,
         especially if you are designing a library and not an application. -->
    <!--
    <module name="DesignForExtension">
      <property name="severity" value="warning"/>
    </module>
    -->

    <!-- Item 17 - Use interfaces only to define types -->
    <module name="InterfaceIsType"/>

    <!-- Item 25 - Design method signatures carefully -->
    <!-- Avoid long parameter lists -->
    <module name="ParameterNumber">
      <property name="max" value="4"/>
    </module>

    <!-- Item 26 - Use overloading judiciously -->
    <!-- rfe #659735 -->

    <!-- Item 27 - Return zero-length array, not nulls -->
    <!-- no rfe yet -->

    <!-- Item 28 - Write doc comments for all exposed API elements -->
    <module name="JavadocType">
      <property name="scope" value="protected"/>
    </module>
    <module name="JavadocMethod"> <!-- also covers Item 44 -->
      <property name="scope" value="protected"/>
      <property name="allowUndeclaredRTE" value="true"/>
    </module>
    <module name="JavadocVariable">
      <property name="scope" value="protected"/>
    </module>

    <!-- Item 29 - Minimize the scope of local variables -->
    <!-- no rfe yet -->


    <!-- Item 38 - Adhere to generally accepted naming conventions -->
    <module name="PackageName">
      <!-- no uppercase letters, between 2 and 10 characters -->
      <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]{1,9})*$"/>
    </module>
    <module name="TypeName"/>
    <module name="ConstantName"/>
    <module name="LocalFinalVariableName"/>
    <module name="LocalVariableName"/>
    <module name="MemberName"/>
    <module name="MethodName"/>
    <module name="ParameterName"/>
    <module name="StaticVariableName"/>

    <!-- Item 47 - Don't ignore exceptions -->
    <module name="EmptyBlock">
      <property name="tokens" value="LITERAL_CATCH"/>
      <!-- require a comment, change to stmt to require a statement -->
      <property name="option" value="text"/>
    </module>

    <!-- Item 50 - Never invoke wait outside a loop -->
    <!-- rfe #712798 -->

    <!-- Item 57 - Provide a readResolve method when necessary -->
    <!-- no rfe yet -->

    <module name="MagicNumber"/>

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

  <!-- enforce package documentation -->
  <module name="JavadocPackage">
    <!-- setting allowLegacy means it will check for package.html instead of just package-info.java -->
    <property name="allowLegacy" value="true"/>
  </module>
  
  <!-- Item 6 - Avoid finalizers -->
  <!-- this will not find violations that contain linebreaks -->
  <module name="RegexpSingleline">
    <property name="format" value="((public)|(protected))\s+void\s+finalize\(\s*\)"/>
     <property name="message" value="Avoid finalizers."/>
  </module>
    
  <!-- don't allow tabs -->
  <module name="FileTabCharacter">
    <property name="fileExtensions" value="java,xml"/>
  </module>

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

  
</module>
