<!--

    Copyright (c) 2002, 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 testproperties SYSTEM "file:./build.properties">
]>

<project name="xsd test" default="usage" basedir=".">

  <!-- include common.xml and testcommon.xml -->
    &commonSetup;
    &commonBuild;
    &testproperties;

  <target name="all" depends="clean,build,deploy,run,undeploy"/>


  <target name="run.wscompile">
        <exec executable="${WSCOMPILE}" failonerror="true" >
        <arg line="-source 1.1.2 ${wscompile.command}" />
        </exec>
  </target>

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

  <target name="build" depends="init-common, clean">
    <antcall target="wscompile-ejb"/>
    <antcall target="wscompile-appclient"/>
    <antcall target="assemble"/>
  </target>

  <target name="wscompile-appclient" depends="init-common">
    <mkdir dir="output"/>
    <antcall target="run.wscompile">
      <param name="wscompile.command"
       value="-import -keep -d output -s output -classpath . -mapping SignatureMapping_appclient.xml -Xprintstacktrace -Xdebugmodel:appclient.model.txt wscompile_config_appclient.xml"/>
    </antcall>
    <copy todir="${build.classes.dir}/signature">
       <fileset dir="output/signature"
        includes="SignatureTestService.class, SignatureTest.class, MyDateValueType.class, MySecondDateValueType.class"/>
    </copy>
<!--
    <delete dir="output"/>
-->
  </target>

  <target name="wscompile-ejb" depends="init-common">
    <antcall target="compile-common">
      <param name="src" value="signatureejb"/>
    </antcall>
    <antcall target="run.wscompile">
      <param name="wscompile.command"
       value="-define -classpath ${build.classes.dir} -mapping SignatureMapping_ejb.xml -Xprintstacktrace -Xdebugmodel:ejb.model.txt wscompile_config_ejb.xml"/>
    </antcall>
  </target>

  <target name="assemble" depends="init-common, compile">
    <copy todir="${build.classes.dir}/META-INF/wsdl"
      file="SignatureTestService.wsdl"/>
    <copy todir="${build.classes.dir}"
         file="SignatureMapping_appclient.xml"/>
    <antcall target="appclient-jar-common">
      <param name="appclientjar.classes"
             value="SignatureMapping_appclient.xml,META-INF/wsdl/**,signature/*.class" />

    </antcall>
    <copy todir="${build.classes.dir}"
         file="SignatureMapping_ejb.xml"/>
    <antcall target="ejb-jar-common">
      <param name="ejbjar.classes"
             value="SignatureMapping_ejb.xml,META-INF/wsdl/**,signatureejb/*.class" />

    </antcall>
    <antcall target="ear-common" />
  </target>

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

    <target name="clean" depends="init-common">
      <antcall target="clean-common"/>
      <delete dir="output"/>
      <delete dir="signature"/>
      <delete file="SignatureMapping_ejb.xml"/>
      <delete file="SignatureMapping_appclient.xml"/>
      <delete file="SignatureTestService.wsdl"/>
      <delete file="jaxrpc.log"/>
      <delete file="ejb.model.txt"/>
      <delete file="appclient.model.txt"/>
    </target>

    <target name="run" depends="init-common">
      <exec executable="${APPCLIENT}" failonerror="false">
          <arg line="-client ${assemble.dir}/${appname}AppClient.jar"/>
          <arg line="http://${http.host}:${http.port}/signatureejb/SignatureTest"/>
      </exec>
    </target>

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

    <target name="usage">
        <echo>
                Usage:
                        ant all (Executes the WebServices test)
        </echo>
    </target>
</project>
