<!--/*******************************************************************************
* 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="-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>
