<project name="JXPath" default="jar" basedir=".">


<!--
        "JXPath" component of the Jakarta Commons Subproject
        $Id: build.xml,v 1.18 2003/01/30 23:41:28 dmitri Exp $
-->


<!-- ========== Initialize Properties ===================================== -->

  <property file="${user.home}/build.properties"/>   <!-- User local        -->
  <property file="build.properties"/>                <!-- Component local   -->
  <property file="../build.properties"/>             <!-- Commons local     -->

<!-- ========== Component Declarations ==================================== -->

  <!-- The name of this component -->
  <property name="component.name"          value="jxpath"/>

  <!-- The title of this component -->
  <property name="component.title"         value="XPath traversal of JavaBeans"/>

  <!-- The primary package name of this component -->
  <property name="component.package"       value="org.apache.commons.jxpath"/>

  <!-- The current version number of this component -->
  <property name="component.version"       value="1.1b1"/>

  <!-- The jar name of this component -->
  <property name="jar.name"
           value="commons-${component.name}.jar"/>

  <!-- The base directory for compilation targets -->
  <property name="build.home"              value="target"/>

  <!-- The base directory for component configuration files -->
  <property name="conf.home"               value="src/conf"/>

  <!-- The base directory for distribution targets -->
  <property name="dist.home"               value="dist"/>

  <!-- The base directory for component sources -->
  <property name="source.home"             value="src/java"/>

  <!-- The base directory for unit test sources -->
  <property name="test.home"               value="src/test"/>

  <!-- Anakia props -->
  <property name="docs.src" value="./xdocs"/>
  <property name="docs.dest" value="${dist.home}/docs"/>


<!-- ========== Compiler Defaults ========================================= -->


  <!-- Should Java compilations set the 'debug' compiler option? -->
  <property name="compile.debug"           value="true"/>

  <!-- Should Java compilations set the 'deprecation' compiler option? -->
  <property name="compile.deprecation"     value="true"/>

  <!-- Should Java compilations set the 'optimize' compiler option? -->
  <property name="compile.optimize"        value="true"/>

  <!-- Construct compile classpath -->
  <path id="compile.classpath">
    <pathelement location="${build.home}/classes"/>
    <pathelement location="${jaxp.jaxp.jar}"/>
    <pathelement location="${jaxp.xslt.jar}"/>
    <pathelement location="${jdom.jar}"/>
    <pathelement location="${servlet.jar}"/>
    <pathelement location="${junit.jar}"/>
    <pathelement location="${commons-beanutils.jar}"/>
    <pathelement location="${commons-collections.jar}"/>
    <pathelement location="${commons-logging.jar}"/>
  </path>


<!-- ========== Test Execution Defaults =================================== -->


  <!-- Construct unit test classpath -->
  <path id="test.classpath">
    <pathelement location="${build.home}/classes"/>
    <pathelement location="${build.home}/tests"/>
    <pathelement location="${jaxp.jaxp.jar}"/>
    <pathelement location="${jaxp.xslt.jar}"/>
    <pathelement location="${servlet.jar}"/>
    <pathelement location="${junit.jar}"/>
    <pathelement location="${jdom.jar}"/>
    <pathelement location="${commons-beanutils.jar}"/>
    <pathelement location="${commons-collections.jar}"/>
    <pathelement location="${commons-logging.jar}"/>
  </path>

  <!-- Should all tests fail if one does? -->
  <property name="test.failonerror"        value="true"/>

  <!-- The test runner to execute -->
  <property name="test.runner"             value="junit.textui.TestRunner"/>


