<?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="libdependent" 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, deploy-app, assemble-client"/>

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

    <target name="assemble-web" depends="init-common, compile">
      <mkdir dir="${assemble.dir}"/>
      <echo message="my build classes dir is:${build.classes.dir}" level="verbose"/>
      <mkdir dir="${build.classes.dir}/tmp"/>
      <mkdir dir="${build.classes.dir}/tmp/WEB-INF"/>
      <mkdir dir="${build.classes.dir}/tmp/WEB-INF/classes"/>
      <mkdir dir="${build.classes.dir}/tmp/WEB-INF/lib"/>
      <jar jarfile="${build.classes.dir}/tmp/WEB-INF/lib/dep.jar" update="true">
        <fileset dir="${build.classes.dir}" casesensitive="yes">
          <include name="outsidepkg/*class*"/>
        </fileset>
      </jar>
      <copy file="${web.xml}"
          tofile="${build.classes.dir}/tmp/WEB-INF/web.xml" failonerror="false"/>
      <copy todir="${build.classes.dir}/tmp/WEB-INF/classes">
          <fileset dir="${build.classes.dir}">
              <include name="endpoint/*.class"/>
          </fileset>
      </copy>
      <echo message="Creating war file ${assemble.dir}/${appname}-web.war" level="verbose"/>
      <jar jarfile="${assemble.dir}/${appname}-web.war" update="true">
        <fileset dir="${build.classes.dir}/tmp" casesensitive="yes">
          <include name="**/*class*"/>
        </fileset>
        <fileset dir="${build.classes.dir}/tmp/" casesensitive="true">
          <include name="WEB-INF/web.xml"/>
          <include name="WEB-INF/lib/*.jar"/>
        </fileset>
      </jar>
      <echo message="created war file ${assemble.dir}/${appname}-web.war" level="verbose"/>
    </target>

    <target name="assemble-client" depends="init-common">
      <antcall target="compile-client">
        <param name="test-wsdl-uri" value="${appname}/webservice/HelloService?WSDL"/>
        <param name="client-src" value="client"/>
      </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"/>
    </target>

    <target name="runclient">
      <antcall target="run-client">
        <param name="client-class" value="client.Client"/>
        <param name="other-args" value="libdependent-war"/>
      </antcall>
    </target>
</project>

