<?xml version="1.0"?>
<!--
  ~ 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.
  -->

<!-- JSecurity root build file.  If you want to understand how the JSecurity build environment
     works (useful if you want to build from scratch or join the project as a developer),
     Read this article:

     An Ant Modular Build Environment for Enterprise Applications:
     http://www.onjava.com/pub/a/onjava/2005/06/22/modularant.html

     Reading this will instantly make you familiar with our build.
-->
<project name="jsecurity" default="all" xmlns:ivy="antlib:org.apache.ivy.ant">

    <!-- Static property definitions.  These will remain the same for any module or submodule. -->
    <property name="project.name" value="jsecurity"/>

    <property name="root.base.dir" value="${basedir}"/>

    <!-- Allow override of default build properties from properties file. -->
    <property file="build.properties"/>
    <property file="${user.home}/.jsecurity/build.properties"/>

    <!-- Environment variables (e.g. to pickup CATALINA_HOME for test deployment) -->
    <property environment="env"/>

    <property name="ivy.install.version" value="2.0.0-beta2"/>
    <condition property="ivy.home" value="${env.IVY_HOME}">
        <isset property="env.IVY_HOME"/>
    </condition>
    <property name="ivy.home" value="${user.home}/.ant"/>
    <property name="ivy.jar.dir" value="${ivy.home}/lib"/>
    <property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar"/>

    <!-- version of the product, see http://apr.apache.org/versioning.html for
         details on this convention -->
    <property name="major.version" value="0"/>
    <property name="minor.version" value="9"/>
    <property name="patch.version" value="0-RC2"/>
    <property name="version" value="${major.version}.${minor.version}.${patch.version}"/>
    <property name="release.name" value="${project.name}-${version}"/>

    <!-- application-wide config files: (all other config files should be in a
         respective module or submodule) -->
    <property name="root.etc.dir" value="${root.base.dir}/etc"/>
    <property name="root.dist.dir" value="${root.base.dir}/build/${project.name}-${version}"/>

    <!-- All 3rd party libraries are in here: -->
    <property name="lib.dir" value="${root.base.dir}/lib"/>

    <!-- *RELATIVE* definitions.  These properties will reflect a directory
         structure relative to where the build is being executed -->
    <property name="base.dir" value="."/>
    <property name="etc.dir" value="${base.dir}/etc"/>
    <property name="src.dir" value="${base.dir}/src"/>
    <property name="test.dir" value="${base.dir}/test"/>
    <property name="build.dir" value="${base.dir}/build"/>
    <property name="classes.dir" value="${build.dir}/classes"/>
    <property name="test.classes.dir" value="${build.dir}/test-classes"/>
    <!-- <property name="dist.dir" value="${build.dir}/dist"/> -->


    <property name="docs.dir" value="${root.dist.dir}/docs"/>
    <property name="src.ref.dir" value="${root.base.dir}/docs/reference"/>
    <property name="dist.ref.dir" value="${docs.dir}/reference"/>
    <property name="double.sided" value="0"/>
    <!-- default to single-sided style -->
    <property name="api.dir" value="${docs.dir}/api"/>
    <property name="test.docs.dir" value="${docs.dir}/test-reports"/>

    <!-- compile flags, can be overridden on the command line using the -D flag -->
    <property name="compile.debug" value="true"/>
    <property name="compile.deprecation" value="false"/>
    <property name="compile.optimize" value="false"/>

    <property name="dist.jarName" value="${project.name}.jar"/>
    <property name="dist.jar" value="${root.dist.dir}/${dist.jarName}"/>

    <path id="core.src">
        <fileset dir="${src.dir}">
            <include name="**"/>
            <exclude name="org/jsecurity/web/**"/>
        </fileset>
        <pathelement location="${root.base.dir}/support/ehcache/src"/>
    </path>

    <path id="all.libs">
        <fileset dir="${lib.dir}">
            <include name="**/*.jar"/>
        </fileset>
    </path>

    <!-- To disable this task (maybe behind a firewall?), use the -Doffline=true command-line switch -->
    <target name="download-ivy" unless="offline" description="Ensures Ivy exists for automatic dependency mgt">
        <mkdir dir="${ivy.jar.dir}"/>
        <!-- download Ivy from web site so that it can be used even without any special installation -->
        <echo message="Installing Ivy for automated dependecy management..."/>
        <get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar"
             dest="${ivy.jar.file}" usetimestamp="true"/>
    </target>

    <!-- =================================
         target: load-ivy
         This target is not necessary if you put ivy.jar in your ant lib directory.
         If you already have ivy in your ant lib, you can simply remove this target.
         ================================= -->
    <target name="load-ivy" depends="download-ivy" description="Ensures Ivy ant tasks are loaded">
        <!-- try to load ivy here from local ivy dir, in case the user has not already dropped
             it into ant's lib dir (note that the latter copy will always take precedence).
             We will not fail as long as local lib dir exists (it may be empty) and
             ivy is in at least one of ant's lib dir or the local lib dir. -->
        <path id="ivy.lib.path">
            <fileset dir="${ivy.jar.dir}" includes="*.jar"/>
        </path>
        <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
    </target>

    <target name="retrieve-dependencies" depends="load-ivy"
            description="Ensures all build dependencies have been downloaded">
        <mkdir dir="${lib.dir}"/>
        <ivy:retrieve pattern="${lib.dir}/[conf]/[artifact].[ext]" sync="true"/>
    </target>

    <!-- ===================================================================
 -  Clean all local and children build files
 -  =================================================================== -->
    <target name="clean" description="Cleans the entire project">
        <delete dir="${build.dir}"/>
        <ant dir="samples/quickstart" target="clean"/>
        <ant dir="samples/spring" target="clean"/>
    </target>

    <target name="compile.core" depends="retrieve-dependencies" description="Compiles JSecurity core API only">
        <mkdir dir="${classes.dir}"/>
        <mkdir dir="${classes.dir}/META-INF"/>

        <javac destdir="${classes.dir}"
               debug="${compile.debug}"
               deprecation="${compile.deprecation}"
               optimize="${compile.optimize}"
               target="1.5"
               failonerror="true"
               srcdir="${src.dir}"
               classpathref="all.libs"
               sourcepathref="core.src"/>

        <copy todir="${classes.dir}" preservelastmodified="true">
            <fileset dir="${src.dir}">
                <include name="**/*.properties"/>
                <include name="**/*.xml"/>
                <include name="**/*.dtd"/>
                <include name="**/*.xsd"/>
            </fileset>
            <fileset dir="${root.base.dir}/support/ehcache/src">
                <include name="**/*.properties"/>
                <include name="**/*.xml"/>
                <include name="**/*.dtd"/>
                <include name="**/*.xsd"/>
            </fileset>
        </copy>

        <copy todir="${classes.dir}/META-INF" preservelastmodified="true">
            <fileset dir="${src.dir}">
                <include name="**/*.tld"/>
            </fileset>
        </copy>
    </target>

    <target name="compile.web" depends="compile.core" description="Compiles JSecurity web API only">
        <mkdir dir="${classes.dir}"/>
        <mkdir dir="${classes.dir}/META-INF"/>

        <javac destdir="${classes.dir}"
               debug="${compile.debug}"
               deprecation="${compile.deprecation}"
               optimize="${compile.optimize}"
               target="1.5"
               failonerror="true"
               classpathref="all.libs"
               sourcepath=""
               srcdir="${src.dir}">
            <include name="org/jsecurity/web/**"/>
        </javac>

        <copy todir="${classes.dir}" preservelastmodified="true">
            <fileset dir="${src.dir}/org/jsecurity/web">
                <include name="**/*.properties"/>
                <include name="**/*.xml"/>
                <include name="**/*.dtd"/>
                <include name="**/*.xsd"/>
            </fileset>
        </copy>

        <copy todir="${classes.dir}/META-INF" preservelastmodified="true">
            <fileset dir="${src.dir}">
                <include name="**/*.tld"/>
            </fileset>
        </copy>
    </target>


    <target name="compile.spring" depends="compile.core" description="Compiles Spring Framework support">
        <javac destdir="${classes.dir}"
               debug="${compile.debug}"
               deprecation="${compile.deprecation}"
               optimize="${compile.optimize}"
               target="1.5"
               failonerror="true">
            <classpath refid="all.libs"/>
            <classpath location="${classes.dir}"/>
            <src path="${root.base.dir}/support/spring/src"/>
        </javac>

        <copy todir="${classes.dir}" preservelastmodified="true">
            <fileset dir="${root.base.dir}/support/spring/src">
                <include name="**/*.properties"/>
                <include name="**/*.xml"/>
                <include name="**/*.dtd"/>
                <include name="**/*.xsd"/>
            </fileset>
        </copy>

        <copy todir="${classes.dir}/META-INF" preservelastmodified="true">
            <fileset dir="${root.base.dir}/support/spring/src">
                <include name="**/*.tld"/>
            </fileset>
        </copy>
    </target>

    <target name="compile.quartz" depends="compile.core" description="Compiles Quartz support">
        <javac destdir="${classes.dir}"
               debug="${compile.debug}"
               deprecation="${compile.deprecation}"
               optimize="${compile.optimize}"
               target="1.5"
               failonerror="true">
            <classpath refid="all.libs"/>
            <classpath location="${classes.dir}"/>
            <src path="${root.base.dir}/support/quartz/src"/>
        </javac>

        <copy todir="${classes.dir}" preservelastmodified="true">
            <fileset dir="${root.base.dir}/support/quartz/src">
                <include name="**/*.properties"/>
                <include name="**/*.xml"/>
                <include name="**/*.dtd"/>
                <include name="**/*.xsd"/>
            </fileset>
        </copy>

        <copy todir="${classes.dir}/META-INF" preservelastmodified="true">
            <fileset dir="${root.base.dir}/support/quartz/src">
                <include name="**/*.tld"/>
            </fileset>
        </copy>
    </target>

    <target name="compile" depends="compile.core, compile.web, compile.spring, compile.quartz" description="Compiles all classes"/>

    <target name="jar" depends="compile" description="Create full JAR file with all JSecurity classes">

        <mkdir dir="${root.dist.dir}"/>

        <jar jarfile="${dist.jar}">
            <fileset dir="${classes.dir}">
                <include name="org/jsecurity/**"/>
            </fileset>
            <metainf dir="${classes.dir}/META-INF">
                <include name="**"/>
            </metainf>
            <manifest>
                <attribute name="Implementation-Title" value="${project.name}"/>
                <attribute name="Implementation-Version" value="${version}"/>
                <attribute name="${project.name}-Version" value="${version}"/>
                <!-- Allow use of this JAR as a Java agent -->
                <!-- <attribute name="Premain-Class" value="org.jsecurity.instrument.InstrumentationSavingAgent" /> -->
            </manifest>
        </jar>

        <path id="retroweaver.path">
            <fileset dir="${lib.dir}" includes="**/*"/>
        </path>

        <taskdef name="retroweaver" classname="net.sourceforge.retroweaver.ant.RetroWeaverTask"
                 classpathref="retroweaver.path"/>
        <retroweaver target="1.3" inputjar="${dist.jar}" outputjar="${root.dist.dir}/${project.name}-jdk13.jar"/>
        <retroweaver target="1.4" inputjar="${dist.jar}" outputjar="${root.dist.dir}/${project.name}-jdk14.jar"/>

    </target>

    <target name="jar.deploy" depends="jar,src.zip"
            description="Copies the jar and src.zip files to a local directory specified by build properties.  Requires creation of .jsecurity/build.properties file to specify the deploy dir.">
        <fail unless="jar.deploy.dir"
              message="jar.deploy.dir property is not set. Please create ${user.home}/.jsecurity/build.properties and specify this property before running this task."/>
        <copy todir="${jar.deploy.dir}" preservelastmodified="true">
            <fileset file="${dist.jar}"/>
            <fileset file="${root.dist.dir}/${project.name}.src.zip"/>
        </copy>
    </target>

    <target name="samples.quickstart" depends="jar" description="Creates the quickstart .jar">
        <ant dir="samples/quickstart"/>
    </target>

    <target name="samples.quickstart.run" depends="samples.quickstart" description="Runs the quickstart class">
        <ant dir="samples/quickstart" target="run"/>
    </target>

    <target name="samples.standalone" depends="jar" description="Creates the standalone .jar">
        <ant dir="samples/standalone"/>
    </target>

    <target name="samples.standalone.run" depends="samples.standalone" description="Runs the standalone sample class">
        <ant dir="samples/standalone" target="run"/>
    </target>

    <target name="samples.web" depends="jar" description="Creates the JSecurity sample webapp .war">
        <ant dir="samples/web"/>
    </target>

    <target name="samples.spring" depends="jar" description="Creates the sample JSecurity/Spring .war">
        <ant dir="samples/spring"/>
    </target>

    <target name="samples.spring-hibernate" depends="jar"
            description="Creates the sample JSecurity Spring/Hibernate .war">
        <ant dir="samples/spring-hibernate"/>
    </target>

    <target name="samples" depends="samples.quickstart,samples.web,samples.spring,samples.spring-hibernate"
            description="Creates all sample applications"/>

    <target name="samples.web.deploy" depends="samples.web"
            description="Deploys the JSecurity quickstart .war">
        <ant dir="samples/web" target="deploy"/>
    </target>

    <target name="samples.spring.deploy" depends="samples.spring"
            description="Deploys the sample JSecurity/Spring .war">
        <ant dir="samples/spring" target="deploy"/>
    </target>

    <target name="samples.spring-hibernate.deploy" depends="samples.spring-hibernate"
            description="Deploys the sample JSecurity Spring/Hibernate .war">
        <ant dir="samples/spring-hibernate" target="deploy"/>
    </target>

    <!-- =================================================================== -->
    <!-- Javadoc all main sources                                            -->
    <!-- =================================================================== -->
    <target name="javadoc" description="Generate Javadocs">

        <path id="javadocSrcPath">
            <path refid="core.src"/>
            <pathelement location="${root.base.dir}/support/spring/src"/>
            <pathelement location="${root.base.dir}/support/quartz/src"/>
        </path>

        <echo message="Generating JavaDoc API..."/>
        <delete dir="${api.dir}" failonerror="false"/>
        <mkdir dir="${api.dir}"/>

        <javadoc destdir="${api.dir}" windowtitle="JSecurity API ${version}"
                 source="1.5" access="package" author="true" version="true" use="true"
                 defaultexcludes="true"
                 header='&lt;a href=\"http://www.jsecurity.org/\" target=\"_top\"&gt;JSecurity&lt;/a&gt;'>
            <sourcepath refid="javadocSrcPath"/>
            <arg value="-breakiterator"/>
            <arg value="-J-Xmx128m"/>
            <arg value="-J-XX:MaxPermSize=128m"/>
            <!-- <arg value="-J-Dhttp.proxyHost=${javadoc.proxyhost}"/>
          <arg value="-J-Dhttp.proxyPort=${javadoc.proxyport}"/> -->
            <doctitle><![CDATA[<h1>JSecurity API ${version}</h1>]]></doctitle>
            <!-- The following <bottom> block is to enable UA tracking via Google Analytics, but it fails the
                 JavaDoc task on a Windows Sun JDK.  It works fine on Mac OS X JavaDoc.  Since we want this UA
                 tracking, we use a Mac to build the release that end-users will download, so we leave this block
                 enabled.  If you want to run JavaDoc in a Windows environment, remove this block, and it will
                 run successfully. -->
            <bottom>
                <![CDATA[
                <i>Copyright &copy; 2004-2008 <a href="http://www.jsecurity.org/" target="_top">JSecurity</a>.</i>
                <script type="text/javascript">
                    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
                    document.write(unescape("%3Cscript src=%22" + gaJsHost + "google-analytics.com/ga.js%22 type=%22text/javascript%22%3E%3C/script%3E"));
                </script>
                <script type="text/javascript">
                    var pageTracker = _gat._getTracker("UA-3614410-1");
                    pageTracker._initData();
                    pageTracker._trackPageview();
                </script>
                ]]>
            </bottom>
            <classpath refid="all.libs"/>
            <packageset dir="${src.dir}">
                <include name="org/jsecurity/**"/>
            </packageset>
            <packageset dir="${root.base.dir}/support/ehcache/src">
                <include name="org/jsecurity/**"/>
            </packageset>
            <packageset dir="${root.base.dir}/support/spring/src">
                <include name="org/jsecurity/**"/>
            </packageset>
            <packageset dir="${root.base.dir}/support/quartz/src">
                <include name="org/jsecurity/**"/>
            </packageset>
            <link href="http://java.sun.com/j2se/1.5/docs/api"/>
            <link href="http://java.sun.com/j2ee/1.4/docs/api"/>
            <!-- Jakarta Commons -->
            <link href="http://jakarta.apache.org/commons/collections/apidocs/"/>
            <link href="http://commons.apache.org/beanutils/commons-beanutils-1.7.0/docs/api/"/>
            <link href="http://jakarta.apache.org/commons/logging/apidocs/"/>
            <link href="http://jakarta.apache.org/commons/codec/apidocs/"/>
            <link href="http://quartz.sourceforge.net/javadoc/"/>
            <link href="http://static.springframework.org/spring/docs/2.0.x/api/"/>
            <link href="http://ehcache.sourceforge.net/javadoc/"/>
        </javadoc>

    </target>

    <!-- ===================================================================
 -  Reference documentation
 -  =================================================================== -->
    <target name="doc.prepare" depends="retrieve-dependencies" description="Extra preparation for the documentation">

        <!-- unzip the docbook-libs.zip file containing the necessary jars: -->
        <unzip src="${lib.dir}/docbook/docbook-libs.zip" dest="${lib.dir}/docbook"/>

        <!-- <antcall target="tld.to.docbook"/> -->

    </target>


    <target name="doc.pdf" depends="doc.prepare" description="Compile reference documentation to pdf">

        <mkdir dir="${dist.ref.dir}/pdf/images"/>

        <copy todir="${dist.ref.dir}/pdf/images">
            <fileset dir="${src.ref.dir}/images">
                <include name="**/*"/>
            </fileset>
        </copy>

        <java classname="com.icl.saxon.StyleSheet" fork="true" dir="${dist.ref.dir}">
            <classpath>
                <fileset dir="${lib.dir}/docbook">
                    <include name="**/*.jar"/>
                </fileset>
            </classpath>
            <jvmarg value="-Xmx256M"/>
            <jvmarg value="-XX:MaxPermSize=128m"/>
            <arg value="-o"/>
            <arg value="${dist.ref.dir}/pdf/docbook_fop.tmp"/>
            <arg value="${src.ref.dir}/src/index.xml"/>
            <arg value="${src.ref.dir}/styles/fopdf.xsl"/>
            <!-- controls the double sided pagination style -->
            <arg value="double.sided=${double.sided}"/>
        </java>

        <java classname="org.apache.fop.apps.Fop" fork="true" maxmemory="256m" dir="${dist.ref.dir}">
            <classpath>
                <fileset dir="${lib.dir}/docbook">
                    <include name="**/*.jar"/>
                </fileset>
            </classpath>
            <arg value="${dist.ref.dir}/pdf/docbook_fop.tmp"/>
            <arg value="${dist.ref.dir}/pdf/jsecurity-reference.pdf"/>
        </java>

        <delete file="${dist.ref.dir}/pdf/docbook_fop.tmp"/>

    </target>


    <!-- Start of TLD => DocBook targets -->
    <!-- <target name="tld.to.docbook" depends="original.tld.to.docbook,forms.tld.to.docbook"/>


