<!--
 -
 - 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"/>

  <findSubProjects name="broker-plugins" dir="broker-plugins"/>
  <findSubProjects name="client-plugins" dir="client-plugins"/>

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

  <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.tests} ${modules.plugin} ${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>
