<!--/*******************************************************************************
* 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:
*     tware - initial API and implementation
#******************************************************************************/-->

<!-- This ant project includes the following tasks:
        - oc4j-install : recreates server installation from download zip
        - oc4j-setup : creates connection pool
        - oc4j-reset : removes connection pool
        - oc4j-start : starts server
        - oc4j-stop : stops server
        - oc4j-deploy : deploys ear
        - oc4j-undeploy : undeploys ear

        It requires some configuration of the oc4j.properties, it should be run through build.xml, not directly.
    -->
<project name="Eclipse Persistence Services JPA OC4J Testing" basedir=".">

    <!-- Allows a user to overide certain user specific properties. -->
    <property file="${user.home}/oc4j.properties"/>
    <property file="./oc4j.properties"/>
    <property name="eclipselink.lib" value="../../${eclipselink.jar}"/>

    <!--
        This target is to install OC4J server at ${oc4j.home}. 
        Before calling this target, you need to obtain Oracle OC4J standalone zip - oc4j.extended.zip and put it at ${extension.oracle.lib.external}
    -->
    <target name="oc4j-install">
        <delete dir="${oc4j.home}"/>
        <mkdir dir="${oc4j.home}"/>
        <unzip src="${oc4j.extended.zip}" dest="${oc4j.home}"/>
        <!--Change password for admin-->
        <java classname="oracle.security.jazn.util.JAZNInstallHelper" fork="true" dir="${oc4j.home}/j2ee/home">
            <classpath>
                <pathelement location="${oc4j.home}/j2ee/home/jazncore.jar" />
                <pathelement location="${oc4j.home}/j2ee/home/jazn.jar" />
            </classpath>
            <arg line="-oh ${oc4j.home} -realm jazn.com -user ${server.user} -oldpwd welcome -newpwd ${server.pwd} -clearpwd true"/>
        </java>

        <copy file="${eclipselink.lib}" todir="${oc4j.home}/j2ee/home/applib"/>
        <copy file="${junit.lib}" todir="${oc4j.home}/j2ee/home/applib"/>
        <copy file="${jdbc.driver.jar}" todir="${oc4j.home}/j2ee/home/applib"/>
        <copy file="${oracle.extensions.depend.dir}/${oracle.sdoapi.jar}" todir="${oc4j.home}/j2ee/home/applib"/>
    </target>

    <!-- Start the server. -->
    <target name="oc4j-start">
        <property file="${user.home}/oc4j.properties"/>
        <property file="./oc4j.properties"/>
        <java jar="${oc4j.home}/j2ee/home/oc4j.jar"
            fork="true"
            failonerror="false">
            <jvmarg value="-Xms512m"/>
            <jvmarg value="-Xmx960m"/>
            <jvmarg value="-XX:PermSize=128m"/>
            <jvmarg value="-XX:MaxPermSize=256m"/>
            <arg value="-config"/>
            <arg value="${oc4j.home}/j2ee/home/config/server.xml"/>
            <arg value="-userThreads"/>
            <!--jvmarg value="-Xdebug"/-->
            <!--jvmarg value="-Xnoagent"/-->
            <!--jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4000"/-->
            <!--sysproperty key="http.proxyHost" value="www-proxy.us.oracle.com"/-->
            <!--sysproperty key="http.proxyPort" value="80"/-->
            <sysproperty key="eclipselink.logging.level" value="${logging.level}"/>
        </java>
    </target>

    <!--
        This target is to create connection pool and managed datasource required for running JPA tests on the OC4J server
        Note: OC4J server must be up while calling this target
    -->
    <target name="oc4j-setup">
        <antcall target="create-connection-pool" inheritRefs="true"/>
        <antcall target="create-managed-datasource" inheritRefs="true"/>
    </target>

    <!--
        This target is to remove the connection pool and managed datasource created by target <oc4j.setup>
        Note: OC4J server must be up while calling this target
    -->
    <target name="oc4j-reset">
        <antcall target="remove-datasource" inheritRefs="true"/>
        <antcall target="remove-connection-pool" inheritRefs="true"/>
    </target>

    <target name="create-connection-pool">
        <java jar="${oc4j.home}/j2ee/home/admin_client.jar" fork="true">
            <arg value="deployer:oc4j:${oc4j.httphost}:${oc4j.rmiport}"/>
            <arg value="${server.user}"/>
            <arg value="${server.pwd}"/>
            <arg value="-addDataSourceConnectionPool"/>
            <arg value="-name"/>
            <arg value="ejbPool"/>
            <arg value="-factoryClass"/>
            <arg value="oracle.jdbc.pool.OracleDataSource"/>
            <arg value="-dbUser"/>
            <arg value="${db.user}"/>
            <arg value="-dbPassword"/>
            <arg value="${db.pwd}"/>
            <arg value="-url"/>
            <arg value="${db.url}"/>
        </java>
    </target>

    <target name="create-managed-datasource">
        <java jar="${oc4j.home}/j2ee/home/admin_client.jar" fork="true">
            <arg value="deployer:oc4j:${oc4j.httphost}:${oc4j.rmiport}"/>
            <arg value="${server.user}"/>
            <arg value="${server.pwd}"/>
            <arg value="-addManagedDataSource"/>
            <arg value="-name"/>
            <arg value="EclipseLinkDS"/>
            <arg value="-jndiLocation"/>
            <arg value="jdbc/EclipseLinkDS"/>
            <arg value="-connectionPoolName"/>
            <arg value="ejbPool"/>
        </java>
    </target>

    <target name="remove-datasource">
        <java jar="${oc4j.home}/j2ee/home/admin_client.jar" fork="true">
            <arg value="deployer:oc4j:${oc4j.httphost}:${oc4j.rmiport}"/>
            <arg value="${server.user}"/>
            <arg value="${server.pwd}"/>
            <arg value="-removeManagedDatasource"/>
            <arg value="-name"/>
            <arg value="EclipseLinkDS"/>
        </java>
    </target>

    <target name="remove-connection-pool">
        <java jar="${oc4j.home}/j2ee/home/admin_client.jar" fork="true">
            <arg value="deployer:oc4j:${oc4j.httphost}:${oc4j.rmiport}"/>
            <arg value="${server.user}"/>
            <arg value="${server.pwd}"/>
            <arg value="-removeDataSourceConnectionPool"/>
            <arg value="-name"/>
            <arg value="ejbPool"/>
        </java>
    </target>

    <!-- Stop the server. -->
    <target name="oc4j-stop">
        <property file="${user.home}/oc4j.properties"/>
        <property file="./oc4j.properties"/>
        <java jar="${oc4j.home}/j2ee/home/admin_client.jar"
            fork="true"
            failonerror="false">
            <arg value="deployer:oc4j:${oc4j.httphost}:${oc4j.rmiport}"/>
            <arg value="${server.user}"/>
            <arg value="${server.pwd}"/>
            <arg value="-shutdown"/>
            <arg value="force"/>
        </java>
    </target>

    <!--
        Deploy the application ear to the server.
        Note: OC4J server must be running.
    -->
    <target name="oc4j-deploy">
        <java jar="${oc4j.home}/j2ee/home/admin_client.jar"
            fork="true"
            failonerror="false">
            <arg value="deployer:oc4j:${oc4j.httphost}:${oc4j.rmiport}"/>
            <arg value="${server.user}"/>
            <arg value="${server.pwd}"/>
            <arg value="-deploy"/>
            <arg value="-file"/>
            <arg value="${ear.name}"/>
            <arg value="-deploymentName"/>
            <arg value="${application.name}"/>
        </java>
    </target>

    <!--
        Undeploy the application ear to the server.
        Note: OC4J server must be running.
    -->
    <target name="oc4j-undeploy">
        <java jar="${oc4j.home}/j2ee/home/admin_client.jar"
            fork="true"
            failonerror="false">
            <arg value="deployer:oc4j:${oc4j.httphost}:${oc4j.rmiport}"/>
            <arg value="${server.user}"/>
            <arg value="${server.pwd}"/>
            <arg value="-undeploy"/>
            <arg value="${application.name}"/>
        </java>
    </target>

</project>