<!-- ========== Executable Targets ======================================== -->

  <target name="check_available">
    <available 
      classname="junit.framework.Test"
      property="junit.present"
      classpathref="compile.classpath"
    />

    <available 
      classname="org.xml.sax.SAXException"
      property="jaxp.jaxp.present"
      classpathref="compile.classpath"
    />

    <available 
      classname="javax.xml.transform.Transformer"
      property="jaxp.xslt.present"
      classpathref="compile.classpath"
    />

    <available 
      classname="javax.servlet.ServletRequest"
      property="servlet.present"
      classpathref="compile.classpath"
    />

  </target>

  <target name="init"
    description="Initialize and evaluate conditionals"
    depends="check_available">
    <echo message="-------- ${component.name} ${component.version} --------"/>
    <filter  token="name"                  value="${component.name}"/>
    <filter  token="package"               value="${component.package}"/>
    <filter  token="version"               value="${component.version}"/>

    <echo message="junit.jar = ${junit.jar}"/>
    <echo message="jaxp.jaxp.jar = ${jaxp.jaxp.jar}"/>
    <echo message="jaxp.xslt.jar = ${jaxp.xslt.jar}"/>
    <echo message="servlet.jar = ${servlet.jar}"/>
    <echo message="commons-beanutils.jar = ${commons-beanutils.jar}"/>
    <echo message="commons-collections.jar = ${commons-collections.jar}"/>
    <echo message="commons-logging.jar = ${commons-logging.jar}"/>
  </target>

  <target name="check.junit" unless="junit.present">
    <antcall target="property-warning">
      <param name="name" value="junit.jar"/>
      <param name="value" value="${junit.jar}"/>
    </antcall>
  </target>

  <target name="check.jaxp.jaxp" unless="jaxp.jaxp.present">
    <antcall target="property-warning">
      <param name="name" value="jaxp.jaxp.jar"/>
      <param name="value" value="${jaxp.jaxp.jar}"/>
    </antcall>
  </target>

  <target name="check.jaxp.xslt" unless="jaxp.xslt.present">
    <antcall target="property-warning">
      <param name="name" value="jaxp.xslt.jar"/>
      <param name="value" value="${jaxp.xslt.jar}"/>
    </antcall>
  </target>

  <target name="check.servlet" unless="servlet.present">
    <antcall target="property-warning">
      <param name="name" value="servlet.jar"/>
      <param name="value" value="${servlet.jar}"/>
    </antcall>
  </target>

  <target name="property-warning">
    <echo>
      +----------------------------------------------------------------+
      + F A I L E D  R E Q U I R E M E N T                             |
      +----------------------------------------------------------------+
      | You must define the following property in order                |
      | to build ${component.name}:
      |                                                                |
      | ${name} = ${value}
      |                                                                |
      | You can set this property in the provided build.properties     |
      | file, or you may set this property in your                     |
      | ${user.home}/build.properties file.                            
      +----------------------------------------------------------------+
    </echo>
    <fail message="Failed Requirement"/>
  </target>

  <target name="prepare" depends="init, 
                         check.junit,check.jaxp.jaxp,check.jaxp.xslt,check.servlet"
   description="Prepare build directory">
    <mkdir dir="${build.home}"/>
    <mkdir dir="${build.home}/classes"/>
    <mkdir dir="${build.home}/conf"/>
    <mkdir dir="${build.home}/tests"/>
  </target>

  <target name="static" depends="prepare"
   description="Copy static files to build directory">
    <tstamp/>
    <copy  todir="${build.home}/conf" filtering="on">
      <fileset dir="${conf.home}" includes="*.MF"/>
    </copy>
  </target>


  <target name="compile" depends="static"
   description="Compile shareable components">
    <javac  srcdir="${source.home}"
           destdir="${build.home}/classes"
             debug="${compile.debug}"
       deprecation="${compile.deprecation}"
          optimize="${compile.optimize}">
      <classpath refid="compile.classpath"/>
    </javac>
    <copy    todir="${build.home}/classes" filtering="on">
      <fileset dir="${source.home}" excludes="**/*.java"/>
    </copy>
  </target>


  <target name="compile.tests" depends="compile"
   description="Compile unit test cases">
    <javac  srcdir="${test.home}"
           destdir="${build.home}/tests"
             debug="${compile.debug}"
       deprecation="${compile.deprecation}"
          optimize="${compile.optimize}">
      <classpath refid="test.classpath"/>
    </javac>
    <copy    todir="${build.home}/tests" filtering="on">
      <fileset dir="${test.home}" excludes="**/*.java"/>
    </copy>
  </target>


  <target name="clean"
   description="Clean build and distribution directories">
    <delete    dir="${build.home}"/>
    <delete    dir="${dist.home}"/>
  </target>


  <target name="all" depends="clean,compile"
   description="Clean and compile all components"/>


  <target name="javadoc" depends="compile"
   description="Create component Javadoc documentation">
    <mkdir      dir="${dist.home}"/>
    <mkdir      dir="${dist.home}/docs"/>
    <mkdir      dir="${dist.home}/docs/apidocs"/>
    <javadoc sourcepath="${source.home}"
           classpathref="compile.classpath"
                destdir="${dist.home}/docs/apidocs"
           packagenames="org.apache.commons.*"
                 author="true"
                private="false"
                version="true"
               doctitle="&lt;h1&gt;${component.title}&lt;/h1&gt;"
            windowtitle="${component.title} (Version ${component.version})"
                 bottom="Copyright (c) 2001 - Apache Software Foundation"/>
  </target>

  <!-- ================================================================== -->
  <!-- J A R                                                              -->
  <!-- ================================================================== -->
  <target name="jar" depends="compile" description="Build jar">
    <mkdir      dir="${dist.home}"/>
    <copy      file="LICENSE.txt"
             tofile="${build.home}/classes/META-INF/LICENSE.txt"/>
    <jar    jarfile="${dist.home}/${jar.name}"
            basedir="${build.home}/classes"
           manifest="${build.home}/conf/MANIFEST.MF"/>
  </target>
  
  <!-- ================================================================== -->
  <!-- I N S T A L L  J A R                                               -->
  <!-- ================================================================== -->

  <target name="install-jar" depends="jar" 
          description="==> Installs .jar file in ${lib.repo}">
    <copy todir="${lib.repo}" filtering="no">
      <fileset dir="${dist.home}">
        <include name="${jar.name}"/>
      </fileset>
    </copy>
  </target>

  <!-- ================================================================== -->
  <!-- D I S T                                                            -->
  <!-- ================================================================== -->

  <target name="dist" depends="compile,jar,xdoc,javadoc"
   description="Create binary distribution">
    <mkdir      dir="${dist.home}"/>
    <copy      file="LICENSE.txt"
              todir="${dist.home}"/>
  </target>

