<?xml version="1.0"?>

<!--
   Copyright 2003-2004 The Apache Software Foundation

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

<!-- commons math customization of default Checkstyle behavior -->
<module name="Checker">
  <property name="localeLanguage" value="en"/>

  <module name="TreeWalker">
   
    <!-- Verify that EVERY source file has the appropriate license -->
    <module name="Header">
      <property name="headerFile" value="license-header.txt"/>
      <property name="ignoreLines" value="2"/>
    </module>

    <!-- Operator must be at end of wrapped line -->
    <module name="OperatorWrap">
      <property name="option" value="eol"/>
    </module>
    
    <!-- Interfaces must be types (not just constants) -->
    <module name="InterfaceIsType"/>

    <!-- Must have class / interface header comments including scm version -->
	<module name="JavadocType">
  	  <property name="versionFormat" value="\$Revision.*\$ \$Date.*\$"/>
	</module>
		
     <!-- Require method javadocs, allow undeclared RTE -->
	<module name="JavadocMethod">
	  <property name="allowUndeclaredRTE" value="true"/>
	</module>
		
    <!-- Require field javadoc -->
	<module name="JavadocVariable"/>
		
    <!-- No tabs allowed! -->
	<module name="TabCharacter"/>
	
	<!-- No public fields -->
	<module name="VisibilityModifier">
       <property name="protectedAllowed" value="true"/>
    </module>
	
	<!-- Require hash code override when equals is -->
	<module name="EqualsHashCode"/>
	
	<!-- Disallow unecessary instantiantion of Boolean, String -->
	<module name="IllegalInstantiation">
      <property name="classes" value="java.lang.Boolean, java.lang.String"/>
    </module>
  </module>
  
  <!-- Require package javadoc -->
  <module name="PackageHtml"/>
</module>

