<?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">
]>

<!--
  Test directory deployment for war with directory structure such
  as bar.war
-->

<project name="directoryDeploy-withWarSuffix" default="all" basedir=".">

         &commonBuild;

    <property name="testName" value="dirDeployWithWarSuffix"/>
    <property name="contextRoot" value="foo"/>
    <property name="web.build.dir"
              value="${build}/${testName}.war"/>
    <property name="client.build.dir" value="${build}/client"/>

    <target name="prepare" depends="init">
       <mkdir dir="${build}" />
       <mkdir dir="${web.build.dir}" />
       <mkdir dir="${web.build.dir}/WEB-INF/classes" />
       <mkdir dir="${client.build.dir}" />
    </target>

    <target name="compile" depends="prepare">
       <javac srcdir="../war/war" destdir="${web.build.dir}/WEB-INF/classes">
                        <classpath refid="gfv3.classpath"/>
         </javac>
         <javac destdir="${client.build.dir}/">
                         <src path="../client"/>
                         <include name="TestClient.java"/>
            <classpath>
                <path refid="gfv3.classpath"/>
                <path location="${ejb.build.dir}"/>
            </classpath>
          </javac>
    </target>

    <target name="assemble" depends="compile">
            <copy file="../war/descriptor/web.xml" todir="${web.build.dir}/WEB-INF"/>
            <copy file="../war/descriptor/sun-web.xml"
                  todir="${web.build.dir}/WEB-INF"
                  failonerror="false"/>
    </target>

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

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

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

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

    <target name="run.positive" depends="setHttpPort">
        <property name="url" value="http://${http.host}:${depltest.port}/${contextRoot}/servletonly"/>
        <antcall target="runclient">
            <param name="arg.list" value="${url} true"/>
            <param name="log.id" value="${log.id}"/>
        </antcall>
    </target>

    <target name="run.negative" depends="setHttpPort">
        <property name="url" value="http://${http.host}:${depltest.port}/${contextRoot}/${testName}"/>
        <antcall target="runclient">
            <param name="arg.list" value="${url} false"/>
            <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="directorydeploy.client.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 refid="gfv3.classpath"/>
                <path location="${client.build.dir}"/>
            </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">
        <antcall target="assemble"/>
       <antcall target="declare-test">
            <param name="description" value="directorydeploy/warWithSuffix Test asadmin deploydir"/>
        </antcall>
        <antcall target="deploydir.asadmin"/>
        <antcall target="run.positive"><param name="log.id" value="1"/></antcall>

        <antcall target="declare-test">
            <param name="description" value="directorydeploy/warWithSuffix Test asadmin redeploydir"/>
        </antcall>
        <antcall target="redeploydir.asadmin"/>
        <antcall target="run.positive"><param name="log.id" value="2"/></antcall>
        <antcall target="declare-test">
            <param name="description" value="directorydeploy/warWithSuffix Test asadmin undeploydir"/>
        </antcall>
        <antcall target="undeploy.asadmin"/>
        <antcall target="run.negative"><param name="log.id" value="3"/></antcall>
    </target>

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


</project>