<!-- ========== Unit Test Targets ========================================= -->

  <target name="test"  depends="compile.tests,
                                test.jxpath"
   description="Run all unit test cases">
  </target>

  <target name="test.jxpath">
    <echo message="Running JXPath tests ..."/>
    <java classname="${test.runner}" fork="yes"
        failonerror="${test.failonerror}">
      <arg value="org.apache.commons.jxpath.JXPathTestSuite"/>
      <classpath refid="test.classpath"/>
    </java>
  </target>


<!-- ========== Documentation ========================================= -->

  <target name="xdoc.fetch-stylesheet" unless="localstylesheet">
      <echo>
       ####################################################################
       #
       #  Fetching the latest stylesheet from jakarta-site2
       #
       #  NOTE : As this build target is meant for developers, this requires
       #    a properly setup CVS.  But you are encouraged to use this to
       #    experiment with Anakia - if the fetch fails, it may be because
       #    you haven't yet logged into CVS. The way to do it, assuming you
       #    have a resonable CVS client setup is
       #
       #  $ cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic login
       #  password: anoncvs
       #
       #  and that should solve it.
       #
       #  See http://jakarta.apache.org/site/cvsindex.html for more
       #      information, or http://www.cvshome.org/
       #
       #  Ant really is the bee's knees. http://jakarta.apache.org/ant/
       #
       ######################################################################
       </echo>

      <cvs cvsRoot=":pserver:anoncvs@cvs.apache.org:/home/cvspublic"
          command="checkout -p jakarta-site2/xdocs/stylesheets/site.vsl"
          output="${docs.src}/stylesheets/site.vsl"
      />
  </target>

  <target name="xdoc" depends="xdoc.fetch-stylesheet"
          description="Generates HTML documentation from XML source">
    <mkdir      dir="${dist.home}"/>
    <mkdir      dir="${dist.home}/docs"/>

      <taskdef name="anakia" classname="org.apache.velocity.anakia.AnakiaTask">
          <classpath location="${velocity.jar}"/>
          <classpath location="${jdom.jar}"/>
          <classpath location="${xerces.jar}"/>
          <classpath location="${commons-collections.jar}"/>
          <classpath location="${logkit.jar}"/>
      </taskdef>

      <echo>
       #######################################################
       #
       #  Now using Anakia to transform our XML documentation
       #  to HTML.
       #
       #######################################################
       </echo>

      <anakia basedir="${docs.src}" destdir="${docs.dest}/"
           extension=".html" style="./site.vsl"
           projectFile="stylesheets/project.xml"
           excludes="**/stylesheets/** empty.xml"
           includes="**/*.xml"
           lastModifiedCheck="true"
           templatePath="xdocs/stylesheets">
      </anakia>

      <copy todir="${docs.dest}/images" filtering="no">
          <fileset dir="${docs.src}/images">
              <include name="**/*.gif"/>
              <include name="**/*.jpeg"/>
              <include name="**/*.jpg"/>
          </fileset>
      </copy>
  </target>
</project>
