<?xml version="1.0"?>
<!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 setup-props SYSTEM "../../config/properties.xml">
]>


<project name="webrunner" basedir="." default="jar">
      &setup-props;

     <property name="proxy.src" value="proxy"/>
     <property environment="myenv" />
     <property name="webtest.src" value="webtest"/>
     <property name="tomcattest.src" value="tomcattest"/>
     <property name="http2test.src" value="http2test"/>
     <property name="build.dest" value="build"/>
     <property name="java.classpath" value="${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${build.dest}:${myenv.APS_HOME}/lib/reporter.jar"/>
     <property name="server.host" value="dsingh"/>

  <target name="all" depends="compile-webtest,run-webtest">
        <!-- WRITEME -->
  </target>


  <target name="compile-proxy" depends="init-common">
    <!-- Compile the java code from ${src} into ${build} -->
    <echo message="Compiling Proxy Server source files (${name}) ..."/>
    <mkdir dir="${build.dest}"/>
    <javac
                srcdir="${proxy.src}"
                destdir="${build.dest}"
                classpath="${java.classpath}"
                debug="on"

    />
  </target>

  <target name="compile-webtest" depends="init-common">
    <!-- Compile the java code from ${src} into ${build} -->
    <echo message="Compiling Proxy Server source files (${name}) ..."/>
    <mkdir dir="${build.dest}"/>
    <javac
                srcdir="${webtest.src}"
                destdir="${build.dest}"
                classpath="${java.classpath}"
                debug="on"

    />
  </target>

  <target name="compile-tomcattest" depends="init-common">
    <!-- Compile the java code from ${src} into ${build} -->
    <echo message="Compiling Tomcat test util source files ..."/>
    <mkdir dir="${build.dest}"/>
    <javac
                srcdir="${tomcattest.src}"
                destdir="${build.dest}"
                classpath="${java.classpath}"
                debug="on"

    />
  </target>

  <target name="compile-http2test" depends="init-common">
    <!-- Compile the java code from ${src} into ${build} -->
    <echo message="Compiling Grizzly test source files (${name}) ..."/>
    <mkdir dir="${build.dest}"/>
    <javac
                srcdir="${http2test.src}"
                destdir="${build.dest}"
                classpath="${java.classpath}:${myenv.S1AS_HOME}/modules/nucleus-grizzly-all.jar"
                debug="on"

    />

  </target>

  <target name="run-webtest" depends="compile-webtest">
    <!-- Compile the java code from ${src} into ${build} -->
    <echo message="Running Web Test"/>
    <java
                        fork="on"
                        classpath="${java.classpath}:${build.dest}"
                        classname="com.sun.ejte.ccl.webrunner.webtest.WebTest">
                        <arg value="script.txt"/>
                        <arg value="${server.host}"/>

    </java>
  </target>

  <target name="run-proxy" depends="compile-proxy">
    <!-- Compile the java code from ${src} into ${build} -->
    <echo message="Starting webserver at port 1235"/>
    <java
                        fork="on"
                        classpath="${java.classpath}:${build.dest}"
                        classname="com.sun.ejte.ccl.webrunner.proxy.httpd">


    </java>
  </target>

  <target name="clean" depends="init-common">
    <delete dir="${build.dest}"/>
  </target>

<target name="jar" depends="compile-proxy,compile-webtest,compile-tomcattest,compile-http2test">
  <jar destfile="${myenv.APS_HOME}/lib/webtest.jar">
        <fileset dir="${build.dest}"/>
  </jar>
  </target>


  <target name="usage" depends="init-common">
    <echo >
    Targets are;
    ant compile-proxy
    ant compile-webtest
    ant run-webtest
    ant run-proxy
    </echo>
  </target>


</project>