<target name="original.tld.to.docbook">

<antcall target="hack.DOCTYPE">
<param name="doctype.input.file" value="src/org/springframework/web/servlet/tags/spring.tld"/>
<param name="doctype.scrubbed.file" value="${doc.ref.dir}/src/spring.tld"/>
</antcall>

<antcall target="private.tld.to.docbook">
<param name="input.tld" value="spring.tld"/>
<param name="input.tld.file" value="${doc.ref.dir}/src/spring.tld"/>
</antcall>

</target>


<target name="forms.tld.to.docbook">

<antcall target="hack.DOCTYPE">
<param name="doctype.input.file" value="src/org/springframework/web/servlet/tags/form/spring-form.tld"/>
<param name="doctype.scrubbed.file" value="${doc.ref.dir}/src/spring-form.tld"/>
</antcall>

<antcall target="private.tld.to.docbook">
<param name="input.tld" value="spring-form.tld"/>
<param name="input.tld.file" value="${doc.ref.dir}/src/spring-form.tld"/>
</antcall>

</target>


<target name="private.tld.to.docbook" if="input.tld">

<property name="out.file" value="${doc.ref.dir}/src/${input.tld}.xml"/>

<xslt processor="trax" in="${input.tld.file}" out="${out.file}"
    style="${doc.ref.dir}/styles/tld.to.docbook.xsl">
