<?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 jaxwsTools SYSTEM "file:./../jaxwstools.xml">
<!ENTITY testproperties SYSTEM "file:./build.properties">
]>

<project name="prepkged-svc-1" default="all" basedir=".">

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

 <path id="classpath">
        <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="all" depends="clean, setup, runtest, undeploy"/>

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

    <target name="setup" depends="assemble-web, assemble-client, assemble-appclient, deploy-app, deploy-client, deploy-appclient"/>

    <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/AddNumbers.wsdl -b custom-server.xml -keep -d ${build.classes.dir} ${env.APS_HOME}/devtests/webservice/annotations/prepkged-svc-1/AddNumbers.wsdl"/>
      </antcall>
      <antcall target="compile"/>
      <copy file="sun-web.xml.template" tofile="sun-web.xml"/>
      <replace file="sun-web.xml">
        <replacefilter token="%TOKEN%" value="file:${env.APS_HOME}/build/localwsdl"/>
      </replace>
      <antcall target="pkg-war">
        <param name="wsdlfile.location" value="${env.APS_HOME}/devtests/webservice/annotations/prepkged-svc-1"/>
        <param name="wsdlfile.name" value="AddNumbers.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/prepkged-svc-1/AddNumbers.wsdl"/>
      </antcall>
      <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.template" tofile="client-sun-web.xml"/>
      <replace file="client-sun-web.xml">
        <replacefilter token="%TOKEN%" value="file:${env.APS_HOME}/build/localwsdl"/>
      </replace>
      <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="assemble-appclient" depends="init-common">
      <mkdir dir="${assemble.dir}"/>
      <mkdir dir="${build.classes.dir}/appclient"/>
      <antcall target="wsimport">
        <param name="wsimport.args"
          value="-b custom-client.xml -keep -d ${build.classes.dir}/appclient ${env.APS_HOME}/devtests/webservice/annotations/prepkged-svc-1/AddNumbers.wsdl"/>
      </antcall>
      <javac srcdir="." destdir="${build.classes.dir}/appclient"
            classpath="${env.APS_HOME}/lib/reporter.jar:${env.S1AS_HOME}/lib/j2ee.jar:${env.S1AS_HOME}/lib/webservices-rt.jar:${env.S1AS_HOME}/lib/webservices-tools.jar"
            includes="appclient/**"/>
      <mkdir dir="${build.classes.dir}/appclient/META-INF/wsdl"/>
      <copy file="AddNumbers.wsdl" todir="${build.classes.dir}/appclient/META-INF/wsdl"/>
      <unjar src="${env.APS_HOME}/lib/reporter.jar" dest="${build.classes.dir}/appclient"/>
      <copy file="${application-client.xml}" tofile="${build.classes.dir}/META-INF/application-client.xml" failonerror="false"/>
      <copy file="sun-application-client.xml.template" tofile="sun-application-client.xml"/>
      <replace file="${sun-application-client.xml}">
        <replacefilter token="%TOKEN%" value="file:${env.APS_HOME}/build/localwsdl"/>
      </replace>
      <copy file="${sun-application-client.xml}" tofile="${build.classes.dir}/META-INF/sun-application-client.xml" failonerror="false"/>
      <jar jarfile="${assemble.dir}/${appname}-client.jar" manifest="./appclient/MANIFEST.MF">
        <fileset dir="${build.classes.dir}/appclient">
          <include name="**"/>
        </fileset>
      </jar>
    </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="deploy-appclient">
      <antcall target="deploy-client-common"/>
      <move file="${assemble.dir}/${appname}-clientClient.jar" toFile="${assemble.dir}/${appname}AppClient.jar"/>
    </target>

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

    <target name="runtest" 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>
      <antcall target="runclient-common">
        <param name="appclient.application.args" value="http://${http.host}:${http.port}"/>
      </antcall>
    </target>
</project>

