<!--

    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="Simple Soap fault test" default="all" basedir=".">

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

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

<!-- NOTE. the simple mapping test and full mapping test can
     only be run one at a time, I didn't want to set up two
     tests for this. -->
<!--
  <target name="all" depends="clean,build,deploy,run,undeploy"/>
-->

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

  <target name="compile" depends="init-common">
    <antcall target="compile-common">
      <param name="src" value="ejb"/>
    </antcall>
  </target>
  
  <target name="gen-ejb-wsdl" depends="init-common">
    <mkdir dir="${build.classes.dir}/META-INF/wsdl"/> 
    <antcall target="run.wscompile">
      <param name="wscompile.command" 
   value="-define -mapping ${build.classes.dir}/SimpleHandlerMapping_ejb.xml -cp ${build.classes.dir} -keep -d ${build.classes.dir}/META-INF/wsdl config-interface.xml"/> 
    </antcall>
  </target>    
   
  <target name="assemble-ejb" depends="init-common, compile, gen-ejb-wsdl">
    <antcall target="ejb-jar-common">
        <param name="ejbjar.classes" value="SimpleHandlerMapping_ejb.xml,META-INF/wsdl/**,ejb/*.class"/>
    </antcall>
  </target>
             
  <target name="assemble" depends="assemble-ejb, assemble-client"/>
  
  <target name="assemble-client" depends="init-common">
    <antcall target="compile-common">
        <param name="src" value="client"/>
    </antcall>    
    <antcall target="gen-ejb-wsdl"/>
    <unjar src="${env.APS_HOME}/lib/reporter.jar"
        dest="${build.classes.dir}"/>
    <antcall target="appclient-jar-common">
      <param name="appclientjar.classes" 
             value="SimpleHandlerMapping_ejb.xml,META-INF/wsdl/**,simplehandler/**,ejb/SimpleServer.class,com/**" />
    </antcall>  
    <antcall target="deploy-client-common"/>
    <move file="${assemble.dir}/${appname}-clientClient.jar" toFile="${assemble.dir}/${appname}AppClient.jar"/>
  </target>
  
    <target name="run" depends="init-common">
        <antcall target="runclient-common">
          <param name="appclient.application.args" value="http://${http.host}:${http.port}/simplehandler"/>
        </antcall>
    </target>  

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

    <target name="clean" depends="init-common">
      <antcall target="clean-common"/>
    </target>
 
    <target name="undeploy" depends="init-common">
        <antcall target="undeploy-jar-common"/>
        <antcall target="undeploy-client-common"/>
    </target>  
    
</project>
