<!--/*******************************************************************************
* This program and the accompanying materials are made available under the 
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 
* which accompanies this distribution. 
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at 
* http://www.eclipse.org/org/documents/edl-v10.php.
*
*   Ant naming conventions:
*   - regardless of the actual OS platform,'/' is the directory separator
*     (Ant will convert as appropriate).
*   - multi-word properties use periods '.'
*     - properties ending in .jar define jarfile names only (no path)
*     - properties ending in .lib are fully qualified jars (path and filename)
*     - properties ending in .dir are directory paths
*     - properties ending in .path are path refid names (classpath fragments)
*   - multi-word targets use hyphens '-'
*     - targets beginning with test- are reserved for high level test targets,
*       and are used in test results parsing
*     - targets typically use the form <action>-<object>-<type> (ie. package-bundle-zip)
*   - multi-word macros use underscores '_'
*   - multi-word macro attributes are concatenated
*     e.g. 'runpathref'  
*   - multi-word tasks (taskdef) names are concatenated
*     e.g. 'validateconnection'
*   - OS environment variables are in ALLCAPS and have 'env' as a prefix
*     e.g. ${env.XXX}.
*   - Ant properties are lower case.
*
* Contributors:
*     kyuan - initial API and implementation
#******************************************************************************/-->

<!-- This ant project includes the following tasks:
        - jboss-install : recreates server and adds jars (ignore this step)
        - jboss-setup : creates connection pool
        - jboss-reset : removes connection pool
        - jboss-start : starts server
        - jboss-stop : stops server
        - jboss-deploy : deploys ear
        - jboss-undeploy : undeploys ear

        It requires some configuration of the jboss.properties, it should be run through build.xml, not directly.
        To connect to the jboss admin console use http://localhost:8080/jmx-console, this may be useful for debugging deployment failures.
        Sometimes if a test or deployment fails, you server gets screwed up and you need to re-install your domain (ant server.install).
-->

