<!--

    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="jaxrpcinjection" default="all" basedir=".">

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

  <target name="run.wscompile">
        <exec executable="${WSCOMPILE}" failonerror="true" >
        <arg line="${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, assemble, deploy, run, undeploy"/>

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

  <target name="gen-servlet-wsdl" depends="init-common">
    <mkdir dir="${build.classes.dir}/WEB-INF/wsdl"/>
    <antcall target="run.wscompile">
      <param name="wscompile.command"
   value="-define -mapping ${build.classes.dir}/SimpleHandlerMapping_servlet.xml -cp ${build.classes.dir} -keep -d ${build.classes.dir}/WEB-INF/wsdl config-interface.xml"/>
    </antcall>
  </target>

  <target name="assemble-web" depends="init-common, compile, gen-servlet-wsdl">
    <antcall target="webclient-war-common">
        <param name="hasWebclient" value="yes"/>
        <param name="mappingfile.location" value="${build.classes.dir}"/>
        <param name="mappingfile.name" value="SimpleHandlerMapping_servlet.xml"/>
        <param name="wsdlfile.location" value="${build.classes.dir}/WEB-INF/wsdl"/>
        <param name="wsdlfile.name" value="SimpleHandlerServlet.wsdl"/>
        <param name="webwar.classes" value="servlet/*.class"/>
     </antcall>
  </target>

  <target name="assemble" depends="assemble-web, assemble-client"/>

  <target name="assemble-client" depends="init-common">
    <antcall target="compile-common">
        <param name="src" value="client"/>
    </antcall>
    <mkdir dir="${build.classes.dir}/META-INF/wsdl"/>
    <copy file="${build.classes.dir}/WEB-INF/wsdl/SimpleHandlerServlet.wsdl" todir="${build.classes.dir}/META-INF/wsdl"/>
    <unjar src="${env.APS_HOME}/lib/reporter.jar"
        dest="${build.classes.dir}"/>
    <antcall target="appclient-jar-common">
      <param name="appclientjar.classes"
             value="SimpleHandlerMapping_servlet.xml,META-INF/wsdl/**,simplehandler/**,servlet/SimpleServer.class,com/**" />
    </antcall>
  </target>

    <target name="run" depends="init-common">
        <antcall target="runclient-common">
          <param name="appclient.application.args" value="http://${http.host}:${http.port}/ServletHandlerTest/ServletHandlerTest"/>
        </antcall>
    </target>

    <target name="deploy"
            depends="init-common">
        <antcall target="deploy-war-common">
            <param name="contextroot" value="ServletHandlerTest"/>
        </antcall>
        <antcall target="deploy-client-common"/>
        <move file="${assemble.dir}/${appname}-clientClient.jar" toFile="${assemble.dir}/${appname}AppClient.jar"/>
    </target>

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

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

</project>
