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

<project name="wsdl_exposed_false" 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="endpoint" />
    </antcall>
  </target>

  <target name="assemble-web" depends="init-common, compile">

    <copy file="weblogic-webservices.xml.template" tofile="weblogic-webservices.xml" />
    <property name="localwsdldir" value="${build.classes.dir}/client" />
    <replace file="${basedir}/weblogic-webservices.xml">
      <replacefilter token="%TOKEN%" value="${localwsdldir}" />
    </replace>


    <antcall target="pkg-war">
      <param name="wsdlfile.location" value="${basedir}" />
      <param name="wsdlfile.name" value="AddNumbersService.wsdl" />
      <param name="schemafile.location" value="${basedir}" />
      <param name="schemafile.name" value="schema1.xsd" />

      <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}/service?WSDL" />
    <property name="localwsdldir" value="${build.classes.dir}/client" />
    <antcall target="wsimport">
      <param name="wsimport.args"
             value="-keep -p wls_dd.${ant.project.name}.client -d ${build.classes.dir}/client ${localwsdldir}/AddNumbersService.wsdl"
      />
    </antcall>
    <javac srcdir="."
           destdir="${build.classes.dir}/client"
           classpath="${env.APS_HOME}/lib/reporter.jar:${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/modules/webservices-osgi.jar"
           includes="client/**"
    />
  </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="wls_dd.${ant.project.name}.client.Client" />
      <param name="other-args" value="async-web-svc-test" />
    </antcall>
  </target>
</project>

