<project name="Spring Example Bundle Builder" default="build">

    <basename file="${basedir}" property="plugin.name"/>

    <property name="build.dir" value="build"/>
    <property name="src.dir" value="src"/>
    <property name="jar.name" value="bundle-${plugin.name}.jar"/>
    <property name="jar.file" value="${build.dir}/jar/${jar.name}"/>

    <property name="app.base" value="${basedir}/../../../../"/>
    <property name="lib.app" value="${app.base}/dotCMS/WEB-INF/lib"/>
    <property name="lib.bundles" value="${app.base}/dotCMS/WEB-INF/felix/bundle"/>
    <property name="lib.server" value="${app.base}/tomcat/lib"/>
    <property name="deploy.dir" value="${app.base}/dotCMS/WEB-INF/felix/load"/>
    <property name="build.classes" value="${build.dir}/classes"/>

    <property name="meta-inf.dir" value="META-INF"/>
    <property name="classpath.dir" value="classpath"/>
    <property name="manifest.file" value="${meta-inf.dir}/MANIFEST.MF"/>

    <path id="files-classpath">
        <fileset dir="${lib.app}">
            <include name="**/*.jar"/>
        </fileset>
        <fileset dir="${lib.bundles}">
            <include name="**/*.jar"/>
        </fileset>
        <fileset dir="lib">
            <include name="**/*.jar"/>
        </fileset>
        <fileset dir="${lib.server}">
            <include name="**/*.jar"/>
        </fileset>
        <!--Bundles can depend on other bundles-->
        <fileset dir="${deploy.dir}">
            <include name="**/*.jar"/>
        </fileset>
        <pathelement path="${build.classes}"/>
        <pathelement path="../../build/classes"/>
    </path>

    <target name="build" depends="clean,compile,jar"/>
    <target name="compile">

        <echo>Building at: ${plugin.name} at ${basedir}</echo>
        <mkdir dir="${build.classes}"/>
        <mkdir dir="${src.dir}"/>
        <!--
          CREATE THE LIB DIRECTORIES IF IT DOESN'T EXIST.
          THIS PREVENTS THE javac TASK FROM FAILING
          -->
        <mkdir dir="lib"/>
        <javac debug="true" debuglevel="lines,vars,source" fork="true" srcdir="${src.dir}" destdir="${build.classes}"
               source="1.5" target="1.5" compiler="javac1.5" nowarn="true" optimize="true" memoryinitialsize="256m"
               memorymaximumsize="512m">
            <classpath refid="files-classpath"/>
        </javac>
        <!-- copying other resource within src folder in the classpath -->
        <copy todir="${build.classes}">
            <fileset dir="${src.dir}">
                <exclude name="**/*.java"/>
            </fileset>
        </copy>
    </target>

    <target name="jar" depends="compile,doif">
        <mkdir dir="${build.dir}/jar"/>

        <!--
          CREATE DIRECTORIES THAT DON'T EXIST.
          THIS PREVENTS THE jar TASK FROM FAILING
          -->
        <mkdir dir="${build.classes}"/>
        <mkdir dir="lib"/>

        <jar jarfile="${jar.file}" manifest="${manifest.file}">
            <metainf dir="${meta-inf.dir}" />
            <fileset dir="${build.classes}"/>
            <!--<zipfileset dir="lib" prefix="lib"/>-->
            <!--<zipfileset dir="${web-inf.dir}" prefix="${web-inf.dir}"/>-->

            <zipfileset dir=".">
                <exclude name="src/**"/>
                <exclude name="build/**"/>
                <exclude name="META-INF/**"/>
                <exclude name="build.xml"/>
            </zipfileset>

            <!--<service type="org.apache.commons.logging.LogFactory" provider="org.apache.commons.logging.impl.LogFactoryImpl"/>-->
            <!--<service type="javax.xml.parsers.DocumentBuilderFactory" provider="org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/>-->
        </jar>

    </target>

    <target name="doif" depends="checkFileExists, if_target"/>
    <target name="checkFileExists">
        <condition property="p">
            <available file="${classpath.dir}"/>
        </condition>
    </target>
    <target name="if_target" if="p">
        <jar destfile="${lib.app}/bundle-${plugin.name}-classpath.jar" basedir="${classpath.dir}"/>
    </target>

    <target name="clean">
        <delete dir="${build.dir}"/>
    </target>

    <target name="deploy">
        <copy file="${jar.file}" tofile="${deploy.dir}/${jar.name}"/>
    </target>

    <target name="undeploy">
        <delete file="${deploy.dir}/${jar.name}"/>
    </target>

</project>