<?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 name="libthrift" default="dist" basedir="."
  xmlns:ivy="antlib:org.apache.ivy.ant"
  xmlns:artifact="antlib:org.apache.maven.artifact.ant">

  <description>Thrift Build File</description>

  <property environment="env" />

  <property name="gen" location="gen-java" />
  <property name="genbean" location="gen-javabean" />
  <property name="mvn.ant.task.version" value="2.1.0" />
  
  <property name="src" location="src" />
  <property name="build" location="build" />
  <property name="javadoc" location="${build}/javadoc" />
  <property name="install.path" value="/usr/local/lib" />
  <property name="src.test" location="test" />
  <property name="build.test" location="${build}/test" />
  <property name="test.thrift.home" location="../../test"/>
  <property name="thrift.root" location="../../"/>
  <property name="jar.file" location="${basedir}/libthrift.jar" />  

  <property file="${user.home}/.thrift-build.properties" />

  <!-- ivy properties -->
  <property name="ivy.version" value="2.0.0-rc2" />
  <property name="ivy.dir" location="${build}/ivy" />
  <property name="ivy.jar" location="${ivy.dir}/ivy-${ivy.version}.jar"/>
  <property name="ivy.lib.dir" location="${ivy.dir}/lib" />
  <property name="ivy_repo_url" value="http://repo2.maven.org/maven2/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar"/>
  <property name="ivysettings.xml" location="${ivy.dir}/ivysettings.xml" />
  <property name="mvn_ant_task_url" value="http://www.reverse.net/pub/apache/maven/binaries/maven-ant-tasks-${mvn.ant.task.version}.jar" />
  <property name="mvn.ant.task.jar" location="${ivy.dir}/maven-ant-tasks-${mvn.ant.task.version}.jar" />
  <property name="sources.zip" location="${build}/libthrift-src.zip" />
  <property name="pom.file" location="${build}/pom.xml" />
  
  <!-- TODO: Get the appropriate tokens / URL for upload -->  
  <property name="apache.snapshot.repository" value="https://repository.apache.org/content/repositories/snapshots" />
 
  <path id="compile.classpath">
    <path refid="ivy.compile.classpath" />
  </path>

  <path id="test.classpath">
    <path refid="compile.classpath" />
    <path refid="ivy.test.classpath" />
    <pathelement path="${env.CLASSPATH}" />
    <pathelement location="build/test" />
    <pathelement location="${jar.file}" />
  </path>

  <target name="init">
    <tstamp />
    <mkdir dir="${build}"/>
    <mkdir dir="${build.test}" />
    <!--
    Allow Ivy to be disabled with "-Dnoivy=".
    It is kind of a hack to pretend that we already found it,
    but Ant doesn't provide an easy way of blocking dependencies
    from executing or checking multiple conditions.
    -->
    <condition property="ivy.found"><isset property="noivy" /></condition>
    <condition property="offline"><isset property="noivy" /></condition>
  </target>

  <target name="ivy-init-dirs">
    <mkdir dir="${ivy.dir}" />
    <mkdir dir="${ivy.lib.dir}" />
  </target>

  <target name="ivy-download" depends="ivy-init-dirs" description="To download ivy" unless="offline">
    <get src="${ivy_repo_url}" dest="${ivy.jar}" usetimestamp="true"/>
  </target>

  <target name="ivy-probe-antlib">
    <condition property="ivy.found">
      <typefound uri="antlib:org.apache.ivy.ant" name="cleancache"/>
    </condition>
  </target>

  <target name="ivy-init-antlib" depends="ivy-download,ivy-probe-antlib" unless="ivy.found">
    <typedef uri="antlib:org.apache.ivy.ant" onerror="fail"
      loaderRef="ivyLoader">
      <classpath>
        <pathelement location="${ivy.jar}"/>
      </classpath>
    </typedef>
    <fail>
      <condition >
        <not>
          <typefound uri="antlib:org.apache.ivy.ant" name="cleancache"/>
        </not>
      </condition>
      You need Apache Ivy 2.0 or later from http://ant.apache.org/
      It could not be loaded from ${ivy_repo_url}
    </fail>
  </target>

  <target name="resolve" depends="ivy-init-antlib" description="retrieve dependencies with ivy" unless="noivy">
    <ivy:retrieve />
    <ivy:cachepath pathid="ivy.compile.classpath" conf="compile" />
    <ivy:cachepath pathid="ivy.test.classpath" conf="test" />
  </target>

  <target name="compile" depends="init,resolve">
    <javac srcdir="${src}" destdir="${build}" source="1.5" target="1.5" debug="true" classpathref="compile.classpath" />
  </target>

  <target name="javadoc" depends="init">
    <javadoc sourcepath="${src}"
      destdir="${javadoc}"
      version="true"
      windowtitle="Thrift Java API"
      doctitle="Thrift Java API"
      classpathref="test.classpath">
    </javadoc>
  </target>

  <target name="dist" depends="compile">
    <mkdir dir="${build}/META-INF"/>
    <copy file="${thrift.root}/LICENSE" tofile="${build}/META-INF/LICENSE.txt"/>
    <copy file="${thrift.root}/NOTICE" tofile="${build}/META-INF/NOTICE.txt"/>
    <jar jarfile="${jar.file}">
      <fileset dir="${build}">
        <include name="org/apache/thrift/**/*.class" />
        <include name="META-INF/*.txt" />
      </fileset>
      <fileset dir="src">
        <include name="**/*.java" />
      </fileset>
    </jar>
  </target>

  <target name="install" depends="dist,javadoc">
    <copy todir="${install.path}">
        <fileset dir="."><include name="*.jar" /></fileset>
    </copy>
    <copy todir="${install.javadoc.path}">
      <fileset dir="${javadoc}">
        <include name="**/*" />
      </fileset>
    </copy>
  </target>

  <target name="clean">
    <delete dir="${build}" />
    <delete dir="${gen}"/>
    <delete dir="${genbean}"/>
    <delete dir="${javadoc}"/>
    <delete file="${jar.file}" />
  </target>

  <target name="compile-test" description="Build the test suite classes" depends="generate,dist">
    <javac debug="true" srcdir="${gen}" destdir="${build.test}" classpathref="test.classpath" />
    <javac debug="true" srcdir="${genbean}" destdir="${build.test}" classpathref="test.classpath" />
    <javac debug="true" srcdir="${src.test}" destdir="${build.test}" classpathref="test.classpath" />
    <copy todir="${build.test}">
      <fileset dir="${src.test}" includes="log4j.properties" />
    </copy>
  </target>

  <property name="build.test" location="${build.dir}/test"/>
  <property name="test.junit.output.format" value="plain"/>
  <property name="test.timeout" value="2000000"/>
  <property name="test.src.dir" location="${basedir}/test"/>
  <property name="test.log.dir" value="${build.test}/log"/>
  <property name="test.port" value="9090" />

  <target name="junit-test" description="Run the JUnit test suite" depends="compile-test">
    <mkdir dir="${test.log.dir}"/>
    <junit
      printsummary="yes" showoutput="${test.output}" 
      haltonfailure="no" fork="yes" maxmemory="512m"
      errorProperty="tests.failed" failureProperty="tests.failed"
      timeout="${test.timeout}"
    >
      <sysproperty key="build.test" value="${build.test}"/>
      <sysproperty key="test.port" value="${test.port}" />
      <classpath refid="test.classpath"/>
      <formatter type="${test.junit.output.format}" />
      <batchtest todir="${test.log.dir}" unless="testcase">
        <fileset dir="${test.src.dir}" includes="**/Test*.java" />
      </batchtest>
      <batchtest todir="${test.log.dir}" if="testcase">
        <fileset dir="${test.src.dir}" includes="**/${testcase}.java" />
      </batchtest>
    </junit>
    <fail if="tests.failed">Tests failed!</fail>
  </target>

  <target name="deprecated-test" description="Run the non-JUnit test suite" depends="compile-test">
    <java classname="org.apache.thrift.test.EqualityTest"
      classpathref="test.classpath" failonerror="true" />
    <java classname="org.apache.thrift.test.JavaBeansTest"
      classpathref="test.classpath" failonerror="true" />
  </target>

  <target name="test" description="Run the full test suite" depends="junit-test,deprecated-test"/>

  <target name="testclient" description="Run a test client">
    <java classname="org.apache.thrift.test.TestClient"
      classpathref="test.classpath" failonerror="true">
      <arg line="${testargs}" />
    </java>
  </target>

  <target name="testserver" description="Run a test server">
    <java classname="org.apache.thrift.test.TestServer"
      classpathref="test.classpath" failonerror="true">
      <arg line="${testargs}" />
    </java>
  </target>

  <target name="testnonblockingserver" description="Run a test nonblocking server">
    <java classname="org.apache.thrift.test.TestNonblockingServer"
      classpathref="test.classpath" failonerror="true">
      <arg line="${testargs}" />
    </java>
  </target>

  <target name="generate">
    <exec executable="../../compiler/cpp/thrift" failonerror="true">
      <arg line="--gen java:hashcode ${test.thrift.home}/ThriftTest.thrift" />
    </exec>
    <exec executable="../../compiler/cpp/thrift" failonerror="true">
      <arg line="--gen java:hashcode ${test.thrift.home}/DebugProtoTest.thrift" />
    </exec>
    <exec executable="../../compiler/cpp/thrift" failonerror="true">
      <arg line="--gen java:hashcode ${test.thrift.home}/OptionalRequiredTest.thrift" />
    </exec>
    <exec executable="../../compiler/cpp/thrift" failonerror="true">
      <arg line="--gen java:beans,nocamel ${test.thrift.home}/JavaBeansTest.thrift" />
    </exec>
  </target>

  <target name="mvn.init">
    <get src="${mvn_ant_task_url}" dest="${mvn.ant.task.jar}" usetimestamp="true" /> 
    <path id="maven-ant-tasks.classpath" path="${mvn.ant.task.jar}" />
  <taskdef resource="org/apache/maven/artifact/ant/antlib.xml"
                        uri="antlib:org.apache.maven.artifact.ant"
          classpathref="maven-ant-tasks.classpath" />
  </target>

  <target name="pack.src">
    <zip destfile="${sources.zip}" basedir="${src}" />
  </target>

  <target name="generate.pom" depends="init,resolve" description="Generate a Maven POM file for libthrift">
    <ivy:makepom ivyfile="${basedir}/ivy.xml" pomfile="${pom.file}" >
      <mapping conf="default" scope="compile" />
      <mapping conf="runtime" scope="runtime" />
    </ivy:makepom>
  </target>

  <target name="publish" depends="test,dist,mvn.init,generate.pom,pack.src">
    <artifact:pom id="pom" file="${pom.file}" />

    <artifact:install file="${jar.file}">
      <pom refid="pom"/>
      <attach file="${sources.zip}" classifier="source" />
    </artifact:install>

    <artifact:remoteRepository id="remote.repository" url="${apache.snapshot.repository}" />

    <artifact:deploy file="${jar.file}">
      <remoteRepository refid="remote.repository" />
      <pom refid="pom"/>
      <attach file="${sources.zip}" classifier="source" />
    </artifact:deploy>
  </target>
</project>
