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


<!--
        "Digester" component of the Jakarta Commons Subproject
        $Id: build.xml,v 1.20 2002/01/31 20:25:11 rdonkin Exp $
-->


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


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


<!-- ========== External Dependencies ===================================== -->


  <!-- The directories corresponding to your necessary dependencies -->
  <property name="jaxp.home"               value="/usr/local/jaxp1.1"/>
  <property name="junit.home"              value="/usr/local/junit3.7"/>
  <property name="commons.home"            value=".."/>
  <property name="beanutils.home"          value="${commons.home}/beanutils"/>
  <property name="collections.home"        value="${commons.home}/collections"/>
  <property name="logging.home"            value="${commons.home}/logging"/>


<!-- ========== Derived Values ============================================ -->


  <!-- The locations of necessary jar files -->
  <property name="jaxp.jaxp.jar"           value="${jaxp.home}/jaxp.jar"/>
  <property name="jaxp.parser.jar"         value="${jaxp.home}/crimson.jar"/>
  <property name="junit.jar"               value="${junit.home}/junit.jar"/>
  <property name="commons-beanutils.api"   value="${beanutils.home}/dist/docs/api"/>
  <property name="commons-beanutils.jar"   value="${beanutils.home}/dist/commons-beanutils.jar"/>
  <property name="commons-collections.api" value="${collections.home}/dist/docs/api"/>
  <property name="commons-collections.jar" value="${collections.home}/dist/commons-collections.jar"/>
  <property name="commons-logging.api"     value="${logging.home}/dist/docs/api"/>
  <property name="commons-logging.jar"     value="${logging.home}/dist/commons-logging.jar"/>


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


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

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

  <!-- The title of this component -->
  <property name="component.title"         value="Digester - XML to Java Object Configuration"/>

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

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


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

  <!-- 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.parser.jar}"/>
    <pathelement location="${commons-beanutils.jar}"/>
    <pathelement location="${commons-collections.jar}"/>
    <pathelement location="${commons-logging.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="${junit.jar}"/>
    <pathelement location="${jaxp.jaxp.jar}"/>
    <pathelement location="${jaxp.parser.jar}"/>
    <pathelement location="${commons-beanutils.jar}"/>
    <pathelement location="${commons-collections.jar}"/>
    <pathelement location="${commons-logging.jar}"/>
  </path>

  <!-- Construct RSSDigester test classpath -->
  <path id="rss.classpath">
    <pathelement location="${build.home}/classes"/>
    <pathelement location="${jaxp.jaxp.jar}"/>
    <pathelement location="${jaxp.parser.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="init"
   description="Initialize and evaluate conditionals">
    <echo message="-------- ${component.name} ${component.version} --------"/>
    <filter  token="name"                  value="${component.package}"/>
    <filter  token="version"               value="${component.version}"/>
  </target>


  <target name="prepare" depends="init"
   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}"
                destdir="${dist.home}/docs/api"
           packagenames="org.apache.commons.*"
                 author="true"
                private="true"
                version="true"
               doctitle="&lt;h1&gt;${component.title}&lt;/h1&gt;"
            windowtitle="${component.title} (Version ${component.version})"
                 bottom="Copyright (c) 2001-2002 - Apache Software Foundation">
      <link     offline="true" packagelistLoc="${commons-beanutils.api}"
                   href="http://jakarta.apache.org/commons/beanutils/api/"/>
      <link     offline="true" packagelistLoc="${commons-collections.api}"
                   href="http://jakarta.apache.org/commons/collections/api/"/>
      <link     offline="true" packagelistLoc="${commons-logging.api}"
                   href="http://jakarta.apache.org/commons/logging/api/"/>
      <classpath  refid="compile.classpath"/>
    </javadoc>
  </target>


  <target name="dist" depends="compile,javadoc"
   description="Create binary distribution">
    <mkdir      dir="${dist.home}"/>
    <copy      file="../LICENSE"
              todir="${dist.home}"/>
    <mkdir      dir="${build.home}/classes/META-INF"/>
    <copy      file="../LICENSE"
             tofile="${build.home}/classes/META-INF/LICENSE.txt"/>
    <jar    jarfile="${dist.home}/commons-${component.name}.jar"
            basedir="${build.home}/classes"
           manifest="${build.home}/conf/MANIFEST.MF"/>
  </target>


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


  <target name="test" depends="compile.tests,
                               test.digester,
                               test.matching,
                               test.matching.extended,
                               test.rule,
                               test.bpsr,
                               test.xmlrules
                              "
   description="Run all unit test cases">
  </target>


  <target name="test.xmlrules" depends="compile.tests"
   description="Run tests for loading Digester rules from XML ...">
    <echo message="Running xmlrules tests ..."/>
    <java classname="${test.runner}" fork="yes"
        failonerror="${test.failonerror}">
      <arg value="org.apache.commons.digester.xmlrules.DigesterLoaderTestSuite"/>
      <classpath refid="test.classpath"/>
    </java>
  </target>


  <target name="test.bpsr" depends="compile.tests"
   description="Run tests for BeanPropertySetterRule ...">
    <echo message="Running BeanPropertySetterRule tests ..."/>
    <java classname="${test.runner}" fork="yes"
        failonerror="${test.failonerror}">
      <arg value="org.apache.commons.digester.BeanPropertySetterRuleTestCase"/>
      <classpath refid="test.classpath"/>
    </java>
  </target>


  <target name="test.digester" depends="compile.tests"
   description="Run basic Digester unit tests ...">
    <echo message="Running basic Digester tests ..."/>
    <java classname="${test.runner}" fork="yes"
        failonerror="${test.failonerror}">
      <arg value="org.apache.commons.digester.DigesterTestCase"/>
      <classpath refid="test.classpath"/>
    </java>
  </target>


  <target name="test.matching" depends="compile.tests"
   description="Run rule Digester test cases">
    <echo message="Running rule Digester tests ..."/>
    <java classname="${test.runner}" fork="yes"
        failonerror="${test.failonerror}">
      <arg value="org.apache.commons.digester.RulesBaseTestCase"/>
      <classpath refid="test.classpath"/>
    </java>
  </target>


  <target name="test.matching.extended" depends="compile.tests"
   description="Run rule Digester extended test cases">
    <echo message="Running rule Digester tests for ExtendedBaseRules ..."/>
    <java classname="${test.runner}" fork="yes"
        failonerror="${test.failonerror}">
      <arg value="org.apache.commons.digester.EBRTestCase"/>
      <classpath refid="test.classpath"/>
    </java>
  </target>


  <target name="test.rss" depends="compile.tests"
   description="Run RSSDigester test cases">
    <echo message="Running RSSDigester tests ..."/>
    <java classname="org.apache.commons.digester.rss.RSSDigester"
               fork="yes">
      <classpath refid="rss.classpath"/>
    </java>
  </target>


  <target name="test.rule" depends="compile.tests"
   description="Run rule Digester unit tests ...">
    <echo message="Running Rule tests ..."/>
    <java classname="${test.runner}" fork="yes"
        failonerror="${test.failonerror}">
      <arg value="org.apache.commons.digester.RuleTestCase"/>
      <classpath refid="test.classpath"/>
    </java>
  </target>



</project>
