<!--
 -
 - 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 name="AMQ Java" xmlns:ivy="antlib:org.apache.ivy.ant" default="build">

  <import file="common.xml"/>

  <property name="optional" value="false"/>
  <property name="modules.opt.default" value="bdbstore bdbstore/jmx perftests/visualisation-jfc"/>
  <condition property="modules.opt" value="" else="${modules.opt.default}">
    <isfalse value="${optional}"/>
  </condition>
  <condition property="broker-plugins-exclude" value="jdbc-provider-bone" else="">
    <isfalse value="${optional}"/>
  </condition>

  <findSubProjects name="broker-plugins" dir="broker-plugins" excludes="${broker-plugins-exclude}"/>
  <findSubProjects name="client-plugins" dir="client-plugins"/>

  <property name="modules.core"       value="common management/common amqp-1-0-common broker client amqp-1-0-client amqp-1-0-client-jms tools"/>
  <property name="modules.examples"   value="client/example management/example amqp-1-0-client/example amqp-1-0-client-jms/example"/>
  <property name="modules.tests"      value="systests perftests"/>
  <property name="modules.plugin"     value="${broker-plugins} ${client-plugins}"/>
  <property name="modules.jca"        value="jca"/>
  <property name="modules"            value="${modules.core} ${modules.examples}
   ${modules.jca} ${modules.plugin} ${modules.tests} ${modules.opt}"/>

  <property name="qpid.jar"           location="${build.lib}/qpid-all.jar"/>
  <basename property="qpid.jar.name"  file="${qpid.jar}"/>

  <property name="resources"     value="${project.root}/resources"/>

  <!-- Modules for which coverage will be created by the cover-test target -->
  <property name="coverage.modules" value="${modules}"/>

  <map property="release.excludes" value="${modules}">
    <globmapper from="*" to="*/\*\*"/>
  </map>


  <property name="release.zip"          location="${release}/${project.namever}-java.zip"/>
  <property name="release.tar"          location="${release}/${project.namever}-java.tar"/>
  <property name="release.tgz"          location="${release}/${project.namever}-java.tar.gz"/>
  <property name="release.bz2"          location="${release}/${project.namever}-java.tar.bz2"/>

  <macrodef name="iterate">
    <attribute name="target"/>
    <attribute name="modules" default="${modules}"/>
    <element name="elements" implicit="true" optional="true"/>
    <sequential>
      <subant target="@{target}" antfile="build.xml">
        <filelist dir="." files="@{modules}"/>
        <elements/>
      </subant>
    </sequential>
  </macrodef>

  <target name="pom" description="generate poms">
    <iterate target="pom"/>
  </target>

  <target name="release-mvn" description="Install the artifacts into the local repository">
    <iterate target="release-mvn"/>
  </target>

  <target name="deploy-snapshot" description="deploy snapshot artifacts to nexus">
    <iterate target="deploy-snapshot"/>
  </target>

  <target name="compile" description="compile sources">
    <iterate target="compile"/>
  </target>

  <target name="compile-tests" description="compile unit tests">
    <iterate target="compile-tests"/>
  </target>

  <target name="test" description="execute tests" depends="manifest">

    <delete file="${build.failed}"/>

    <iterate target="test">
      <property name="test.failures.ignore" value="true"/>
    </iterate>

    <condition property="failed">
      <available file="${build.failed}"/>
    </condition>

    <fail if="failed" message="TEST SUITE FAILED"/>

  </target>

  <target name="report-module" description="generate junitreport for modules">
    <iterate target="report-module"/>
  </target>

  <target name="jar" description="create module jars">
    <iterate target="jar"/>
  </target>

  <target name="jar-tests" description="create unit test jars">
    <iterate target="jar-tests"/>
  </target>

  <target name="libs" description="copy dependencies into build tree">
    <iterate target="libs"/>
  </target>

  <target name="doc" description="generate api-doc">
    <iterate target="doc"/>
  </target>

  <target name="test-doc" description="generate api-doc">
    <iterate target="test-doc"/>
  </target>

  <target name="bundle" description="create OSGi bundles">
    <iterate target="bundle"/>
  </target>

  <target name="release-bin" description="build a binary release artifact" depends="build,bundle">
      <iterate  target="release-bin"/>
  </target>


  <target name="check-manifest">
    <uptodate property="manifest.done" targetfile="${qpid.jar}">
      <srcfiles dir="${build.lib}" includes="**/*.jar" excludes="**/${qpid.jar.name}"/>
    </uptodate>
  </target>

  <target name="manifest" depends="check-manifest" unless="manifest.done">
    <path id="class.path">
      <fileset dir="${build.lib}" >
        <include name="*.jar"/>
        <exclude name="${qpid.jar.name}"/>
      </fileset>
    </path>
    <pathconvert property="qpid.jar.classpath" pathsep=" " dirsep="/">
      <path refid="class.path"/>
      <globmapper from="${build.lib}${file.separator}*" to="*"/>
    </pathconvert>

    <jar destfile="${qpid.jar}">
      <manifest>
        <attribute name="Class-Path" value="${qpid.jar.classpath}"/>
      </manifest>
      <metainf dir="${project.root}/resources/"/>
    </jar>

    <touch file="${qpid.jar}"/>
  </target>

  <target name="build" depends="retrieve-dependencies" description="build the project">
    <iterate target="build"/>
    <antcall target="manifest"/>
  </target>

  <target name="prepare">
    <mkdir dir="${release}"/>
  </target>

  <target name="zip" depends="build,prepare" description="build release archive">
    <zip destfile="${release.zip}">
      <zipfileset dir="${build}" prefix="${project.namever}" filemode="755">
        <include name="bin/*"/>
	<exclude name="bin/*.txt"/>
      </zipfileset>

      <zipfileset dir="${build}" prefix="${project.namever}" filemode="644">
        <include name="bin/*.txt"/>
      </zipfileset>

      <zipfileset dir="${build}" prefix="${project.namever}" excludes="${release.excludes}" filemode="644" dirmode="755">
        <exclude name="bin/**"/>
	<exclude name="scratch/**"/>
      </zipfileset>

      <zipfileset dir="${resources}" prefix="${project.namever}" filemode="644"/>
    </zip>
  </target>

  <target name="tar" depends="zip" description="build release archive">
    <tar destfile="${release.tar}" longfile="gnu" >
      <zipfileset src="${release.zip}"/>
    </tar>
  </target>

  <target name="gzip" depends="tar" description="build release archive">
    <gzip src="${release.tar}" destfile="${release.tgz}"/>
  </target>

  <target name="bzip2" depends="tar" description="build release archive">
    <bzip2 src="${release.tar}" destfile="${release.bz2}"/>
  </target>

  <target name="release" depends="zip,gzip" description="build all release archives except .bz2"/>

  <target name="release-all" depends="zip,gzip,bzip2" description="build all release archives"/>


  <target name="clean" description="remove build and release artifacts">
    <iterate target="clean"/>
    <delete dir="${build}"/>
    <delete dir="${release}"/>
    <delete dir="${tasks.classes}"/>
  </target>

  <target name="coverage-report" description="generate coverage report" depends="cobertura-init">
    <mkdir dir="${build.coverage.report}" />
    <mkdir dir="${build.coverage.src}" />

    <cobertura-merge datafile="${build.coverage.report}/cobertura.ser">
      <!-- merge all module coverage reports -->
      <fileset dir="${build}">
        <include name="**/*.ser"/>
      </fileset>
    </cobertura-merge>

    <!-- Copy all covered sources to single directory for cobertura report -->

    <foreach property="module" list="${coverage.modules}">

      <copy todir="${build.coverage.src}">
        <fileset dir="${module}/src/main/java" includes="**/*.java"/>
      </copy>

      <copy todir="${build.coverage.src}">
        <fileset dir="build/scratch/${module}/src" includes="**/*.java"/>
      </copy>
    </foreach>

    <cobertura-report format="xml"
                      destdir="${build.coverage.report}"
		      datafile="${build.coverage.report}/cobertura.ser">
      <fileset dir="${build.coverage.src}" includes="**/*.java" />
    </cobertura-report>

    <cobertura-report format="html"
                      destdir="${build.coverage.report}"
		      datafile="${build.coverage.report}/cobertura.ser">
      <fileset dir="${build.coverage.src}" includes="**/*.java" />
    </cobertura-report>
  </target>

  <target name="instrument" description="instrument for artifacts">
    <iterate target="instrument"/>
  </target>

  <target name="cover-test" description="run tests and generate coverage information" depends="build">
    <iterate target="cover-test" modules="${coverage.modules}"/>
  </target>

  <target name="test-interop" depends="build,compile-tests"
      description="run JMS examples against the corresponding c++ and python examples">
      <property name="qpid.src.home" location=".."/>
      <echo-prop name="qpid.src.home"/>
      <exec executable="/bin/sh" failonerror="true">
         <env key="QPID_SRC_HOME" value="${qpid.src.home}"/>
         <arg value="-c"/>
         <arg value="${project.root}/client/example/bin/verify_all"/>
      </exec>
  </target>

  <target name="testkit" depends="build,compile-tests">
    <jython path="${mllib.dir}">
      <args>
        <arg value="${mllib.dir}/qpid-python-test"/>
        <arg value="-m ${basedir}/testkit/testkit"/>
      </args>
    </jython>
  </target>

  <target name="findbugs" depends="build,findbugs-init">

    <mkdir dir="${build.findbugs}"/>

    <findbugs home="${findbugs.dir}"
              output="html"
              outputFile="${build.findbugs}/report.html"
              stylesheet="fancy-hist.xsl"
              jvmargs="-Xmx512m"
              projectName="Qpid">
      <!-- The classes for analysis -->
      <fileset dir="${build.lib}" includes="qpid*.jar" excludes="*test*.jar *-sources*.jar *example*.jar qpid-all.jar"/>

      <!--Additional classes, not for analysis -->
      <auxClassPath>
        <fileset dir="${basedir}/lib" includes="**/*.jar"/>
      </auxClassPath>

      <!-- Source, used for improved reporting -->
      <sourcePath>
        <fileset dir="${basedir}" includes="**/src/**/org/.." />
      </sourcePath>
    </findbugs>
  </target>

  <target name="eclipse" description="build eclipse project and classpath files">
    <iterate target="eclipse"/>
  </target>

  <!-- check the following properties which must be specified by the user-->
  <target name="check-upload-props-exist" description="check that the required properties have been set">
    <fail unless="nexus.user" message="You must supply the 'nexus.user' property"/>
    <fail unless="nexus.password" message="You must supply the 'nexus.password' property"/>
    <fail unless="maven.artifact.dir" message="You must supply the 'maven.artifact.dir' property"/>
  </target>

  <target name="perform-nexus-upload">
    <ivy:configure file="ivysettings.nexus.xml"/>
    <ivy:resolve file="ivy.nexus.xml"/>
    <ivy:deliver/>
    <ivy:publish publishivy="false" resolver="nexus"
             artifactspattern="${maven.artifact.dir}/[organisation]/[module]/[artifact]/[revision]/[artifact]-[revision](-[classifier]).[ext]"/>
  </target>

  <target name="upload" depends="load-ivy, check-upload-props-exist, perform-nexus-upload"/>

</project>
