<?xml version="1.0" encoding="UTF-8"?>
<!--
    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.2//EN"
    "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">

<module name="Checker">
  <module name="TreeWalker">
    <module name="AvoidStarImport"/>
    <module name="IllegalImport" />
    <module name="RedundantImport" />
    <module name="UnusedImports"/>
    <module name="EqualsHashCode"/>
    <module name="FinalParameters"/>
    <module name="FinalLocalVariable">
      <property name="tokens" value="VARIABLE_DEF, PARAMETER_DEF"/>
      <property name="validateEnhancedForLoopVariable" value="true"/>
    </module>
    <module name="MissingDeprecated"/>
    <module name="MissingOverride"/>
    <module name="EmptyStatement"/>
  </module>
  <module name="Header">
    <property name="headerFile" value="${checkstyle.header.file}" />
    <property name="fileExtensions" value="java"/>
  </module>
  <module name="FileTabCharacter">
    <property name="eachLine" value="true"/>
  </module>
  <module name="RegexpSingleline">
    <property name="format" value="[ \t]+$"/>
    <property name="message" value="Trailing whitespace"/>
  </module>
</module>
