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


<!--
        "JXPath" component of the Jakarta Commons Subproject
        $Id: build.xml,v 1.9 2002/06/10 01:58:19 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.0-beta2"/>

  <!-- 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="${servlet.jar}"/>
    <pathelement location="${junit.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}"/>
  </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}"/>
  </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/api"/>
    <javadoc sourcepath="${source.home}"
           classpathref="compile.classpath"
                destdir="${dist.home}/docs/api"
           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" description="Build jar">
    <mkdir      dir="${dist.home}"/>
    <copy      file="LICENSE"
             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"
              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.JXPathTestCase"/>
      <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>
