<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
          "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
          "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">

<module name = "Checker">
    <property name="charset" value="UTF-8"/>

    <property name="severity" value="error"/>

    <property name="fileExtensions" value="java, properties, xml"/>

    <module name="RegexpSingleline">
        <property name="format" value="\s+$"/>
        <property name="message" value="Unnecessary trailing whitespace"/>
    </module>

    <module name="FileTabCharacter"/>

    <!-- This is a temporary workaround until ^M line endings is added to upstream checkstyle -->
    <module name="RegexpMultiline">
	<property name="format" value="\r\n"/>
	<property name="message" value="Do not use Windows line endings"/>
    </module>

    <module name="TreeWalker">
        <module name="AnnotationLocation"/>
        <module name="CustomImportOrder">
            <property name="customImportOrderRules"
                      value="THIRD_PARTY_PACKAGE###SPECIAL_IMPORTS###STANDARD_JAVA_PACKAGE###STATIC"/>
            <property name="specialImportsRegExp" value="^javax\."/>
            <property name="standardPackageRegExp" value="^java\."/>
            <property name="sortImportsInGroupAlphabetically" value="true"/>
            <property name="separateLineBetweenGroups" value="true"/>
        </module>
        <module name="DefaultComesLast"/>
        <module name="EmptyLineSeparator">
            <!-- Enable all except PACKAGE_DEF, METHOD_DEF, VARIABLE_DEF -->
            <property name="tokens"
                      value="IMPORT, STATIC_IMPORT, CLASS_DEF, INTERFACE_DEF, ENUM_DEF, STATIC_INIT, INSTANCE_INIT, CTOR_DEF"/>
        </module>
        <module name="EmptyStatement"/>
        <module name="EqualsAvoidNull"/>
        <module name="EqualsHashCode"/>
        <module name="Indentation"/>
        <module name="InnerAssignment"/>
        <module name="LeftCurly"/>
        <module name="MethodParamPad"/>
        <module name="MultipleVariableDeclarations"/>
        <module name="NoWhitespaceBefore">
            <property name="allowLineBreaks" value="true"/>
        </module>
        <module name="OneStatementPerLine"/>
        <module name="PackageDeclaration"/>
        <module name="OverloadMethodsDeclarationOrder"/>
        <module name="ParenPadCheck"/>
        <module name="RedundantImport"/>
        <module name="RequireThis"/>
        <module name="RightCurly"/>
        <module name="SimplifyBooleanExpression"/>
        <module name="SimplifyBooleanReturn"/>
        <module name="SingleSpaceSeparator"/>
        <module name="StringLiteralEquality"/>
        <module name="SuperClone"/>
        <module name="SuperFinalize"/>
        <module name="TypecastParenPad"/>
        <module name="UnusedImports"/>
        <module name="WhitespaceAround">
            <property name="allowEmptyCatches" value="true"/>
            <property name="allowEmptyConstructors" value="true"/>
            <property name="allowEmptyLambdas" value="true"/>
            <property name="allowEmptyMethods" value="true"/>
            <property name="allowEmptyTypes" value="true"/>
        </module>
        <module name="org.airsonic.checkstyle.LoggerNameCheck"/>
    </module>

    <module name="UniqueProperties"/>
</module>
