<?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="contextRoot" value="war"/>
    <property name="testName" value="appmgt"/>

    <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="portable.war" value="${build}/${testName}-portable.war"/>
        <property name="all.war" value="${build}/${testName}.war"/>
        <property name="deployplan.jar" value="${build}/${testName}-deployplan.jar"/>
        <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">
        <war destfile="${portable.war}" webxml="web.xml">
            <classes dir="${build}"/>
        </war>
        <jar destfile="${deployplan.jar}">
            <fileset dir="${basedir}" includes="sun-web.xml"/>
        </jar>
        
        <war destfile="${all.war}" webxml="web.xml">
            <webinf dir="." includes="sun-web.xml"/>
            <classes dir="${build}"/>
        </war>
    </target>

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

    <target name="redeploy.asadmin" depends="prepare">
        <antcall target="common.redeploy.asadmin">
            <param name="arg.list" value="${all.war}"/>
            <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.war}"/>
        </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} ${testName}"/>
        </antcall>
    </target>

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

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

    <target name="run.negative" depends="setHttpPort">
        <antcall target="common.run.negative">
            <param name="link" value="${contextRoot}/${testName}"/>
            <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}"/>
            <jvmarg value="-Djava.endorsed.dirs=${inst}/lib/endorsed"/>

            <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"/>

        <!--
            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>


        <!-- undeploy for the last time. We're done. -->
        <antcall target="undeploy.asadmin"/>


    </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="war/appmgt 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="war/appmgt 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="war/appmgt 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="war/appmgt 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="war/appmgt 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="war/appmgt 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="war/appmgt 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="${portable.war}"/>
        <delete file="${all.war}"/>
        <delete file="${deployplan.war}"/>
        <delete dir="${build}"/>
    </target>

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