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

<!--
	Checks to make sure the code meets the CXF coding guidelines which 
	are similar to the Sun guidelines at:
	http://java.sun.com/docs/codeconv/index.html
	
	It also enforces aa bunch of other "BestPractices like method
	lengths, if/try depths, etc...
-->

<module name="Checker">
    <property name="severity" value="error"/>
    
	<!-- Checks whether files end with a new line.                        -->
	<!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
	<!--
		<module name="NewlineAtEndOfFile"/>
	-->

	<!-- Checks that property files contain the same keys.         -->
	<!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
	<module name="Translation" />

	<!--<module name="StrictDuplicateCode"/>-->

	<module name="TreeWalker">
		<!-- Enable FileContentsHolder to allow us to in turn turn on suppression comments -->
		<module name="FileContentsHolder" />
		<!-- Checks for Javadoc comments.                     -->
		<!-- See http://checkstyle.sf.net/config_javadoc.html -->
		<!--
			<module name="PackageHtml"/>
			<module name="JavadocMethod"/>
			<module name="JavadocType"/>
			<module name="JavadocVariable"/>
			<module name="JavadocStyle"/>
		-->

		<!-- Checks for Naming Conventions.                  -->
		<!-- See http://checkstyle.sf.net/config_naming.html -->
		<module name="ConstantName" />
		<module name="LocalFinalVariableName" />
		<module name="LocalVariableName" />
		<module name="MemberName" />
		<module name="MethodName" />
		<module name="PackageName" />
		<module name="ParameterName" />
		<module name="StaticVariableName" />
		<module name="TypeName" />

		<!-- Checks for imports                              -->
		<!-- See http://checkstyle.sf.net/config_import.html -->
		<module name="AvoidStarImport">
			<property name="excludes"
				value="java.io,java.util,java.net,java.nio,java.nio.channels,java.lang.reflect,org.w3c.dom,org.xml.sax,java.awt,javax.swing,junit.framework" />
		</module>
		<module name="IllegalImport" /><!-- defaults to sun.* packages -->
		<module name="RedundantImport" />
		<module name="UnusedImports" />
		<!--
			<module name="ImportControl">
			<property name="file" value="etc/import-control.xml"/>
			</module>
		-->

		<!-- Checks for Size Violations.                    -->
		<!-- See http://checkstyle.sf.net/config_sizes.html -->
		<module name="AnonInnerLength">
			<property name="max" value="40" />
		</module>
		<module name="ExecutableStatementCount">
			<property name="max" value="75" />
		</module>
		<module name="LineLength">
			<property name="max" value="120" />
		</module>
		<module name="MethodLength">
			<property name="max" value="150" />
			<property name="countEmpty" value="false" />
		</module>
		<module name="ParameterNumber">
			<property name="max" value="7" />
            <property name="ignoreOverriddenMethods" value="true"/>
		</module>

		<!-- Checks for whitespace                               -->
		<!-- See http://checkstyle.sf.net/config_whitespace.html -->
		<module name="EmptyForIteratorPad" />
		<module name="EmptyForInitializerPad" />
		<module name="MethodParamPad" />
		<module name="NoWhitespaceAfter">
			<property name="tokens"
				value="ARRAY_INIT,BNOT,DEC,DOT,INC,LNOT,UNARY_MINUS,UNARY_PLUS" />
		</module>
		<module name="NoWhitespaceBefore" />
		<module name="OperatorWrap" />
		<module name="ParenPad" />
		<module name="TypecastParenPad" />
		<module name="WhitespaceAfter">
			<property name="tokens" value="COMMA, SEMI" />
		</module>
		<module name="WhitespaceAround">
			<property name="tokens"
				value="ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_ASSERT, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION, RCURLY, SL, SLIST, SL_ASSIGN, SR, SR_ASSIGN, STAR, STAR_ASSIGN,TYPE_EXTENSION_AND" />
		</module>

		<!-- Modifier Checks                                    -->
		<!-- See http://checkstyle.sf.net/config_modifiers.html -->
		<!-- <module name="ModifierOrder" />-->
		<module name="RedundantModifier" />

		<!-- Checks for blocks. You know, those {}'s         -->
		<!-- See http://checkstyle.sf.net/config_blocks.html -->
		<module name="AvoidNestedBlocks">
			<property name="allowInSwitchCase" value="true" />
		</module>
		<module name="EmptyBlock">
			<property name="option" value="text" />
		</module>
		<module name="LeftCurly" />
		<module name="NeedBraces" />
		<module name="RightCurly" />

		<!-- Checks for common coding problems               -->
		<!-- See http://checkstyle.sf.net/config_coding.html -->
		<!--<module name="ArrayTrailingComma"/>-->
		<!--<module name="AvoidInlineConditionals"/>-->
		<module name="CovariantEquals" />
		<module name="EmptyStatement" />
		<module name="EqualsHashCode" />
		<!--<module name="FinalLocalVariable"/>-->
		<module name="HiddenField">
			<property name="ignoreConstructorParameter" value="true" />
			<property name="ignoreSetter" value="true" />
		</module>
		<module name="IllegalInstantiation" />
		<!--<module name="IllegalToken"/>-->
		<!--<module name="IllegalTokenText"/>-->
		<module name="InnerAssignment" />
		<!--<module name="MagicNumber"/>-->
		<module name="MissingSwitchDefault" />
		<!--module name="ModifiedControlVariable"/-->
		<module name="SimplifyBooleanExpression" />
		<module name="SimplifyBooleanReturn" />
		<module name="StringLiteralEquality" />
		<module name="NestedIfDepth">
			<property name="max" value="3" />
		</module>
		<module name="NestedTryDepth">
			<property name="max" value="3" />
		</module>
		<module name="SuperClone" />
		<module name="SuperFinalize" />
		<!--<module name="IllegalCatch"/>-->
		<module name="IllegalThrows">
			<property name="illegalClassNames"
				value="java.lang.Error,java.lang.RuntimeException" />
		</module>
		<!--<module name="RedundantThrows"/>-->
		<module name="PackageDeclaration" />

		<module name="IllegalType">
			<property name="format" value="^xxx$" />
			<property name="illegalClassNames"
				value="java.util.GregorianCalendar, java.util.Hashtable, java.util.HashSet, java.util.HashMap, java.util.ArrayList, java.util.LinkedList, java.util.LinkedHashMap, java.util.LinkedHashSet, java.util.TreeSet, java.util.TreeMap" />
		</module>
		<module name="DeclarationOrder" />
		<!--<module name="ParameterAssignment"/>-->
		<module name="ExplicitInitialization" />
		<module name="DefaultComesLast" />
		<!--<module name="MissingCtor"/>-->
		<module name="FallThrough" />
		<!--<module name="MultipleStringLiterals"/>-->
		<module name="MultipleVariableDeclarations" />
		<!--<module name="RequireThis"/>-->
		<module name="UnnecessaryParentheses" />

		<!-- Checks for class design                         -->
		<!-- See http://checkstyle.sf.net/config_design.html -->
		<!--<module name="DesignForExtension"/>-->
		<module name="FinalClass" />
		<module name="HideUtilityClassConstructor" />
		<module name="InterfaceIsType" />
		<!--<module name="MutableException"/>-->
		<module name="ThrowsCount">
			<property name="max" value="5" />
		</module>
		<module name="VisibilityModifier">
			<property name="protectedAllowed" value="true" />
			<property name="packageAllowed" value="true" />
			<!-- this is needed for the resource injection unit tests.  It will removed 
				when private member inject is supported.
			-->
			<property name="publicMemberPattern" value="resource[12].*" />
		</module>

		<!-- Metrics checks.                   -->
		<!-- See http://checkstyle.sf.net/config_metrics.html -->
		<module name="BooleanExpressionComplexity">
			<property name="max" value="6" />
		</module>
		<!--<module name="ClassDataAbstractionCoupling"/>-->
		<!--<module name="ClassFanOutComplexity"/>-->
		<!--<module name="CyclomaticComplexity"/>-->
		<!--<module name="NPathComplexity"/>-->
		<module name="JavaNCSS">
			<property name="methodMaximum" value="100" />
		</module>

		<!-- Miscellaneous other checks.                   -->
		<!-- See http://checkstyle.sf.net/config_misc.html -->
		<!-- 
			<module name="ArrayTypeStyle"/>
			<module name="FinalParameters"/>
		-->
		<!--
			<module name="GenericIllegalRegexp">
			<property name="format" value="\s+$"/>
			<property name="message" value="Line has trailing spaces."/>
			</module>
		-->
		<module name="TodoComment">
			<property name="format" value="WARNING" />
		</module>

		<module name="UpperEll" />

		<!--Assert statement may have side effects:-->
		<module name="DescendantToken">
			<property name="tokens" value="LITERAL_ASSERT" />
			<property name="limitedTokens"
				value="ASSIGN,DEC,INC,POST_DEC,POST_INC,PLUS_ASSIGN,MINUS_ASSIGN,STAR_ASSIGN,DIV_ASSIGN,MOD_ASSIGN,BSR_ASSIGN,SR_ASSIGN,SL_ASSIGN,BAND_ASSIGN,BXOR_ASSIGN,BOR_ASSIGN" />
			<property name="maximumNumber" value="0" />
		</module>

		<!--<module name="UncommentedMain"/>-->
		<!--module name="TrailingComment"/-->
		<module name="Indentation">
            <property name="caseIndent" value="0" />
            <property name="lineWrappingIndentation" value="0"/>
		</module>
		<!--<module name="RequiredRegexp">-->
        <module name="SuppressWarningsHolder" />
	</module>
    <module name="SuppressionCommentFilter">
        <property name="offCommentFormat" value="CHECKSTYLE\:OFF"/>
        <property name="onCommentFormat" value="CHECKSTYLE\:ON"/>
    </module>
    <module name="SuppressionCommentFilter">
        <property name="offCommentFormat" value="CHECKSTYLE.OFF\:([\w\|]+)"/>
        <property name="onCommentFormat" value="CHECKSTYLE.ON\:([\w\|]+)"/>
        <property name="checkFormat" value="$1"/>
    </module>
    <module name="SuppressWarningsFilter"/>
    <module name="SuppressionFilter">
        <property name="file" value="${checkstyle.suppressions.file}" />
    </module>
    <!-- Header checks -->
    <module name="Header">
      <property name="header"
                value="/**\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * &quot;License&quot;); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n" />
    </module>
    <!-- <module name="RegexpHeader"/> -->
    <module name="FileLength">
      <property name="max" value="3000" />
    </module>
    <module name="FileTabCharacter">
      <property name="eachLine" value="true"/>
    </module>
</module>