<project name="Eclipse Persistence Services JPA JBoss Testing" basedir=".">

    <property name="env" environment="env" value="env"/>
    <!-- Allows a user to overide certain user specific properties. -->
    <property file="${user.home}/jboss.properties"/>
    <property file="./jboss.properties"/>
    <property name="eclipselink.lib" value="../../${eclipselink.jar}"/>

    <!-- Set db name by check db.driver -->
    <condition property="db.name" value="oracle">
        <contains string="${db.driver}" substring="oracle"/>
    </condition>

    <condition property="db.name" value="mysql">
        <contains string="${db.driver}" substring="mysql"/>
    </condition>

    <condition property="db.name" value="mssql">
        <contains string="${db.driver}" substring="sqlserver"/>
    </condition>

    <condition property="db.name" value="db2">
        <contains string="${db.driver}" substring="db2"/>
    </condition>

    <condition property="db.name" value="sybase">
        <contains string="${db.driver}" substring="sybase"/>
    </condition>

    <condition property="is.eap">
        <contains string="${server.version}" substring="eap"/>
    </condition>

    <!-- Here will use default server configuration. -->
    <target name="jboss-install">
        <copy file="${junit.lib}" todir="${jboss.server}/lib"/>
        <copy file="${eclipselink.lib}" todir="${jboss.server}/lib"/>
        <copy file="${jdbc.driver.jar}" todir="${jboss.server}/lib"/>
        <copy file="${jpatest.2.sdo.plugins.dir}/${commonj.sdo.jar}" todir="${jboss.server}/lib" overwrite="true"/>
        <antcall target="copy-eclipselink-persistence-jars-to-domain-lib" inheritRefs="true"/>
    </target>

    <target name="copy-eclipselink-persistence-jars-to-domain-lib" if="is.eap">
        <copy file="${eclipselink.plugins.trunk}/${persistence10.jar}" todir="${jboss.server}/lib" overwrite="true"/>
    </target>

    <!-- This target is to create datasource required for running JPA tests on the JBoss server. -->
    <target name="jboss-setup">
        <copy todir="${jboss.server}/deploy">
            <fileset dir="./resource/jboss/">
                <include name="${db.name}-*.xml"/>
            </fileset>
        </copy>
        <replace file="${jboss.server}/deploy/${db.name}-ds.xml" token="@username@" value="${db.user}"/>
        <replace file="${jboss.server}/deploy/${db.name}-ds.xml" token="@password@" value="${db.pwd}"/>
        <replace file="${jboss.server}/deploy/${db.name}-ds.xml" token="@url@" value="${db.url}"/>
        <replace file="${jboss.server}/deploy/${db.name}-ds.xml" token="@driverclass@" value="${db.driver}"/>
        <replace file="${jboss.server}/deploy/${db.name}-xa-ds.xml" token="@username@" value="${db.user}"/>
        <replace file="${jboss.server}/deploy/${db.name}-xa-ds.xml" token="@password@" value="${db.pwd}"/>
        <replace file="${jboss.server}/deploy/${db.name}-xa-ds.xml" token="@url@" value="${db.url}"/>
        <replace file="${jboss.server}/deploy/${db.name}-xa-ds.xml" token="@driverclass@" value="${db.driver}"/>
    </target>

    <!-- This target is to remove the datasource created by target "jboss-setup" -->
    <target name="jboss-reset">
        <delete dir="${jboss.server}/tmp"/>
        <delete dir="${jboss.server}/work"/>
        <delete dir="${jboss.server}/data"/>
        <delete dir="${jboss.server}/log"/>
        <delete file="${jboss.server}/deploy/${db.name}-ds.xml"/>
    </target>

    <!-- Start the server. -->
    <target name="jboss-start">
        <java classname="org.jboss.Main" 
            fork="true"
            failonerror="false" >
            <jvmarg value="-XX:MaxPermSize=512m"/>
            <jvmarg value="-Xms512m"/>
            <jvmarg value="-Xmx960m"/>
            <sysproperty key="http.proxyHost" value="www-proxy.us.oracle.com"/>
            <sysproperty key="http.proxyPort" value="80"/>
            <sysproperty key="eclipselink.logging.level" value="${logging.level}"/>
            <sysproperty key="java.endorsed.dirs" value="${jboss.home}/lib/endorsed"/>
            <classpath>
                <!-- The following 2 jars are for 5.x version -->
                <pathelement location="${jboss.home}/lib/jboss-common-core.jar"/>
                <pathelement location="${jboss.home}/lib/jboss-logging-spi.jar"/>
                <!-- The following 2 jars are only for 6.0 and later version -->
                <pathelement location="${jboss.home}/lib/jboss-logging.jar"/>
                <pathelement location="${jboss.home}/lib/jboss-logmanager.jar"/>
                <pathelement location="${jboss.home}/bin/run.jar"/>
                <pathelement location="${jdbc.driver.jar}"/>
                <pathelement location="${oracle.extensions.depend.dir}/${oracle.xdb.jar}"/>
                <pathelement location="${oracle.extensions.depend.dir}/${oracle.xmlparser.jar}"/>
                <pathelement location="${oracle.extensions.depend.dir}/${oracle.sdoapi.jar}"/>
            </classpath>           
        </java>
    </target>

    <!-- Stop the server. -->
    <target name="jboss-stop">
        <java classname="org.jboss.Shutdown" 
            fork="true"
            failonerror="false">
            <arg line="-S -u ${server.user} -p ${server.pwd} ${server.url}"/>
            <classpath>
                <fileset dir="${server.lib}" includes="${server.depend}"/>
                <pathelement location="${jboss.home}/bin/shutdown.jar"/>
            </classpath>
        </java>
    </target>

    <!-- Deploy the application ear to the server. -->
    <target name="jboss-deploy">
        <copy todir="${jboss.deploy.dir}">
            <fileset dir="./">
                <include name="${ear.name}"/>
            </fileset>
        </copy> 
        <sleep seconds="10"/>
    </target>

    <!-- Undeploy the application ear to the server. -->
    <target name="jboss-undeploy">
        <delete>
            <fileset dir="${jboss.deploy.dir}" includes="*.ear,*.war"/>
        </delete>
    </target>

</project>
