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

<!-- commons functor customization of default Checkstyle behavior, copied from Lang -->
<module name="Checker">
  <property name="localeLanguage" value="en"/>
  <module name="PackageHtml"/>
  <module name="TreeWalker">
    <module name="TabCharacter"/>
    <module name="AvoidStarImport"/>
    <module name="RedundantImport"/>
    <module name="UnusedImports"/>
    <module name="NeedBraces"/>
    <module name="RedundantThrows">
      <property name="allowUnchecked" value="true"/>
    </module>
    <module name="LineLength">
      <property name="max" value="120"/>
    </module>
    <module name="JavadocMethod">
      <property name="allowUndeclaredRTE" value="true"/>
    </module>

    <!-- Checks for whitespace                               -->
    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
    <module name="EmptyForIteratorPad"/>
    <module name="NoWhitespaceAfter">
      <!-- not ARRAY_INIT -->
      <property name="tokens" value="BNOT,DEC,DOT,INC,LNOT,UNARY_MINUS,UNARY_PLUS" />
    </module>

    <module name="NoWhitespaceBefore"/>
    <module name="OperatorWrap"/>
    <module name="TabCharacter"/>
    <module name="WhitespaceAfter"/>
    <module name="WhitespaceAround"/>

    <module name="GenericIllegalRegexp">
      <property name="format" value="\s+$"/>
      <property name="message" value="Line has trailing spaces."/>
    </module>
    <module name="UpperEll"/>

    <module name="DeclarationOrder" />
    <module name="ModifierOrder" />

  </module>

</module>
