<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE project [
<!--

    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<!ENTITY commonBuild SYSTEM "./../../config/common.xml">
]>

<project name="appMgtTestApp" default="usage" basedir=".">

    &commonBuild;

    <property name="testName" value="appmgt"/>
    <property name="webModuleName" value="appmgt-web.war"/>
    <property name="asadminCmdArg" value="${testName}/${webModuleName}"/>
    <property name="all.ear" value="${build}/archive/${testName}.ear"/>
    <property name="testCategory" value="ear/appmgt"/>
    <property name="urlToContact" value="${testName}/war"/>

    <property name="original.config.client.args" value="-param builtin=in-app -env builtin(java.lang.String)=in-app"/>
    <property name="customized.config.client.args" value="-env env1(java.lang.String)=env-val1 -param par1=par-val1"/>

    <target name="prepare" depends="init">
        <property name="all.war" value="${build}/${webModuleName}"/>
        <mkdir dir="${build}"/>
    </target>

    <target name="compile" depends="prepare">
        <javac srcdir="."
               destdir="${build}"
               debug="on"
               failonerror="true">
            <classpath refid="gfv3.classpath" />
        </javac>
    </target>

    <target name="assemble" depends="compile">
        <ant dir="../../war/appmgt" target="compile">
            <property name="build" value="${build}"/>
        </ant>

        <war destfile="${all.war}" webxml="web.xml">
            <classes dir="${build}"/>
        </war>


        <copy file="application.xml" todir="${build}/archive/META-INF"/>
        <copy file="${all.war}" todir="${build}/archive"/>
        <jar destfile="${all.ear}" basedir="${build}/archive"/>
    </target>

    <target name="deploy.asadmin" depends="prepare">
        <antcall target="common.deploy.asadmin">
            <param name="arg.list" value="${all.ear}"/>
            <param name="testName" value="${testName}"/>
        </antcall>
    </target>

    <target name="redeploy.asadmin" depends="prepare">
        <antcall target="common.redeploy.asadmin">
            <param name="arg.list" value="${all.ear}"/>
            <param name="testName" value="${testName}"/>
        </antcall>
    </target>

   <target name="v3.redeploy.asadmin" depends="prepare">
        <antcall target="common.v3.redeploy.asadmin">
            <param name="arg.list"
                   value="--name ${testName} ${all.ear}"/>
        </antcall>
    </target>

    <target name="undeploy.asadmin">
        <antcall target="common.undeploy.asadmin">
            <param name="arg.list" value="${testName}"/>
            <param name="testName" value="${testName}"/>
        </antcall>
    </target>

    <target name="enable.asadmin">
        <antcall target="common.enable.asadmin">
            <param name="arg.list"
                   value="${testName}"/>
        </antcall>
    </target>

    <target name="disable.asadmin">
        <antcall target="common.disable.asadmin">
            <param name="arg.list"
                   value="${testName}"/>
        </antcall>
    </target>

    <target name="deploy.jsr88" depends="prepare">
        <antcall target="common.deploy.jsr88">
            <param name="arg.list" value="${portable.war} ${deployplan.jar}"/>
        </antcall>
    </target>

    <target name="redeploy.jsr88" depends="prepare">
        <antcall target="common.run.jsr88">
            <param name="command" value="redeploy"/>
            <param name="arg.list" value="appmgt-portable ${portable.war} ${deployplan.jar}"/>
        </antcall>
    </target>

    <target name="undeploy.jsr88">
        <antcall target="common.undeploy.jsr88">
            <param name="arg.list" value="appmgt-portable"/>
        </antcall>
    </target>

    <target name="start.jsr88">
        <antcall target="common.run.jsr88">
            <param name="command" value="start"/>
            <param name="arg.list" value="appmgt-portable"/>
        </antcall>
    </target>

    <target name="stop.jsr88">
        <antcall target="common.run.jsr88">
            <param name="command" value="stop"/>
            <param name="arg.list" value="appmgt-portable"/>
        </antcall>
    </target>

    <target name="do.asadmin">
        <antcall target="common.run.asadmin">
            <param name="arg.list" value="${command} ${arg.list} ${asadminCmdArg}"/>
        </antcall>
    </target>

    <target name="run" depends="run.positive"/>

    <target name="run.positive" depends="setHttpPort">
        <antcall target="common.run.positive">
            <param name="link" value="${urlToContact}"/>
            <param name="log.id" value="${log.id}"/>
        </antcall>
    </target>

    <target name="run.negative" depends="setHttpPort">
        <antcall target="common.run.negative">
            <param name="link" value="${urlToContact}"/>
            <param name="log.id" value="${log.id}"/>
        </antcall>
    </target>

    <target name="runclient" depends="init">
        <echo message="TestClient ${arg.list}"/>
        <javaWithResult
            fork="true"
            failonerror="false"
            jvm="${JAVA}"
            classname="appmgttest.TestClient"
            output="${build}/${log.id}.output.log"
            resultproperty="result">
            <jvmarg value="-Dorg.omg.CORBA.ORBInitialHost=${http.host}"/>
            <jvmarg value="-Dorg.omg.CORBA.ORBInitialPort=${orb.port}"/>

            <classpath>
                <path location="${inst}/lib/j2ee.jar"/>
                <path location="${build}"/>
            </classpath>

            <arg line="${arg.list}"/>
        </javaWithResult>
        <antcall target="processResult">
            <param name="result" value="${result}"/>
            <param name="log" value="${build}/${log.id}.output.log"/>
        </antcall>
    </target>

    <target name="private-all" depends="private-all-pe"/>

    <target name="private-all-pe" if="PE">

        <antcall target="assemble"/>

        <antcall target="deploy.asadmin"/>

        <antcall target="runTests"/>

        <antcall target="undeploy.asadmin"/>

    </target>

    <target name="runTests">

        <!--
            Note that the client asks the servlet to report all its
            env-entries and all context-params.  Then the client uses the
            client command-line args to search for matching entries that the
            servlet returned.  We expect positive results for env-entries or
            context-params defined EITHER in the web app OR in the customizations,
            unless of course the customizations request ignoreDescriptorItem in
            which case the corresponding descriptor item should not appear in
            the data the servlet sends to the client.
        -->
        <antcall target="check.original.config.with.no.customization">
            <param name="log.id" value="1"/>
        </antcall>

        <!--
            Now create a new env entry and context param via customization.
        -->

        <antcall target="do.asadmin">
            <param name="command" value="set-web-env-entry"/>
            <param name="arg.list" value="--name=env1 --type=java.lang.String --value=env-val1"/>
        </antcall>

        <antcall target="do.asadmin">
            <param name="command" value="set-web-context-param"/>
            <param name="arg.list" value="--name=par1 --value=par-val1"/>
        </antcall>

        <antcall target="disable.asadmin"/>
        <antcall target="enable.asadmin"/>

        <antcall target="check.original.config.with.additive.customization">
            <param name="log.id" value="2"/>
        </antcall>

        <!--
            Further customize by suppressing the original env-entry and
            context-param but leaving the added ones.
        -->
        <antcall target="do.asadmin">
            <param name="command" value="set-web-env-entry"/>
            <param name="arg.list" value="--name builtin --ignoreDescriptorItem=true"/>
        </antcall>

        <antcall target="do.asadmin">
            <param name="command" value="set-web-context-param"/>
            <param name="arg.list" value="--name=builtin --ignoreDescriptorItem=true"/>
        </antcall>

        <!--
            Restart the app so the config changes will have effect.
        -->
        <antcall target="disable.asadmin"/>
        <antcall target="enable.asadmin"/>

        <antcall target="check.added.customization.and.suppressed.original.config">
            <param name="log.id" value="3"/>
        </antcall>

        <!--
            Make sure the results are the same after a redeployment.
        -->
        <antcall target="v3.redeploy.asadmin"/>

        <antcall target="check.added.customization.and.suppressed.original.config">
            <param name="log.id" value="4"/>
        </antcall>

        <!--
            Redeploy using deploy force=true.  The customizations should
            survive.
        -->

        <antcall target="redeploy.asadmin"/>

        <antcall target="check.added.customization.and.suppressed.original.config">
            <param name="log.id" value="5"/>
        </antcall>

        <!--
            Now unset the customizations and then make sure that the behavior
            is back to how it was immediately after the initial deployment.
        -->

        <antcall target="do.asadmin">
            <param name="command" value="unset-web-env-entry"/>
            <param name="arg.list" value="--name=env1"/>
        </antcall>

        <antcall target="do.asadmin">
            <param name="command" value="unset-web-env-entry"/>
            <param name="arg.list" value="--name builtin"/>
        </antcall>

        <antcall target="do.asadmin">
            <param name="command" value="unset-web-context-param"/>
            <param name="arg.list" value="--name=par1"/>
        </antcall>

        <antcall target="do.asadmin">
            <param name="command" value="unset-web-context-param"/>
            <param name="arg.list" value="--name=builtin"/>
        </antcall>

        <!-- Restart so the changes become effective. -->
        <antcall target="disable.asadmin"/>
        <antcall target="enable.asadmin"/>

        <antcall target="check.original.config.with.no.customization">
            <param name="log.id" value="6"/>
        </antcall>

        <!--
            The app is still deployed.  Undeploy it then deploy it again.
            The customizations should have vanished.
        -->

        <antcall target="undeploy.asadmin"/>

        <antcall target="deploy.asadmin"/>

        <antcall target="check.original.config.with.no.customization">
            <param name="log.id" value="7"/>
        </antcall>

    </target>

    <!--
        Makes sure the app's configuration matches how it
        was when first deployed, before any customization.
    -->
    <target name="check.original.config.with.no.customization">
        <antcall target="run.positive">
            <param name="log.id" value="${log.id}.1"/>
            <param name="desc" value="${testCategory} Check app's original config [${log.id}.1]"/>
            <param name="extra.args" value="${original.config.client.args}"/>
        </antcall>

        <antcall target="run.negative">
            <param name="log.id" value="${log.id}.2"/>
            <param name="desc" value="${testCategory} Make sure a non-existent customization is absent [${log.id}.2]"/>
            <param name="extra.args" value="-env notThere(java.lang.String)=in-app"/>
        </antcall>

        <antcall target="run.negative">
            <param name="log.id" value="${log.id}.3"/>
            <param name="desc" value="${testCategory} Make sure a customization used during the test is absent when it should be [${log.id}.3]"/>
            <param name="extra.args" value="${customized.config.client.args}"/>
        </antcall>
    </target>

    <!--
        Make sure that the customizations are
        reflected with the app's original config.
    -->
    <target name="check.original.config.with.additive.customization">
        <antcall target="run.positive">
            <param name="log.id" value="${log.id}.1"/>
            <param name="desc" value="${testCategory} Check app's original config plus additive customization [${log.id}.1]"/>
            <param name="extra.args" value="${original.config.client.args} ${customized.config.client.args}"/>
        </antcall>

    </target>

    <target name="check.additive.customization">
        <antcall target="run.positive">
            <param name="log.id" value="${log.id}.1"/>
            <param name="desc" value="${testCategory} Check for added env and param customization [${log.id}.1]"/>
            <param name="extra.args" value="${customized.config.client.args}"/>
        </antcall>
    </target>

    <target name="check.added.customization.and.suppressed.original.config">
        <antcall target="check.additive.customization">
            <param name="log.id" value="${log.id}.1"/>
        </antcall>
        <antcall target="check.suppressed.original.config">
            <param name="log.id" value="${log.id}.2"/>
        </antcall>
    </target>

    <target name="check.suppressed.original.config">
        <antcall target="run.negative">
            <param name="log.id" value="${log.id}.1"/>
            <param name="desc" value="${testCategory} Check for env-entry in the web app's descr being (correctly) ignored [${log.id}.1]"/>
            <param name="extra.args" value="-env builtin(java.lang.String)=in-app"/>
        </antcall>

        <antcall target="run.negative">
            <param name="log.id" value="${log.id}.2"/>
            <param name="desc" value="${testCategory} Check for context-param in the web app's descr being (correctly) ignored [${log.id}.2]"/>
            <param name="extra.args" value="-param builtin=in-app"/>
        </antcall>
    </target>

    <target name="clobber" depends="clean">
        <delete file="${all.ear}"/>
        <delete dir="${build}"/>
    </target>

    <target name="usage">
        <antcall target="all"/>
    </target>
</project>
