<?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 commonBuild SYSTEM "file:./../../ejb_annotations/annotations-common.xml">
]>

<project name="Hello" default="core" basedir=".">

    &commonBuild;
    <property name="src-name" value="endpoint/HelloImpl.java"/>
    <property name="client-src-name" value="client/Client.java"/>
    <basename file="${src-name}" property="server" suffix=".java"/>
    <dirname file="${src-name}" property="directory"/>
    <basename file="${directory}" property="pkg-name"/>
    <target name="all" depends="clean">
        <exec executable="${env.S1AS_HOME}/bin/wsimport">
            <arg line="-keep -d ${env.APS_HOME}/build/module/classes endpoint/wsdl/HelloImplService.wsdl"/>
        </exec>
        <antcall target="test-compile"/>
        <war destfile="${env.S1AS_HOME}/domains/domain1/autodeploy/${server}.war"
            webxml="web.xml">
            <webinf dir="${pkg-name}"
                includes="*.xml **/*.wsdl **/*.xsd"/>
            <classes dir="${env.APS_HOME}/build/module/classes"
                includes="${pkg-name}/**"/>
        </war>
        <waitfor maxwait="100" maxwaitunit="second">
          <or>
             <available file="${env.S1AS_HOME}/domains/domain1/autodeploy/${server}.war_deployed"/>
            <available file="${env.S1AS_HOME}/domains/domain1/autodeploy/${server}.war_deployFailed"/>
                 </or>
        </waitfor>
        <condition property="deploy_succeeded">
          <available file="${env.S1AS_HOME}/domains/domain1/autodeploy/${server}.war_deployed"/>
        </condition>
        <condition property="deploy_failed">
          <available file="${env.S1AS_HOME}/domains/domain1/autodeploy/${server}.war_deployFailed"/>
        </condition>

        <fail if="deploy_failed" message="Deployment failed"/>
        <antcall target="compile-client"/>
        <exec executable="${env.S1AS_HOME}/bin/wsimport">
            <arg line="-keep -d ${env.APS_HOME}/build/module/classes http://${http.host}:${http.port}/${server}/${server}Service?WSDL"/>
    </exec>
        <antcall target="unjar-client-utils"/>
        <antcall target="internal-run"/>
        <antcall target="autoundeploy-file">
              <param name="filename" value="${server}.war"/>
        </antcall>
        <condition property="undeploy_succeeded">
          <available file="${env.S1AS_HOME}/domains/domain1/autodeploy/${server}.jar_undeployed"/>
        </condition>
        <condition property="undeploy_failed">
          <available file="${env.S1AS_HOME}/domains/domain1/autodeploy/${server}.jar_undeployFailed"/>
        </condition>
        <fail if="undeploy_failed" message="undeployment failed"/>
        <antcall target="report"/>
    </target>

    <target name="test_build">
        <exec executable="${env.S1AS_HOME}/bin/wsimport">
                <arg line="-keep -d ${env.APS_HOME}/build/module/classes endpoint/wsdl/HelloImplService.wsdl"/>
        </exec>
        <antcall target="build"/>
    </target>

    <target name="report-success">
            <echo message="Test passed"/>
    </target>

    <target name="report-failure">
            <echo message="Test failed"/>
    </target>

</project>
