<?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.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">

<module name="Checker">
    <property name="severity" value="warning"/>
    <module name="NewlineAtEndOfFile"/>
    <module name="TreeWalker">
        <module name="AvoidStarImport"/>
        <module name="EmptyStatement"/>
<!--
        jclouds prefers 120 character line lengths but has many files with
        longer lines
        <module name="LineLength">
            <property name="ignorePattern" value="^import\s.*;$"/>
            <property name="max" value="120"/>
        </module>
-->
        <module name="ModifierOrder"/>
        <module name="MultipleVariableDeclarations"/>
        <module name="SimplifyBooleanExpression"/>
        <module name="UnnecessaryParentheses"/>
    </module>
    <module name="RegexpMultiline">
        <property name="format" value="=\s*new ArrayList&lt;[^&gt;]"/>
        <property name="message" value="Prefer com.google.common.collect.Lists"/>
    </module>
    <module name="RegexpMultiline">
        <property name="format" value="=\s*new HashMap&lt;[^&gt;]"/>
        <property name="message" value="Prefer com.google.common.collect.Maps"/>
    </module>
    <module name="RegexpMultiline">
        <property name="format" value="=\s*new HashSet&lt;[^&gt;]"/>
        <property name="message" value="Prefer com.google.common.collect.Sets"/>
    </module>
    <module name="RegexpMultiline">
        <property name="format" value="=\s*new LinkedHashMap&lt;[^&gt;]"/>
        <property name="message" value="Prefer com.google.common.collect.Maps"/>
    </module>
    <module name="RegexpMultiline">
        <property name="format" value="=\s*new LinkedHashSet&lt;[^&gt;]"/>
        <property name="message" value="Prefer com.google.common.collect.Sets"/>
    </module>
    <module name="RegexpMultiline">
        <property name="format" value="=\s*new LinkedList&lt;[^&gt;]"/>
        <property name="message" value="Prefer com.google.common.collect.Lists"/>
    </module>
    <module name="RegexpMultiline">
        <property name="format" value="=\s*new TreeMap&lt;[^&gt;]"/>
        <property name="message" value="Prefer com.google.common.collect.Maps"/>
    </module>
    <module name="RegexpMultiline">
        <property name="format" value="=\s*new TreeSet&lt;[^&gt;]"/>
        <property name="message" value="Prefer com.google.common.collect.Sets"/>
    </module>
    <module name="RegexpMultiline">
        <property name="format" value="=\s*new AtomicReference&lt;[^&gt;]"/>
        <property name="message" value="Prefer com.google.common.util.concurrent.Atomics"/>
    </module>
    <module name="RegexpMultiline">
        <property name="format" value="new StringBuffer"/>
        <property name="message" value="Prefer java.lang.StringBuilder"/>
    </module>
</module>
