<?xml version="1.0"?>
<!--

    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

-->

<!DOCTYPE project [
<!ENTITY commonSetup SYSTEM "file:./../../../../config/properties.xml">
<!ENTITY commonBuild SYSTEM "file:./../../../../config/common.xml">
<!ENTITY commonRun SYSTEM "file:./../../../../config/run.xml">
<!ENTITY jaxwsTools SYSTEM "file:./../jaxwstools.xml">
<!ENTITY testproperties SYSTEM "file:./build.properties">
]>

<project name="Hello2" default="core" basedir=".">

        &commonSetup;
        &commonBuild;
        &commonRun;
        &testproperties;
        &jaxwsTools;

        <property name="src-name" value="endpoint/Hello.java"/>
        <property name="client-src-name" value="client/Client.java"/>

        <target name="compile" depends="init-common">
          <antcall target="compile-common">
            <param name="src" value="endpoint"/>
          </antcall>
        </target>

         <target name="deploy-app">
          <antcall target="deploy-war-common">
            <param name="contextroot" value="${appname}"/>
          </antcall>
        </target>

        <target name="undeploy" depends="init-common">
            <antcall target="undeploy-war-common"/>
            <antcall target="undeploy-client"/>
        </target>



        <target name="all" depends="clean, setup, runtest1,  undeploy"/>
        <target name="runtest1" depends="init-common">
          <mkdir dir="${build.classes.dir}/client"/>
          <javac srcdir="." destdir="${build.classes.dir}/client"
                classpath="${env.APS_HOME}/lib/reporter.jar"
                includes="client/**"/>
          <unjar src="${env.APS_HOME}/lib/reporter.jar" dest="${build.classes.dir}/client"/>
          <java classname="client.TestClient">
            <classpath>
              <pathelement path="${build.classes.dir}/client"/>
            </classpath>
            <arg value="http://${http.host}:${http.port}/wsclient/RequestProcessor"/>
          </java>
          <!--restore the tokens back in file-->
          <replace file="webclient/Client.java" token="${http.host}" value="HTTP_HOST"/>
          <replace file="webclient/Client.java" token="${http.port}" value="HTTP_PORT"/>
        </target>


        <target name="setup" depends="assemble-web, deploy-app, assemble-client,deploy-client"/>
        <target name="assemble-web" depends="init-common, compile">
          <antcall target="pkg-war">
            <param name="war.classes" value="${build.classes.dir}"/>
            <param name="war.file" value="${assemble.dir}/${appname}-web.war"/>
           </antcall>
        </target>

        <target name="clean" depends="init-common">
          <antcall target="clean-common"/>
        </target>

        <target name="assemble-client" depends="init-common">
          <mkdir dir="${build.classes.dir}/webclient/WEB-INF/classes"/>
          <antcall target="wsimport">
            <param name="wsimport.args"
              value="-p client   -keep -d ${build.classes.dir}/webclient/WEB-INF/classes http://${http.host}:${http.port}/oneway/HelloService?wsdl"/>
          </antcall>
          <replace file="webclient/Client.java" value="${http.host}" token="HTTP_HOST"/>
          <replace file="webclient/Client.java" value="${http.port}" token="HTTP_PORT"/>
          <javac srcdir="." destdir="${build.classes.dir}/webclient/WEB-INF/classes"
                includes="webclient/**">
             <classpath refid="classpath"/>

          </javac>
          <copy file="client-web.xml" tofile="${build.classes.dir}/webclient/WEB-INF/web.xml"/>
          <copy file="client-sun-web.xml" tofile="${build.classes.dir}/webclient/WEB-INF/sun-web.xml"/>
          <jar destfile="${assemble.dir}/wsclient.war" basedir="${build.classes.dir}/webclient" includes="**"/>
        </target>


        <target name="undeploy-client" depends="init-common">
          <exec executable="${ASADMIN}">
            <arg line="undeploy"/>
            <arg line="--user ${admin.user}"/>
            <arg line="--passwordfile ${admin.password.file}"/>
            <arg line="--host ${admin.host}"/>
            <arg line="--port ${admin.port}"/>
            <arg line="wsclient"/>
          </exec>
        </target>

        <target name="deploy-client" depends="init-common">
          <property name="client.war" value="${assemble.dir}/wsclient.war"/>      <echo message="Deploying ${wsdl.war} from ${basedir}." level="verbose"/>
          <exec executable="${ASADMIN}">
            <arg line="deploy"/>
            <arg line="--user ${admin.user}"/>
            <arg line="--passwordfile ${admin.password.file}"/>
            <arg line="--host ${admin.host}"/>
            <arg line="--port ${admin.port}"/>
            <arg line="${client.war}"/>
          </exec>
        </target>



        <target name="report-success">
                <echo message="Test PASSED"/>
        </target>

        <target name="report-failure">
                <echo message="Test FAILED"/>
        </target>

    </project>


<!--
<!DOCTYPE project [
<!ENTITY commonBuild SYSTEM "file:./../annotations-common.xml">
]>

<project name="Hello" default="core" basedir=".">

    &commonBuild;
    <property name="src-name" value="endpoint/Hello.java"/>
    <property name="client-src-name" value="client/Client.java"/>

    <target name="run-client">
        <echo message="Deployed passed"/>
    </target>

    <target name="report-success">
            <echo message="Test PASSED"/>
    </target>

    <target name="report-failure">
            <echo message="Test FAILED"/>
    </target>

</project>
-->
