<?xml version="1.0" encoding="UTF-8"?>
<!--
    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
    xmlns:j="jelly:core"
    xmlns:ant="jelly:ant"
    xmlns:maven="jelly:maven"
    xmlns:u="jelly:util">

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

    <goal name="help">
        <echo>Custom goals for this project are:</echo>
        <echo>  installSchema - installs the database schema</echo>
        <echo></echo>
        <echo>  enhance.iut - enhances persistence capable classes with the implementation </echo>
        <echo>    under test enhancer if enhancement is not up to date</echo>
        <echo>  enhance.jdori - enhances persistence capable classes with the JDO Reference </echo>
        <echo>    Implementation enhancer if enhancement is not up to date</echo>
        <echo></echo>
        <echo>  runtck.iut - runs the TCK on the implementation under test</echo>
        <echo>  runtck.jdori - runs the TCK on the JDO Reference Implementation</echo>
        <echo></echo>
        <echo>  debugtck.jdori - waits for a debugger to attach and then runs the TCK on the JDO RI</echo>
        <echo>  debugtck.iut - waits for a debugger to attach and then runs the TCK on the </echo>
        <echo>    implementation under test</echo>
        <echo></echo>
        <echo></echo>
        <echo>To run a single test, create a .conf file (copy an existing file) and edit the </echo>
        <echo>jdo.tck.classes property to include the name of the test class.  </echo>
        <echo></echo>
        <echo></echo>
        <echo>Options for this project are:</echo>
        <echo>  -Djdo.tck.cfglist=xxx - a list of configuration files (must be in src/conf)</echo>
        <echo>  -Djdo.tck.dblist=xxx - a list of databases</echo>
        <echo>  -Djdo.tck.identitytypes=xxx - a list of identity types (applicationidentity, datastoreidentity)</echo>
        <echo>  -Djdo.tck.cleanupaftertest=xxx - true/false. Setting it to false will retain data </echo>
        <echo>    in database after test. This will allow inspection of data after test is run. Default is true</echo>
        <echo>  -Djdo.tck.debug.port=##### - the port number the JVM should listen for a </echo>
        <echo>    debugger on (default 8787)</echo>
        <echo>  -Djdo.tck.debug.jvmargs=xxx - the "-Xdebug ..." arguments in the event you want to </echo>
        <echo>    supply your own debug directives</echo>
        <echo></echo>
        <echo>Examples:</echo>
        <echo>  maven -Djdo.tck.identitytypes=datastoreidentity installSchema</echo>
        <echo>      Installs the database schema for datastore identity for all supported databases</echo>
        <echo></echo>
        <echo>  maven -Djdo.tck.cfglist="alltests.conf cfg1.conf" runtck.jdori</echo>
        <echo>      Runs the test configurations specified in alltests.conf and cfg1.conf on the JDORI, </echo>
        <echo>    using all supported identity types and databases. </echo>
        <echo></echo>
        <echo>  maven -Djdo.tck.cfglist=detach.conf debugtck.jdori</echo>
        <echo>      Runs the test detach.conf configuration, waiting for a debugger to attach on the </echo>
        <echo>    default port</echo>
        <echo></echo>
        <echo>  maven -Djdo.tck.cfglist=detach.conf -Djdo.tck.debug.port=9343 debugtck.jdori</echo>
        <echo>      Runs the test detach.conf configuration, waiting for a debugger to attach on port 9343</echo>
        <echo></echo>
        <echo>Note:</echo>
        <echo>  By default, the database schema is NOT installed when the custom goals </echo>
        <echo>    runtck.iut and runtck.jdori are run.</echo>
        <echo>  maven build installs the database schema and runs the TCK on the JDO </echo>
        <echo>    Reference Implementation.</echo>
        <echo>  Enhancement is always done before running the TCK when the enhanced classes are not up to date.</echo>
    </goal>

    <goal name="build">
        <attainGoal name="jar:install"/>
        <attainGoal name="setProps"/>
        <attainGoal name="privateInstallSchema"/>
        <attainGoal name="privateRuntck.jdori"/>
    </goal>

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

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

    <!-- ================== -->
    <!-- Set properties     -->
    <!-- ================== -->

    <goal name="setProps">
        <echo>setProps:</echo>

        <j:set var="zeroval" value="0"/>
        <j:set var="spaceval" value=" "/>
        <j:set var="nullval" value=""/>
        <j:set var="true" value="true"/>
        <j:set var="false" value="false"/>

        <j:set var="cfglist" value="${jdo.tck.cfglist}"/>
        <j:if test="${cfglist == null}">
            <u:properties file="${basedir}/src/conf/configurations.list"/>
        </j:if>

        <echo>Configurations for this run are "${jdo.tck.cfglist}". To override this, use -Djdo.tck.cfglist=xxx on the maven command line.</echo>
        <u:tokenize var="jdo.tck.cfglist" delim=" ,;">
            ${jdo.tck.cfglist}
        </u:tokenize>

        <echo>Databases for this run are "${jdo.tck.dblist}". To override this, use -Djdo.tck.dblist=xxx on the maven command line.</echo>
        <u:tokenize var="jdo.tck.dblist" delim=" ,;">
            ${jdo.tck.dblist}
        </u:tokenize>

        <echo>Identity types for this run are "${jdo.tck.identitytypes}". To override this, use -Djdo.tck.identitytypes=xxx on the maven command line.</echo>
        <u:tokenize var="jdo.tck.identitytypes" delim=" ,;">
            ${jdo.tck.identitytypes}
        </u:tokenize>

    </goal>

    <goal name="exclude">

        <j:new var="testclasses" className="java.util.Vector"/>
        <u:tokenize var="jdo.tck.classes" delim=" ,;">
            ${jdo.tck.classes}
        </u:tokenize>
        <j:forEach var="class" items="${jdo.tck.classes}">
            <j:set var="foo" value="${testclasses.add(class)}"/>
        </j:forEach>

        <u:properties file="${jdo.tck.excludelist}"/>
        <u:tokenize var="jdo.tck.exclude" delim=" ,;">
            ${jdo.tck.exclude}
        </u:tokenize>
        <j:forEach var="excludedclass" items="${jdo.tck.exclude}">
            <j:set var="foo" value="${testclasses.remove(excludedclass)}"/>
        </j:forEach>

        <j:new var="strbuf" className="java.lang.StringBuffer"/>
        <j:forEach var="class" items="${testclasses}">
            <j:set var="foo" value="${strbuf.append(class)}"/>
            <j:set var="foo" value="${strbuf.append(spaceval)}"/>
        </j:forEach>
        <j:set var="jdo.tck.classes" value="${strbuf}"/>

    </goal>

    <goal name="setDebugProps">
        <j:set var="debugJvmargs" value="${jdo.tck.debug.jvmargs}" defaultValue=""/>
        <j:if test="${empty debugJvmargs}">
            <j:set var="debugPort" value="${jdo.tck.debug.port}" defaultValue=""/>
            <j:if test="${empty debugPort}">
                <property name="jdo.tck.debug.port" value="8787"/>
            </j:if>

            <property name="jdo.tck.debug.jvmargs"
                value="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=${jdo.tck.debug.port}"
            />
        </j:if>

        <echo>Using debug arguments:</echo>
        <echo>${jdo.tck.debug.jvmargs}</echo>
    </goal>

    <!-- ================== -->
    <!-- Install schema     -->
    <!-- ================== -->

    <goal name="installSchema" prereqs="setProps">
        <attainGoal name="privateInstallSchema"/>
    </goal>

    <goal name="privateInstallSchema">
        <mkdir dir="${jdo.tck.log.directory.database}"/>
        <!-- load mappings into a HashSet to unique them -->
        <j:new var="uniqueMappings" className="java.util.HashSet"/>
        <j:forEach var="cfg" items="${jdo.tck.cfglist}">
            <u:properties file="${basedir}/src/conf/${cfg}"/>
            <j:set var="mapping" value="${jdo.tck.mapping}"/>
            <j:set var="foo">
                <j:expr value="${uniqueMappings.add(mapping)}"/>
            </j:set>
        </j:forEach>

        <j:forEach var="jdo.tck.database" items="${jdo.tck.dblist}">
            <j:forEach var="jdo.tck.identitytype" items="${jdo.tck.identitytypes}">
                <j:forEach var="nextMapping"
                           items="${uniqueMappings.iterator()}">
                    <attainGoal name="doInstallSchema"/>
                </j:forEach>
            </j:forEach>
        </j:forEach>
    </goal>

    <goal name="doInstallSchema">
        <!-- Set schema name from mapping designator -->
        <j:choose>
            <j:when test="${nextMapping == zeroval}">
                <j:set var="jdo.tck.schema" value="schema.sql"/>
            </j:when>
            <j:otherwise>
                <j:set var="jdo.tck.schema" value="schema${nextMapping}.sql"/>
            </j:otherwise>
        </j:choose>

        <mkdir dir="${jdo.tck.testdir}/database/${jdo.tck.database}"/>
        <copy todir="${jdo.tck.testdir}/database/${jdo.tck.database}">
            <fileset dir="${basedir}/src/conf">
               <include name="${jdo.tck.database}.properties"/>
            </fileset>
        </copy>

        <echo>Install schema: ${jdo.tck.schema}
              for db ${jdo.tck.database} id ${jdo.tck.identitytype}</echo>
        <java classname="org.apache.derby.tools.ij" fork="true">
              <classpath>
                  <pathelement location="${derbytools.jarfile}"/>
                  <pathelement location="${derby.jarfile}"/>
              </classpath>
              <arg value="${basedir}/src/sql/${jdo.tck.database}/${jdo.tck.identitytype}/${jdo.tck.schema}"/>
              <sysproperty key="derby.system.home"
                      value="${jdo.tck.testdir}/database/${jdo.tck.database}"/>
        </java>
    </goal>

    <!-- ================== -->
    <!-- Run test cases     -->
    <!-- ================== -->

    <goal name="debugtck.iut">
        <attainGoal name="setDebugProps"/>
        <attainGoal name="runtck.iut"/>
    </goal>

    <goal name="runtck.iut" prereqs="setProps">
        <mkdir dir="${jdo.tck.log.directory.database}"/>
        <attainGoal name="privateRuntck.iut"/>
    </goal>

    <goal name="privateRuntck.iut"
          prereqs="java:compile, copyprops, doEnhance.iut">
        <!-- Run tests for all databases, identity types, and configurations -->
        <tstamp>
            <format property="timestamp" pattern="yyyyMMdd-HHmmss"/>
        </tstamp>
        <mkdir dir="${jdo.tck.log.directory}/${timestamp}/configuration"/>
        <copy tofile="${jdo.tck.testclasses.dir}/META-INF/jdoconfig.xml"
            file="${basedir}/src/conf/iut-jdoconfig.xml"/>
        <echo>Run all configurations on iut</echo>
        <j:set var="runOnceTestRanOnce" value="false"/>
        <j:forEach var="jdo.tck.database" items="${jdo.tck.dblist}">
            <j:forEach var="jdo.tck.identitytype" items="${jdo.tck.identitytypes}">
                <j:forEach var="jdo.tck.cfg" items="${jdo.tck.cfglist}">
                    <j:set var="runOnce" value="false"/>
                    <u:properties file="${basedir}/src/conf/${jdo.tck.cfg}"/>
                    <j:if test="${runOnce == false || (runOnce == true &amp;&amp; runOnceTestRanOnce == false)}">
                        <attainGoal name="exclude"/>
                        <j:new var="schemaname" className="java.lang.String"/>
                        <j:set var="id" value="${jdo.tck.identitytype}"/>
                        <j:set var="mapping" value="${jdo.tck.mapping}"/>
                        <j:if test="${mapping == zeroval}">
                           <j:set var="jdo.tck.mapping" value=""/>
                        </j:if>
                        <j:set var="schemaname">
                            <j:expr value="${schemaname.concat(id)}"/>
                            <j:expr value="${schemaname.concat(mapping)}"/>
                        </j:set>
                        <attainGoal name="doRuntck.iut"/>
                        <j:if test="${runOnce == true}">
                            <j:set var="runOnceTestRanOnce" value="true"/>
                        </j:if>
                    </j:if>
                </j:forEach>
            </j:forEach>
        </j:forEach>
        <attainGoal name="result"/>
    </goal>

    <goal name="debugtck.jdori">
        <attainGoal name="setDebugProps"/>
        <attainGoal name="runtck.jdori"/>
    </goal>

    <goal name="runtck.jdori" prereqs="setProps">
        <mkdir dir="${jdo.tck.log.directory.database}"/>
        <attainGoal name="privateRuntck.jdori"/>
    </goal>

    <goal name="privateRuntck.jdori"
          prereqs="java:compile, copyprops, doEnhance.jdori">
        <!-- Run tests for all databases, identity types, and configurations -->
        <tstamp>
            <format property="timestamp" pattern="yyyyMMdd-HHmmss"/>
        </tstamp>
        <mkdir dir="${jdo.tck.log.directory}/${timestamp}/configuration"/>
        <copy tofile="${jdo.tck.testclasses.dir}/META-INF/jdoconfig.xml"
            file="${basedir}/src/conf/jdori-jdoconfig.xml"/>

        <echo>Run all configurations on jdori</echo>
        <j:set var="runOnceTestRanOnce" value="false"/>
        <j:forEach var="jdo.tck.database" items="${jdo.tck.dblist}">
            <j:forEach var="jdo.tck.identitytype" items="${jdo.tck.identitytypes}">
                <j:forEach var="jdo.tck.cfg" items="${jdo.tck.cfglist}">
                    <j:set var="runOnce" value="false"/>
                    <u:properties file="${basedir}/src/conf/${jdo.tck.cfg}"/>
                    <j:if test="${runOnce == false || (runOnce == true &amp;&amp; runOnceTestRanOnce == false)}">
                        <attainGoal name="exclude"/>
                        <j:new var="schemaname" className="java.lang.String"/>
                        <j:set var="id" value="${jdo.tck.identitytype}"/>
                        <j:set var="mapping" value="${jdo.tck.mapping}"/>
                        <j:if test="${mapping == zeroval}">
                           <j:set var="jdo.tck.mapping" value=""/>
                        </j:if>
                        <j:set var="schemaname">
                            <j:expr value="${schemaname.concat(id)}"/>
                            <j:expr value="${schemaname.concat(mapping)}"/>
                        </j:set>
                        <attainGoal name="doRuntck.jdori"/>
                        <j:if test="${runOnce == true}">
                            <j:set var="runOnceTestRanOnce" value="true"/>
                        </j:if>
                    </j:if>
                </j:forEach>
            </j:forEach>
        </j:forEach>
        <attainGoal name="result"/>
    </goal>

    <goal name="doRuntck.iut">
        <echo>Run JDO TCK on the IUT </echo>
        <path id="this.iut.classpath">
            <pathelement location="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}.jar"/>
            <path refid="iut.classpath"/>
        </path>
         <u:loadText file="${basedir}/src/conf/${iut.pmf.properties}"
                    var="PMFProps"/>
        <j:file name="${jdo.tck.testclasses.dir}/${iut.pmf.properties}"
                omitXmlDeclaration="true">
            ${PMFProps}
            ### Properties below added by maven goal doRuntck.jdori
            <!-- javax.jdo.option.Mapping=${jdo.tck.database}${jdo.tck.mapping}-->
            javax.jdo.option.Mapping=standard${jdo.tck.mapping}
            javax.jdo.mapping.Schema=${schemaname}
        </j:file>
        

        <j:set var="debugJvmargs" value="${jdo.tck.debug.jvmargs}"/>
        <j:if test="${not empty debugJvmargs}">
            <echo>JVM will wait until debugger attaches on port ${jdo.tck.debug.port}...</echo>
        </j:if>
        
        <echo>Starting configuration="${jdo.tck.cfg}" with database="${jdo.tck.database}" identitytype="${jdo.tck.identitytype}" mapping="${jdo.tck.mapping}".</echo>
        <java fork="yes" dir="${jdo.tck.testdir}"
              classname="${jdo.tck.testrunnerclass}">
            <classpath refid="this.iut.classpath"/>
            <sysproperty key="ResultPrinterClass"
                         value="${jdo.tck.resultprinterclass}"/>
            <sysproperty key="verbose" value="${verbose}"/>
            <sysproperty key="PMFProperties"
                         value="${jdo.tck.testclasses.dir}/${iut.pmf.properties}"/>
            <sysproperty key="PMF2Properties"
                         value="${jdo.tck.testclasses.dir}/${iut.pmf.properties}"/>
            <sysproperty key="jdo.tck.testdata" value="${jdo.tck.testdata}"/>
            <sysproperty key="jdo.tck.standarddata"
                         value="${jdo.tck.standarddata}"/>
            <sysproperty key="jdo.tck.description"
                         value="${jdo.tck.description}"/>
            <sysproperty key="jdo.tck.identitytype"
                         value="${jdo.tck.identitytype}"/>
            <sysproperty key="jdo.tck.database"
                         value="${jdo.tck.database}"/>
            <sysproperty key="jdo.tck.cfg"
                         value="${jdo.tck.cfg}"/>
            <sysproperty key="jdo.tck.exclude"
                         value="${jdo.tck.exclude}"/>
            <sysproperty key="jdo.tck.log.directory"
                         value="${jdo.tck.log.directory}/${timestamp}"/>
            <sysproperty key="jdo.tck.cleanupaftertest"
                         value="${jdo.tck.cleanupaftertest}"/>             
            <sysproperty key="jdo.tck.requiredOptions"
                         value="${jdo.tck.requiredOptions}"/>
            <sysproperty key="jdo.tck.schemaname"
                         value="${schemaname}"/>
            <sysproperty key="jdo.tck.mapping.companyfactory"
                         value="${jdo.tck.mapping.companyfactory}"/>
            <sysproperty key="jdo.tck.closePMFAfterEachTest"
                         value="${jdo.tck.closePMFAfterEachTest}"/>
            <sysproperty key="jdo.tck.signaturefile"
                         value="${jdo.tck.signaturefile}"/>
                         
            <jvmarg line="${database.runtck.sysproperties}"/>
            <jvmarg line="${iut.runtck.sysproperties}"/>
            <jvmarg line="${jdo.tck.debug.jvmargs}"/>
            
            <arg line="${jdo.tck.classes}"/>
        </java>
        <echo>Finished configuration="${jdo.tck.cfg}" with database="${jdo.tck.database}" identitytype="${jdo.tck.identitytype}" mapping="${jdo.tck.mapping}".</echo>
    </goal>

    <goal name="doRuntck.jdori">
        <path id="this.jdori.classpath">
            <pathelement location="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}.jar"/>
            <path refid="jdori.classpath"/>
        </path>
        <u:loadText file="${basedir}/src/conf/${jdori.pmf.properties}"
                    var="PMFProps"/>
        <j:file name="${jdo.tck.testclasses.dir}/${jdori.pmf.properties}"
                omitXmlDeclaration="true">
            ${PMFProps}
            ### Properties below added by maven goal doRuntck.jdori
            <!-- javax.jdo.option.Mapping=${jdo.tck.database}${jdo.tck.mapping} -->
            javax.jdo.option.Mapping=standard${jdo.tck.mapping}
            javax.jdo.mapping.Schema=${schemaname}
        </j:file>
        
        <j:set var="debugJvmargs" value="${jdo.tck.debug.jvmargs}"/>
        <j:if test="${not empty debugJvmargs}">
            <echo>JVM will wait until debugger attaches on port ${jdo.tck.debug.port}...</echo>
        </j:if>
        
        <echo>Starting configuration="${jdo.tck.cfg}" with database="${jdo.tck.database}" identitytype="${jdo.tck.identitytype}" mapping="${jdo.tck.mapping}".</echo>
        <java fork="yes" dir="${jdo.tck.testdir}"
               classname="${jdo.tck.testrunnerclass}">
            <classpath refid="this.jdori.classpath"/>
            <sysproperty key="ResultPrinterClass"
                         value="${jdo.tck.resultprinterclass}"/>
            <sysproperty key="verbose" value="${verbose}"/>
            <sysproperty key="PMFProperties"
                         value="${jdo.tck.testclasses.dir}/${jdori.pmf.properties}"/>
            <sysproperty key="PMF2Properties"
                         value="${jdo.tck.testclasses.dir}/${jdori.pmf.properties}"/>
            <sysproperty key="jdo.tck.testdata" value="${jdo.tck.testdata}"/>
            <sysproperty key="jdo.tck.standarddata"
                         value="${jdo.tck.standarddata}"/>
            <sysproperty key="jdo.tck.description"
                         value="${jdo.tck.description}"/>
            <sysproperty key="jdo.tck.identitytype"
                         value="${jdo.tck.identitytype}"/>
            <sysproperty key="jdo.tck.database"
                         value="${jdo.tck.database}"/>
            <sysproperty key="jdo.tck.cfg"
                         value="${jdo.tck.cfg}"/>
            <sysproperty key="jdo.tck.exclude"
                         value="${jdo.tck.exclude}"/>
            <sysproperty key="jdo.tck.log.directory"
                         value="${jdo.tck.log.directory}/${timestamp}"/>
            <sysproperty key="jdo.tck.cleanupaftertest"
                         value="${jdo.tck.cleanupaftertest}"/>
            <sysproperty key="jdo.tck.requiredOptions"
                         value="${jdo.tck.requiredOptions}"/>
            <sysproperty key="jdo.tck.schemaname"
                         value="${schemaname}"/>
            <sysproperty key="jdo.tck.mapping.companyfactory"
                         value="${jdo.tck.mapping.companyfactory}"/>
            <sysproperty key="jdo.tck.closePMFAfterEachTest"
                         value="${jdo.tck.closePMFAfterEachTest}"/>
            <sysproperty key="jdo.tck.signaturefile"
                         value="${jdo.tck.signaturefile}"/>
                         
            <jvmarg line="${database.runtck.sysproperties}"/>
            <jvmarg line="${jdori.runtck.sysproperties}"/>
            <jvmarg line="${jdo.tck.debug.jvmargs}"/>
            
            <arg line="${jdo.tck.classes}"/>
        </java>
        <echo>Finished configuration="${jdo.tck.cfg}" with database="${jdo.tck.database}" identitytype="${jdo.tck.identitytype}" mapping="${jdo.tck.mapping}".</echo>
    </goal>

    <goal name="result">
        <java fork="yes" dir="${jdo.tck.testdir}"
               classname="org.apache.jdo.tck.util.ResultSummary">
            <classpath refid="jdori.classpath"/>
            <arg line="${jdo.tck.log.directory}/${timestamp}"/>
        </java> 
        <java fork="yes" dir="${jdo.tck.testdir}"
               classname="org.apache.jdo.tck.util.SystemCfgSummary">
            <classpath refid="jdori.classpath"/>
            <arg line="${jdo.tck.log.directory}/${timestamp}/configuration"/>
            <arg line="system_config.txt"/>
        </java>
        <copy todir="${jdo.tck.log.directory}/${timestamp}/configuration">
            <fileset dir="${basedir}" includes="*.properties, *.xml"/>
            <fileset dir="${basedir}/src/conf" includes="**/*"/>
            <fileset dir="${basedir}/src/jdo" includes="**/*.jdo"/>
            <fileset dir="${basedir}/src/orm" includes="**/*.orm"/>
        </copy>
    </goal>

    <!-- ================== -->
    <!-- Enhance PC classes -->
    <!-- ================== -->

    <goal name="enhance.jdori" prereqs="setProps">
        <attainGoal name="doEnhance.jdori"/>
    </goal>

    <goal name="enhance.iut" prereqs="setProps">
        <attainGoal name="doEnhance.iut"/>
    </goal>

    <goal name="enhance.check">
        <condition property="enhancement.required">
            <not>
                <uptodate targetfile="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}.jar">
                    <srcfiles dir="${basedir}/src/jdo/${jdo.tck.identitytype}"
                          includes="**/*.jdo, **/*.jdoquery, **/*.jdoTest.properties"/>
                    <srcfiles dir="${basedir}/src/java"
                          includes="${jdo.tck.pcclasses.sources},
                                    ${jdo.tck.paclasses.sources}"/>
                </uptodate>
            </not>
        </condition>
    </goal>

    <goal name="enhance.prepare" prereqs="java:compile, copyprops">
        <!-- create enhancer log dir -->
        <mkdir dir="${jdo.tck.log.directory.enhancer}"/>
        <!-- copy metadata -->
        <mkdir dir="${enhanced.dir}" />
        <copy todir="${enhanced.dir}">
            <fileset dir="${basedir}/src/jdo/${jdo.tck.identitytype}"
                     includes="**/*.jdo, **/*.jdoquery, **/jdoTest.properties"/>
        </copy>
        <!-- copy pc and pa classes -->
        <copy todir="${enhanced.dir}">
            <fileset dir="${basedir}/target/classes"
                includes="${jdo.tck.pcclasses.files}
                        ${jdo.tck.paclasses.files}" />
        </copy>
    </goal>

    <goal name="doEnhance.iut">
        <j:set var="jdo.tck.enhanced.dir" value="${iut.enhanced.dir}"/>
        <j:forEach var="jdo.tck.identitytype" items="${jdo.tck.identitytypes}">
            <j:set var="enhanced.dir"
                   value="${iut.enhanced.dir}/${jdo.tck.identitytype}"/>
            <attainGoal name="enhance.check"/>
            <j:if test="${enhancement.required}">
                <echo>Run IUT enhancer for ${jdo.tck.identitytype}</echo>
                <attainGoal name="enhance.prepare"/>
                <path id="enhance.classpath">
                    <path refid="iut.enhancer.classpath"/>
                    <pathelement location="${enhanced.dir}"/>
                </path>
                <java fork="yes" failonerror="yes" 
                      dir="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}"
                      classname="${iut.enhancer.main}"
                      classpathref="enhance.classpath">
                     <sysproperty key="jdo.tck.identitytype"
                                  value="${jdo.tck.identitytype}"/>
                     <sysproperty key="jdo.tck.log.directory"
                                  value="${jdo.tck.log.directory.enhancer}"/>
                     <jvmarg line="${iut.enhancer.sysproperties}"/>
                     <arg line="${iut.enhancer.options}"/>
                     <arg line="${iut.enhancer.args}"/>
                </java>
            </j:if>
            <attainGoal name="package.iut"/>
        </j:forEach>
    </goal>

    <goal name="doEnhance.jdori">
        <j:set var="jdo.tck.enhanced.dir" value="${jdori.enhanced.dir}"/>
        <j:forEach var="jdo.tck.identitytype" items="${jdo.tck.identitytypes}">
            <j:set var="enhanced.dir"
                   value="${jdori.enhanced.dir}/${jdo.tck.identitytype}"/>
            <attainGoal name="enhance.check"/>
            <j:if test="${enhancement.required}">
                <echo>Run JDORI enhancer for ${jdo.tck.identitytype}</echo>
                <attainGoal name="enhance.prepare"/>
                <path id="enhance.classpath">
                    <path refid="jdori.enhancer.classpath"/>
                    <pathelement location="${enhanced.dir}"/>
                </path>
                <java fork="yes" failonerror="yes" 
                      dir="${enhanced.dir}"
                      classname="${jdori.enhancer.main}"
                      classpathref="enhance.classpath">
                     <sysproperty key="jdo.tck.identitytype"
                                  value="${jdo.tck.identitytype}"/>
                     <sysproperty key="jdo.tck.log.directory"
                                  value="${jdo.tck.log.directory.enhancer}"/>
                     <jvmarg line="${jdori.enhancer.sysproperties}"/>
                     <arg line="${jdori.enhancer.options}"/>
                     <arg line="${jdori.enhancer.args}"/>
                </java>
            </j:if>
            <attainGoal name="package.jdori"/>
        </j:forEach>
    </goal>

    <!-- ========= -->
    <!-- Package   -->
    <!-- ========= -->

    <goal name="package.iut">
        <attainGoal name="package"/>
    </goal>

    <goal name="package.jdori">
        <attainGoal name="package"/>
    </goal>

    <goal name="package">
        <copy todir="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}">
            <fileset dir="${basedir}/src/orm/${jdo.tck.identitytype}"
                     includes="**/*.orm"/>
            <fileset dir="${basedir}/src/testdata"
                     includes="**/*.xml"/>
        </copy>
        <delete file="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}.jar"/>
        <jar jarfile="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}.jar">
            <fileset dir="${jdo.tck.enhanced.dir}/${jdo.tck.identitytype}" 
                 includes="**/*.class, **/*.jdo, **/*.jdoquery **/*.orm, **/*.xml, **/jdoTest.properties"/>
        </jar>
    </goal>

    <!-- ========= -->
    <!-- Classpath -->
    <!-- ========= -->

    <ant:property file="${basedir}/src/conf/alltests.list"/>

    <!-- Jar files for the Implementation Under Test -->
    <path id="test_iut_jars" >
        <fileset dir="${basedir}/iut_jars" includes="*.jar"/>
    </path>

    <!-- Jar files for third party libraries, including JNDI -->
    <path id="external.libs" >
        <fileset dir="${basedir}/../lib/ext" includes="*.jar"/>
    </path>

    <!-- Jar files for the Reference Implementation -->
    <path id="jdo.jdori.classpath">
        <pathelement location="${jpox.jdori.jarfile}" />
        <pathelement location="${jpox.rdbms.jarfile}" />
        <pathelement location="${jpox.enhancer.jarfile}" />
        <pathelement location="${jta.jarfile}" />
        <pathelement location="${xmlparser}" />
        <pathelement location="${asm.jarfile}" />
        <pathelement location="${logging.log4j.jarfile}" />
        <pathelement location="${jpox.dbcp.jarfile}" />
        <pathelement location="${jpox.c3p0.jarfile}" />
    </path>

    <!-- Jar files for connection pooling -->
    <path id="jdo.connectionpooling.classpath">
        <pathelement location="${c3p0.jarfile}"/>
        <pathelement location="${dbcp.jarfile}"/>
        <pathelement location="${pool.jarfile}"/>
        <pathelement location="${collections.jarfile}"/>
    </path>

    <!-- Jar files for the Spring framework -->
    <path id="jdo.spring.classpath">
        <pathelement location="${springcore.jarfile}"/>
        <pathelement location="${springbeans.jarfile}"/>
    </path>

    <!-- Common enhancer classpath -->
    <path id="jdo.tck.enhancer.classpath">
        <!-- Directory where JDOTCK class files are located  -->
        <pathelement location="${jdo.tck.testclasses.dir}"/>
        <!-- JDO jar file  -->
        <pathelement location="${jdo.api.jarfile}"/>
        <!-- JUnit jar file -->
        <pathelement location="${junit.jarfile}"/>
        <!-- Commons-logging jar file (for compiling pa/pc classes) -->
        <pathelement location="${logging.commons.jarfile}"/>
    </path>

    <!-- Common TCK execution classpath -->
    <path id="jdo.tck.execution.classpath">
       <!-- Directory where JDOTCK class files are located  -->
        <pathelement location="${jdo.tck.testclasses.dir}"/>
        <!-- JDO jar file  -->
        <pathelement location="${jdo.api.jarfile}"/>
        <!-- Commons logging jar file  -->
        <pathelement location="${logging.commons.jarfile}"/>
        <pathelement location="${jta.jarfile}" />
        <!-- JUnit jar file -->
        <pathelement location="${junit.jarfile}"/>
        <!-- Spring jar files -->
        <path refid="jdo.spring.classpath" />
        <!-- Jar files for connection pooling -->
        <path refid="jdo.connectionpooling.classpath" />
        <!-- Jar files for jndi and other external libraries -->
        <path refid="external.libs"/>
        <!-- Jar files for database -->
        <pathelement location="${derby.jarfile}" />
    </path>

    <!-- Paths needed for enhancement by JDORI enhancer. -->
    <path id="jdori.enhancer.classpath">
        <!-- Common enhancer classpath -->
        <path refid="jdo.tck.enhancer.classpath"/>
        <!-- Jar files for the Reference Implementation -->
        <path refid="jdo.jdori.classpath" />
    </path>

    <!-- Paths needed for enhancement by IUT enhancer. -->
    <path id="iut.enhancer.classpath">
        <!-- Common enhancer classpath -->
        <path refid="jdo.tck.enhancer.classpath"/>
        <!-- IUT enhancement classpath from build.properties -->
        <pathelement path="${iut.enhancer.cp}" />
        <!-- Jar files for the Implementation Under Test -->
        <path refid="test_iut_jars" />
    </path>

    <!-- Paths needed to run the TCK on the JDO Reference Implementation. -->
    <path id="jdori.classpath">
        <!-- Common TCK execution classpath -->
        <path refid="jdo.tck.execution.classpath" />
        <!-- Jar files for the Reference Implementation -->
        <path refid="jdo.jdori.classpath" />
    </path>

    <!-- Paths needed to run the TCK on the Implementation Under Test. -->
    <path id="iut.classpath">
        <!-- Common TCK execution classpath -->
        <path refid="jdo.tck.execution.classpath" />
        <!-- IUT execution classpath from build.properties -->
        <pathelement path="${iut.runtck.classpath}" />
        <!-- Jar files for the implementation under test -->
        <path refid="test_iut_jars" />
    </path>

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

    <goal name="copyprops">
       <echo>copyprops:</echo>
        <copy todir="${jdo.tck.testclasses.dir}" >
            <fileset dir="${basedir}/src/conf">
               <include name="commons-logging.properties"/>
               <include name="simplelog.properties"/>
               <include name="logging.properties"/>
               <include name="log4j.properties"/>
               <include name="jndi.properties"/>
            </fileset>
        </copy>
    </goal>

    <!-- ==================== -->
    <!-- Distribution support -->
    <!-- ==================== -->

    <goal name="dist">
        <!-- Just do a source distribution for tck20. -->
        <attainGoal name="dist:build-src"/>
    </goal>

    <preGoal name="dist:build-src">
        <echo>Copying build.properties, RunRules.html, assertions, and iut_jars to ${maven.dist.src.archive.dir}/${maven.final.name}</echo>
        <copy toDir="${maven.dist.src.archive.dir}/${maven.final.name}">
             <fileset dir="${basedir}">
                 <include name="RunRules.html"/>
                 <include name="build.properties"/>
                 <include name="assertions/**"/>
                 <include name="iut_jars"/>
                 <exclude name="iut_jars/*"/>
             </fileset>
        </copy>
        <delete file="${maven.dist.src.archive.dir}/${maven.final.name}/build.xml"/>
        <echo>Copying top-level project.xml, project.properties, and README.txt to ${maven.dist.src.archive.dir}</echo>
        <copy toDir="${maven.dist.src.archive.dir}">
             <fileset dir="${basedir}/..">
                 <include name="project.properties"/>
                 <include name="project.xml"/>
                 <include name="README.txt"/>
             </fileset>
        </copy>
        <echo>Creating ${maven.dist.src.archive.dir}/lib/ext</echo>
        <mkdir dir="${maven.dist.src.archive.dir}/lib/ext"/>
    </preGoal>

    <goal name="copy-release-artifacts">
        <attainGoal name="copy-distribution"/>
    </goal>

</project>
