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

<project>
  <property name="findbugs.home" value=""/>

  <macrodef name="_findbugs">
    <attribute name="outputDir"/>
    <attribute name="outputFile"/>
    <attribute name="excludeFilter"/>
    <attribute name="findbugsReportXmlFile"/>
    <attribute name="findbugsReportHtmlFile"/>
    <attribute name="sourceDir"/>
    <attribute name="jarDir"/>
    <attribute name="classPathRef"/>
    <sequential>
      <mkdir dir="@{outputDir}"/>
      <findbugs
          home="${findbugs.home}"
          output="xml:withMessages"
          outputFile="@{outputFile}"
          effort="max"
          timeout="2400000"
          excludeFilter="@{excludeFilter}"
          jvmargs="-Xmx1024M">
        <auxClasspath>
          <path refid="@{classPathRef}"/>
        </auxClasspath>
        <sourcePath path="@{sourceDir}"/>
        <fileset dir="@{jarDir}">
          <include name="**/hcatalog-*.jar"/>
          <include name="**/webhcat-*.jar"/>
        </fileset>
      </findbugs>
      <xslt style="${findbugs.home}/src/xsl/default.xsl"
            in="@{findbugsReportXmlFile}"
            out="@{findbugsReportHtmlFile}"/>
    </sequential>
  </macrodef>

  <target name="init-findbugs">
    <available property="findbugs.present" file="${findbugs.home}/lib/findbugs.jar"/>
    <fail message="'findbugs.home' is not defined. Please pass -Dfindbugs.home=&lt;base of Findbugs installation&gt; to Ant on the command-line." unless="findbugs.present"/>
    <taskdef name="findbugs"
             classname="edu.umd.cs.findbugs.anttask.FindBugsTask"
             classpath="${findbugs.home}/lib/findbugs-ant.jar"/>
  </target>
</project>
