<?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="webservicerefs" default="all" basedir=".">
    
    &commonSetup;
    &commonBuild;
    &commonRun;
    &testproperties;
    &jaxwsTools;
    
    <path id="client-classpath">
        <pathelement path="${env.APS_HOME}/lib/reporter.jar"/>
        <pathelement path="${env.S1AS_HOME}/lib/j2ee.jar"/>
        <pathelement path="${env.S1AS_HOME}/lib/webservices-rt.jar"/>
        <pathelement path="${env.S1AS_HOME}/lib/webservices-tools.jar"/>
        <pathelement path="${env.S1AS_HOME}/lib/activation.jar"/>
        <pathelement path="${env.S1AS_HOME}/lib/appserv-rt.jar"/>
    </path>
    
    <target name="all" depends="clean, setup-web, clean, setup-ejb, assemble-client, runclient, undeploy"/>
    
    <target name="clean" depends="init-common">
        <antcall target="clean-common"/>
    </target>
    
    <target name="setup-web" depends="assemble-web, deploy-web-app"/>
    <target name="setup-ejb" depends="assemble-ejb, deploy-ejb-jar"/>
    
    <target name="assemble-ejb">
        <antcall target="compile-common">
            <param name="src" value="ejb_endpoint"/>
        </antcall>
        <copy toDir="${build.classes.dir}">
            <fileset dir="${ejb.wsit.descriptors}"/>
        </copy>
        <antcall target="pkg-ejb-jar">
            <param name="jar.classes" value="ejb_endpoint/**"/>
            <param name="jar.file" value="${assemble.dir}/${appname}-ejb.jar"/>
        </antcall>
    </target>
    
    <target name="assemble-web">
        <antcall target="compile-common">
            <param name="src" value="servlet_endpoint"/>
        </antcall>
        <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="assemble-client" depends="init-common">
        <mkdir dir="${build.classes.dir}/client"/>
        <echo message="wsimporting http://${http.host}:${http.port}/${appname}/webservice/ServletHelloService?WSDL"/>
        <antcall target="wsimport">
            <param name="wsimport.args"
                   value="-keep -d ${build.classes.dir}/client http://${http.host}:${http.port}/${appname}/webservice/ServletHelloService?WSDL"/>
        </antcall>
        <echo message="wsimporting http://${http.host}:${http.port}/WSHelloEJBService/WSHelloEJB?WSDL"/>
        <antcall target="wsimport">
            <param name="wsimport.args"
                   value="-keep -d ${build.classes.dir}/client http://${http.host}:${http.port}/WSHelloEJBService/WSHelloEJB?WSDL"/>
        </antcall>
        <javac srcdir="." destdir="${build.classes.dir}/client" 
               includes="client/**">
            <classpath refid="client-classpath"/>
        </javac>
        <copy toDir="${build.classes.dir}/client">
            <fileset dir="${client.wsit.descriptors}"/>
        </copy>
    </target>
    
    <target name="deploy-web-app">
        <antcall target="deploy-war-common">
            <param name="contextroot" value="${appname}"/>
        </antcall>
    </target>
    
    <target name="deploy-ejb-jar">
        <antcall target="deploy-jar-common"/>
    </target>
    
    <target name="undeploy" depends="init-common">
        <antcall target="undeploy-war-common"/>
        <antcall target="undeploy-jar-common"/>
    </target>
    
    <target name="runclient">
      <antcall target="run-client">
        <param name="client-class" value="client.Client"/>
        <param name="other-args" value="${http.host} ${http.port} soap-tcp"/>
      </antcall>
    </target>

    <target name="runclient-standalone">
        <echo message="running client: client.Client dir: ${build.classes.dir}/client"/>
        <java fork="true" classname="client.Client" dir="${build.classes.dir}/client">
            <jvmarg value="-Djava.util.logging.config.file=logging.properties"/>
            <classpath>
                <path refid="client-classpath"/>
                <pathelement path="${build.classes.dir}/client"/>
            </classpath>
        </java>
    </target>

    <target name="debugclient">
        <echo message="running client: client.Client dir: ${build.classes.dir}/client"/>
        <java fork="true" classname="client.Client" dir="${build.classes.dir}/client">
            <jvmarg value="-Xdebug"/>
            <jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9008"/>
            <jvmarg value="-Djava.util.logging.config.file=logging.properties"/>
            <classpath>
                <path refid="client-classpath"/>
                <pathelement path="${build.classes.dir}/client"/>
            </classpath>
        </java>
    </target>
</project>

