<?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="svchandler-2" default="all" basedir=".">

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

    <target name="all" depends="clean, setup, runclient, undeploy"/>

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

    <target name="setup" depends="assemble-web, assemble-client, deploy-app, deploy-client"/>
<path id="class.path">
        <fileset dir="${env.S1AS_HOME}/modules">
            <include name="**/*.jar"/>
        </fileset>
        <fileset dir="${env.S1AS_HOME}/modules/endorsed">
            <include name="**/*.jar"/>
        </fileset>
        <fileset dir="${env.APS_HOME}/lib">
            <include name="**/*.jar"/>
        </fileset>

    </path>


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

    <target name="assemble-web" depends="init-common">
      <mkdir dir="${build.classes.dir}"/>
      <antcall target="wsimport">
        <param name="wsimport.args"
          value="-wsdllocation WEB-INF/wsdl/SubtractNumbers.wsdl -b custom-server.xml -keep -d ${build.classes.dir} ${env.APS_HOME}/devtests/webservice/annotations/svchandler-2/SubtractNumbers.wsdl"/>
      </antcall>
      <antcall target="compile"/>
      <copy file="endpoint/myhandler.xml" todir="${build.classes.dir}/endpoint"/>
      <antcall target="pkg-war">
        <param name="handler.name" value="myhandler.xml"/>
        <param name="wsdlfile.location" value="${env.APS_HOME}/devtests/webservice/annotations/svchandler-2"/>
        <param name="wsdlfile.name" value="SubtractNumbers.wsdl"/>
        <param name="war.classes" value="${build.classes.dir}"/>
        <param name="war.file" value="${assemble.dir}/${appname}-web.war"/>
       </antcall>
    </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="-b custom-client.xml -keep -d ${build.classes.dir}/webclient/WEB-INF/classes ${env.APS_HOME}/devtests/webservice/annotations/svchandler-2/SubtractNumbers.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"
            classpathref="class.path"
            includes="webclient/**"/>
      <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="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="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-app">
      <antcall target="deploy-war-common">
        <param name="contextroot" value="${appname}"/>
      </antcall>
    </target>

    <target name="restart-test">
      <antcall target="restart-server-instance-common"/>
      <antcall target="runclient"/>
    </target>

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

    <target name="runclient" 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>
</project>