<param name="title" expression="${input.tld}"/>
</xslt>

<antcall target="hack.CDATA">
<param name="target.file" value="${out.file}"/>
</antcall>

<delete file="${input.tld.file}"/>

</target>


<target name="hack.CDATA" if="target.file">

<replace file="${target.file}">
<replacetoken><![CDATA[&lt;]]></replacetoken>
<replacevalue><![CDATA[<]]></replacevalue>
</replace>

<replace file="${target.file}">
<replacetoken><![CDATA[&gt;]]></replacetoken>
<replacevalue><![CDATA[>]]></replacevalue>
</replace>

</target>


<target name="hack.DOCTYPE" if="doctype.input.file">

<!- -
Removes the TLD DTD decl. from the TLD files as this messes
up the transform (feel free to fix this more elegantly)
- ->
<copy file="${doctype.input.file}" tofile="${doctype.scrubbed.file}" overwrite="true"/>

<replace file="${doctype.scrubbed.file}" value="">
<replacetoken><![CDATA[<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">]]></replacetoken>
</replace>

</target>
<!- - End of TLD => DocBook targets -->


    <target name="doc.html" depends="doc.prepare"
            description="Compile reference documentation to chunked html">

        <mkdir dir="${dist.ref.dir}/html/images"/>

        <copy todir="${dist.ref.dir}/html/images">
            <fileset dir="${src.ref.dir}/images">
                <include name="**/*"/>
            </fileset>
        </copy>

        <copy todir="${dist.ref.dir}/html/" failonerror="false">
            <fileset dir="${src.ref.dir}/styles/">
                <include name="*.css"/>
                <include name="*.js"/>
            </fileset>
        </copy>

        <java classname="com.icl.saxon.StyleSheet" fork="true" dir="${dist.ref.dir}/html/">
            <classpath>
                <fileset dir="${lib.dir}/docbook">
                    <include name="**/*.jar"/>
                </fileset>
            </classpath>
            <jvmarg value="-Xmx256M"/>
            <jvmarg value="-XX:MaxPermSize=128m"/>
            <arg value="${src.ref.dir}/src/index.xml"/>
            <arg value="${src.ref.dir}/styles/html_chunk.xsl"/>
        </java>

    </target>


    <target name="doc.htmlsingle" depends="doc.prepare" description="Compile reference documentation to single html">

        <mkdir dir="${dist.ref.dir}/html_single/images"/>

        <copy todir="${dist.ref.dir}/html_single/images">
            <fileset dir="${src.ref.dir}/images">
                <include name="**/*"/>
            </fileset>
        </copy>
        <copy todir="${dist.ref.dir}/html_single/" file="${src.ref.dir}/styles/html.css" failonerror="false"/>

        <java classname="com.icl.saxon.StyleSheet" fork="true" dir="${dist.ref.dir}">
            <classpath>
                <fileset dir="${lib.dir}/docbook">
                    <include name="**/*.jar"/>
                </fileset>
            </classpath>
            <jvmarg value="-Xmx256M"/>
            <jvmarg value="-XX:MaxPermSize=128m"/>
            <arg value="-o"/>
            <arg value="${dist.ref.dir}/html_single/index.html"/>
            <arg value="${src.ref.dir}/src/index.xml"/>
            <arg value="${src.ref.dir}/styles/html.xsl"/>
        </java>

    </target>


    <target name="doc.all" depends="doc.html,doc.htmlsingle,doc.pdf" description="Generate reference documentation"/>

    <!-- <name name="junit.check.warning" if="tests.failed">
       <echo>
       ***********************************************************
       * One or more unit tests failed!
       * Check the reports located in ${test.docs.dir}
       * for details...
       ***********************************************************
       </echo>
   </name>

   <!- - ===================================================================
     -  quick-test-report - quickly generates test report documentation based
     -  on the xml test reports previously created during a junit task
     -  execution. (this does not run the task).
     -  =================================================================== - ->
   <name name="test.report">
       <echo message="Generating test reports..."/>

       <junitreport todir="${test.docs.dir}">
           <fileset dir=".">
               <include name="**/TEST-*"/>
           </fileset>
           <report todir="${test.docs.dir}"/>
       </junitreport>
   </name>

   <name name="unit.tests" depends="compile">
       <echo message="Executing unit tests..."/>

       <!- - Any properties files needed by test cases and/or Spring test case
            configuration must be under the base root dir hierarchy so relative
            file references may work properly.  - ->
       <copy toDir="${classes.dir}" preservelastmodified="true" file="${root.base.dir}/etc/log4j.properties"/>
       <copy toDir="${classes.dir}" preservelastmodified="true" file="${root.base.dir}/db/build/gen/jdbc.properties"/>

       <junit printsummary="withOutAndErr"
              showoutput="true"
              haltonfailure="no"
              failureproperty="tests.failed"
              errorproperty="tests.failed"
              timeout="60000"
              fork="yes">
           <classpath refid="test.path"/>

           <formatter type="brief" usefile="false"/>
           <formatter type="xml"/>
           <!- - allows us to generate web reports - ->

           <batchtest fork="true" todir="${gen.dir}">
               <fileset dir="${test.classes.dir}">

                   <include name="**/*Test.class"/>

                   <exclude name="**/*IntegrationTest.class"/>
                   <exclude name="**/*SystemTest.class"/>
                   <exclude name="**/*StressTest.class"/>

               </fileset>
           </batchtest>

       </junit>

   </name>

   <name name="test" depends="dist">
       <antcall name="template">
           <param name="name" value="test"/>
       </antcall>
   </name> -->


    <target name="src.zip" description="Create source ZIP (containing Java sources)">
        <mkdir dir="${root.dist.dir}"/>
        <delete file="${root.dist.dir}/${project.name}.src.zip"/>
        <zip destfile="${root.dist.dir}/${project.name}.src.zip">
            <fileset dir="${src.dir}">
                <include name="org/jsecurity/**"/>
            </fileset>
            <fileset dir="${root.base.dir}/support/ehcache/src">
                <include name="org/jsecurity/**"/>
            </fileset>
            <fileset dir="${root.base.dir}/support/spring/src">
                <include name="org/jsecurity/**"/>
            </fileset>
            <fileset dir="${root.base.dir}/support/quartz/src">
                <include name="org/jsecurity/**"/>
            </fileset>
        </zip>
    </target>

    <target name="makepom" depends="load-ivy" description="Use Ivy to generate a Maven 2 pom.xml file">
        <ivy:makepom ivyfile="${root.base.dir}/ivy.xml" pomfile="${build.dir}/${project.name}.pom">
            <mapping conf="runtime" scope="compile"/>
            <mapping conf="runtime-web" scope="compile"/>
            <mapping conf="test" scope="test"/>
        </ivy:makepom>
    </target>

    <target name="release" depends="jar,samples,src.zip,makepom,javadoc,doc.all"
            description="Create all artifacts for a JSecurity release">
        <property name="release.dir.name" value="${project.name}-${version}"/>
        <property name="release.zip.name" value="${release.dir.name}.zip"/>
        <property name="release.depzip.name" value="${release.dir.name}-with-dependencies.zip"/>
        <copy todir="${root.dist.dir}">
            <fileset dir="${root.base.dir}">
                <type type="file"/>
                <exclude name="**/build/**"/>
                <exclude name="**/.svn/**"/>
                <exclude name="**/lib/**"/>
                <exclude name="${release.dir.name}"/>
            </fileset>
        </copy>
        <zip destfile="${build.dir}/${release.zip.name}"
             basedir="${build.dir}"
             includes="${release.dir.name}/**"
             excludes="**/${release.zip.name},**/lib/**"/>

        <!-- Our ivy config puts copies of jars under lib directory according to the multiple build
configuration targets.  We don't want multiple copies in the dependency lib, because it would
make the download size larger.  Instead, just include one copy of each: -->
        <mkdir dir="${root.dist.dir}/lib"/>
        <copy todir="${root.dist.dir}/lib" overwrite="true" flatten="true">
            <fileset dir="${lib.dir}">
                <include name="**/*.jar"/>
                <exclude name="**/docbook/*.jar"/>
            </fileset>
        </copy>
        <zip destfile="${build.dir}/${release.depzip.name}"
             basedir="${build.dir}"
             includes="${release.dir.name}/**"
             excludes="**/${release.zip.name}, **/lib/docbook/docbook-dtd/**, **/lib/docbook/docbook-xsl/**, **/lib/docbook/*.jar"/>
        <delete dir="${root.dist.dir}/lib"/>

    </target>

    <!-- ===================================================================
 -  all - everything
 -  =================================================================== -->
    <target name="all" depends="release" description="Do everything"/>

</project>

