<project name="surrogate-example" default="test">
    <target name="init">
        <property name="SOURCE_DIR" value="src/java" />
        <property name="TESTSOURCE_DIR" value="src/test" />
        <property name="ASPECTSOURCE_DIR" value="src/aspects" />             
        <!-- surrogate.jar, mockobjects.jar and aspectjrt.jar must be in "lib" -->
        <!-- aspectjtools.jar must be in $ANT_HOME/lib -->
        <path id="compile.path">
            <fileset dir="lib">
                <include name="*.jar"/>
            </fileset>
        </path>
    </target>
    <!-- Cleans classes -->
    <target name="clean" depends="init,check.surrogate">
       <delete dir="${CLASSES_DIR}"/> 
    </target>
    
    <!-- Switches compiler and "classes" dir if -Dsurrogate=true -->
    <target name="init.surrogate" if="surrogate">
        <property name="AJC" value="org.aspectj.tools.ant.taskdefs.Ajc11CompilerAdapter"/>    
        <property name="build.compiler" value="${AJC}"/>
        <property name="CLASSES_DIR" value="woven-classes"/>
    </target>
     <target name="noinit.surrogate" unless="surrogate">
         <property name="CLASSES_DIR" value="classes"/>
    </target>
    <target name="check.surrogate" depends="init.surrogate,noinit.surrogate"/>
    
    <!-- Compile target -->
    <target name="compile" depends="init,check.surrogate" description="compiles">
        <mkdir dir="${CLASSES_DIR}"/> 
        <javac srcdir="${SOURCE_DIR}" destdir="${CLASSES_DIR}"  debug="on" >
            <classpath>
                <path refid="compile.path"/>
            </classpath>
            <compilerarg compiler="${AJC}" line="-Xreweavable"/>
            <compilerarg compiler="${AJC}" line="-Xsrcdir ${ASPECTSOURCE_DIR}"/>
        </javac>
    </target>
    <!-- Compiles tests -->
    <target name="compile-tests" depends="compile" description="Compiles tests">
        <javac srcdir="${TESTSOURCE_DIR}" destdir="${CLASSES_DIR}" debug="on"> 
            <classpath>
                <pathelement location="${CLASSES_DIR}"/>
                <path refid="compile.path"/>
            </classpath>
        </javac>
    </target>
    <!-- Runs Junit tests -->
    <target name="test" depends="compile-tests" description="Runs JunitTest">
        <junit printSummary="withOutAndErr"  haltonfailure="yes">
            <sysproperty key="surrogate.debug" value="${surrogate.debug}"/>
            <formatter type="plain" usefile="false"/> 
            <batchtest>
                <fileset dir="${CLASSES_DIR}">
                    <include name="**/*TestCase.class"/>
                </fileset>
            </batchtest>
            <classpath>
                <pathelement location="${CLASSES_DIR}"/>
                <path refid="compile.path"/>
            </classpath>
        </junit>
    </target>
    
</project>