<?xml version="1.0" encoding="UTF-8"?>
<!--
    Copyright 2005 The Apache Software Foundation

    Licensed 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 default="default"
    xmlns:j="jelly:core"
    xmlns:ant="jelly:ant"
    xmlns:maven="jelly:maven"
    >

    <!-- ==================== -->
    <!-- Default Global Goals -->
    <!-- ==================== -->

    <goal name="default">
        <attainGoal name="jar:install-snapshot"/>
    </goal>

    <goal name="build">
        <attainGoal name="default"/>
    </goal>

    <goal name="rebuild">
        <attainGoal name="clean"/>
        <attainGoal name="build"/>
    </goal>

    <postGoal name="test:prepare-filesystem">
        <mkdir dir="${jdo.testdir}"/>
    </postGoal>

    <preGoal name="test:test">
        <attainGoal name="pcclasses"/>
        <attainGoal name="testjar.build"/>
        <attainGoal name="fsuid2.build"/>
    </preGoal>

    <postGoal name="clean:clean">
        <delete file="${jdo.pcclasses.jarfile}"/>
        <delete file="${jdo.testclasses.jarfile}"/>
        <ant dir="${basedir}/test/fsuid2" target="clean"/>
    </postGoal>

    <goal name="clobber" prereqs="clean">
        <delete>
            <fileset dir="." defaultexcludes="no" includes="**/*~"/>
        </delete>
        <ant dir="${basedir}/test/fsuid2" target="clobber"/>
    </goal>

    <!-- ================== -->
    <!-- Running test cases -->
    <!-- ================== -->

    <goal name="runtest">
        <attainGoal name="runtest.list"/>
        <attainGoal name="runtest.security"/>
        <attainGoal name="runtest.multiJVMtests"/>
    </goal>

    <!-- Runs all tests from the specified test list in batch mode. -->
    <goal name="runtest.list" prereqs="pcclasses, testjar.build">
        <ant target="runtest.list"
             dir="${basedir}/test" antfile="runtest.xml">
            <property name="testlist" value="${jdo.testlist}"/>
            <property name="jdoapi" value="${jdo.jdoapi.jarfile}"/>
            <property name="jdobtree" value="${jdo.jdobtree.jarfile}"/>
            <property name="jdocore" value="${jdo.jdocore.jarfile}"/>
            <property name="jdoruntime" value="${jdo.jdoruntime.jarfile}"/>
            <property name="jdoquery" value="${jdo.jdoquery.jarfile}"/>
            <property name="jdofostore" value="${maven.build.dir}/classes"/>
            <property name="jdoritests" value="${jdo.testclasses.jarfile}"/>
            <property name="pcclasses" value="${jdo.pcclasses.jarfile}"/>
            <property name="testdir" value="${jdo.testdir}"/>
            <property name="fsuidjar" value="${jdo.fsuid.jarfile}"/>
            <property name="junit" value="${junit.jarfile}"/>
            <property name="jta" value="${jta.jarfile}"/>
            <property name="antlr" value="${antlr.jarfile}"/>
            <property name="logging" value="${logging.jarfile}"/>
            <property name="jndi" value="${jndi}"/>
            <property name="xmlparser" value="${xmlparser}"/>
            <property name="status.verbose" value="${status.verbose}"/>
        </ant>
    </goal>

    <goal name="runtest.security" prereqs="pcclasses, testjar.build">
        <ant target="runtest.security"
             dir="${basedir}/test" antfile="runtest.xml">
            <property name="policyfile" value="${jdo.security.policy}"/>
            <property name="testlist" value="${jdo.testlist}"/>
            <property name="jdoapi" value="${jdo.jdoapi.jarfile}"/>
            <property name="jdobtree" value="${jdo.jdobtree.jarfile}"/>
            <property name="jdocore" value="${jdo.jdocore.jarfile}"/>
            <property name="jdoruntime" value="${jdo.jdoruntime.jarfile}"/>
            <property name="jdoquery" value="${jdo.jdoquery.jarfile}"/>
            <property name="jdofostore" value="${maven.build.dir}/classes"/>
            <property name="jdoritests" value="${jdo.testclasses.jarfile}"/>
            <property name="pcclasses" value="${jdo.pcclasses.jarfile}"/>
            <property name="testdir" value="${jdo.testdir}"/>
            <property name="fsuidjar" value="${jdo.fsuid.jarfile}"/>
            <property name="junit" value="${junit.jarfile}"/>
            <property name="jta" value="${jta.jarfile}"/>
            <property name="antlr" value="${antlr.jarfile}"/>
            <property name="logging" value="${logging.jarfile}"/>
            <property name="jndi" value="${jndi}"/>
            <property name="xmlparser" value="${xmlparser}"/>
            <property name="status.verbose" value="${status.verbose}"/>
        </ant>
    </goal>

    <!-- Runs tests that cannot be run from a test list 
         (e.g. they require starting a sequence of test programs 
          where each test programs needs to run in its own JVM.
    -->
    <goal name="runtest.multiJVMtests" prereqs="pcclasses, testjar.build">
        <ant target="runtest.multiJVMtests" 
             dir="${basedir}/test" antfile="runtest.xml">
            <property name="jdoapi" value="${jdo.jdoapi.jarfile}"/>
            <property name="jdobtree" value="${jdo.jdobtree.jarfile}"/>
            <property name="jdocore" value="${jdo.jdocore.jarfile}"/>
            <property name="jdoruntime" value="${jdo.jdoruntime.jarfile}"/>
            <property name="jdoquery" value="${jdo.jdoquery.jarfile}"/>
            <property name="jdofostore" value="${maven.build.dir}/classes"/>
            <property name="jdoenhancer" value="${jdo.jdoenhancer.jarfile}"/>
            <property name="jdoritests" value="${jdo.testclasses.jarfile}"/>
            <property name="pcclasses" value="${jdo.pcclasses.jarfile}"/>
            <property name="testdir" value="${jdo.testdir}"/>
            <property name="fsuidjar" value="${jdo.fsuid.jarfile}"/>
            <property name="junit" value="${junit.jarfile}"/>
            <property name="jta" value="${jta.jarfile}"/>
            <property name="antlr" value="${antlr.jarfile}"/>
            <property name="logging" value="${logging.jarfile}"/>
            <property name="jndi" value="${jndi}"/>
            <property name="xmlparser" value="${xmlparser}"/>
            <property name="status.verbose" value="${status.verbose}"/>
        </ant>
    </goal>

    <!-- ================ -->
    <!-- Enhancer support -->
    <!-- ================ -->

    <preGoal name="pcclasses">
        <condition property="enhancement.required">
            <not>
                <uptodate targetfile="${jdo.pcclasses.jarfile}">
                    <srcfiles dir="${basedir}/test/jdo"
                              includes="org/apache/jdo/pc/**/*.jdo, 
                                        org/apache/jdo/pc/**/*.jdoproperties"/>
                    <srcfiles dir="${basedir}/test/java"
                              includes="org/apache/jdo/pc/**/*.java,
                                        org/apache/jdo/util/Util.java,
                                        org/apache/jdo/test/Test_PCDerived.java"/>
                </uptodate>
            </not>
        </condition>
    </preGoal>

    <goal name="pcclasses">
        <j:if test="${enhancement.required}">
            <attainGoal name="copymetadata"/>
            <attainGoal name="checkmetadata"/>
            <attainGoal name="enhance"/>
            <attainGoal name="augmentationtest"/>
            <attainGoal name="annotationtest"/>
	    <attainGoal name="pcclassesjar.build"/>
        </j:if>
    </goal>

    <goal name="copymetadata"
          description="Copies JDO metadata files to target/test-classes">
        <copy todir="${jdo.testclasses.dir}">
            <fileset dir="${basedir}/test/jdo" includes="**/*.jdo"/>
        </copy>
        <mkdir dir="${jdo.enhancer.enhanced.dir}"/>
        <copy todir="${jdo.enhancer.enhanced.dir}">
            <fileset dir="${basedir}/test/jdo" includes="**/*.jdo"/>
        </copy>
    </goal>

    <goal name="checkmetadata"
          description="Check existence of XML metadata for pc classes">
        <echo>Check existence of XML metadata for pc classes</echo>
        <java fork="yes" failonerror="yes" 
              classname="${jdo.xmlexists.main}" 
              classpath="${jdo.xmlexists.classpath}">
            <arg line="${jdo.pcclasses.pc.classes}"/>
            <arg line="${jdo.pcclasses.empdept.classes}"/>
            <arg line="${jdo.pcclasses.xempdept.classes}"/>
            <arg line="${jdo.pcclasses.appid.classes}"/>
            <arg line="${jdo.pcclasses.serializable.classes}"/>
        </java>
    </goal>

    <goal name="enhance"
          description="Enhance persistence-capable and persistence-aware classes">
        <echo>Enhance persistence-capable and persistence-aware classes</echo>
        <java failonerror="true" fork="true" 
              classname="${jdo.enhancer.main}" 
              classpath="${jdo.enhancer.classpath}">
            <arg line="${jdo.enhancer.options}"/>
            <arg line="${jdo.pcclasses.pc.files}"/>
            <arg line="${jdo.pcclasses.empdept.files}"/>
            <arg line="${jdo.pcclasses.xempdept.files}"/>
            <arg line="${jdo.pcclasses.appid.files}"/>
            <arg line="${jdo.pcclasses.serializable.files}"/>
            <arg line="${jdo.pawareclasses.test.files}"/>
        </java>
   </goal>

    <goal name="augmentationtest">
        <java fork="yes" failonerror="yes" 
              classname="${jdo.augmentationtest.main}" 
              classpath="${jdo.enhancer.classpath}">
            <arg line="${jdo.augmentationtest.options}"/>
            <arg line="--properties ${basedir}/test/jdo/org/apache/jdo/pc/pc.jdoproperties"/>
            <arg line="${jdo.pcclasses.pc.classes}"/>
        </java>
        <java fork="yes" failonerror="yes"
              classname="${jdo.augmentationtest.main}" 
              classpath="${jdo.enhancer.classpath}">
            <arg line="${jdo.augmentationtest.options}"/>
            <arg line="--properties ${basedir}/test/jdo/org/apache/jdo/pc/empdept/empdept.jdoproperties"/>
            <arg line="${jdo.pcclasses.empdept.classes}"/>
        </java>
        <java fork="yes" failonerror="yes"
              classname="${jdo.augmentationtest.main}" 
              classpath="${jdo.enhancer.classpath}">
            <arg line="${jdo.augmentationtest.options}"/>
            <arg line=" --properties ${basedir}/test/jdo/org/apache/jdo/pc/xempdept/xempdept.jdoproperties"/>
            <arg line="${jdo.pcclasses.xempdept.classes}"/>
        </java>
        <java fork="yes" failonerror="yes"
              classname="${jdo.augmentationtest.main}" 
              classpath="${jdo.enhancer.classpath}">
            <arg line="${jdo.augmentationtest.options}"/>
            <arg line=" --properties ${basedir}/test/jdo/org/apache/jdo/pc/appid/appid.jdoproperties"/>
            <arg line=" ${jdo.pcclasses.appid.classes}"/>
        </java>
        <java fork="yes" failonerror="yes"
              classname="${jdo.augmentationtest.main}" 
              classpath="${jdo.enhancer.classpath}">
            <arg line="${jdo.augmentationtest.options}"/>
            <arg line="--properties ${basedir}/test/jdo/org/apache/jdo/pc/serializable/serializable.jdoproperties"/>
            <arg line="${jdo.pcclasses.serializable.classes}"/>
        </java>
    </goal>

    <goal name="annotationtest">
        <java fork="yes" failonerror="yes"
              classname="${jdo.annotationtest.main}" 
              classpath="${jdo.enhancer.classpath}">
            <arg line="--properties ${basedir}/test/jdo/org/apache/jdo/pc/pc.jdoproperties"/>
            <arg line="${jdo.pcclasses.pc.files}"/>
            <arg line="${jdo.pawareclasses.test.files}"/>
        </java>
        <java fork="yes" failonerror="yes"
              classname="${jdo.annotationtest.main}"
              classpath="${jdo.enhancer.classpath}">
            <arg line="--properties ${basedir}/test/jdo/org/apache/jdo/pc/empdept/empdept.jdoproperties"/>
            <arg line="${jdo.pcclasses.empdept.files}"/>
        </java>
        <java fork="yes" failonerror="yes"
              classname="${jdo.annotationtest.main}" 
              classpath="${jdo.enhancer.classpath}">
            <arg line="--properties ${basedir}/test/jdo/org/apache/jdo/pc/xempdept/xempdept.jdoproperties"/>
            <arg line="${jdo.pcclasses.xempdept.files}"/>
        </java>
        <java fork="yes" failonerror="yes"
              classname="${jdo.annotationtest.main}" 
              classpath="${jdo.enhancer.classpath}">
            <arg line="--properties ${basedir}/test/jdo/org/apache/jdo/pc/appid/appid.jdoproperties"/>
            <arg line=" ${jdo.pcclasses.appid.files}"/>
        </java>
        <java fork="yes" failonerror="yes"
              classname="${jdo.annotationtest.main}" 
              classpath="${jdo.enhancer.classpath}">
            <arg line="--properties ${basedir}/test/jdo/org/apache/jdo/pc/serializable/serializable.jdoproperties"/>
            <arg line="${jdo.pcclasses.serializable.files}"/>
        </java>
    </goal>

    <goal name="pcclassesjar.build">
        <delete file="${jdo.pcclasses.jarfile}"/>
        <jar jarfile="${jdo.pcclasses.jarfile}">
            <fileset dir="${jdo.testclasses.dir}" 
                     includes="org/apache/jdo/util/Util.class, 
                               org/apache/jdo/pc/**/*.class, 
                               org/apache/jdo/pc/**/*.jdo"/>
        </jar>
    </goal>

    <!-- ==== -->
    <!-- Misc -->
    <!-- ==== -->

    <goal name="testjar.build">
        <delete file="${jdo.testclasses.jarfile}"/>
        <jar jarfile="${jdo.testclasses.jarfile}">
            <fileset dir="${jdo.testclasses.dir}" 
                     includes="org/apache/jdo/test/**/*.class, 
                               org/apache/jdo/impl/fostore/*.class"/> 
            <fileset dir="${basedir}/test/conf"
                     includes="*properties"/>
        </jar>
    </goal>

    <goal name="fsuid2.build">
        <ant dir="${basedir}/test/fsuid2" target="build">
            <property name="jdoapi" value="${jdo.jdoapi.jarfile}"/>
            <property name="jdocore" value="${jdo.jdocore.jarfile}"/>
            <property name="jdoenhancer" value="${jdo.jdoenhancer.jarfile}"/>
            <property name="logging" value="${logging.jarfile}"/>
            <property name="xerces" value="${xerces.jarfile}"/>
            <property name="fsuid2.jarfile" value="${jdo.fsuid.jarfile}"/>
        </ant>
    </goal>

</project>
