<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE project [
<!--

    Copyright (c) 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

-->

<!ENTITY commonSetup SYSTEM "file:./../../../config/properties.xml">
<!ENTITY commonBuild SYSTEM "file:./../../../config/common.xml">
<!ENTITY testproperties SYSTEM "file:./build.properties">
]>

<!--
    Makes sure that the setting of APPCPATH prior to running the appclient
    script behaves correctly.
    
    This script builds an app client and a separate library jar that is not 
    bundled with the app client.  The test does not deploy the app client but
    simply invokes the app client jar directly.  
    
-->
<project name="appcpath" default="usage" basedir=".">

    &commonSetup;
    &commonBuild;
    &testproperties;

    <import file="../appclient.xml"/>

    <target name="init" depends="init-common">
        <property name="lib.jar.file" value="${assemble.dir}/appcpathlib.jar"/>
    </target>

    <!--
        No need to deploy (or undeploy) because we can use an undeployed stand-alone app 
        client to test this feature.
    -->
    <target name="all" depends="build,run"/>

    <target name="clean" depends="init">
      <antcall  target="clean-common"/>
    </target>
 
    <target name="compile" depends="clean">
        <antcall target="compile-common">
            <param name="src" value="lib"/>
        </antcall>
        <antcall target="compile-common">
            <param name="src" value="client"/>
        </antcall>
        
        <antcall target="compile-common">
            <param name="src" value="${env.APS_HOME}/util/reporter"/>
        </antcall>
    </target>

    <target name="build" depends="compile">
        <mkdir dir="${assemble.dir}"/>
        <!-- Build the stand-alone app client. -->
        <antcall target="package-appclientjar-common">
            <param name="appclientjar.files" value="${build.classes.dir}"/> 
            <param name="appclientjar.classes" value="**/client/*.class **/reporter/*.class"/>
            <param name="appclient.jar" value="${assemble.dir}/${clientname}.jar"/>
        </antcall>

        <!-- Build the library jar. -->        
        <jar jarfile="${lib.jar.file}" 
            basedir="${build.classes.dir}" 
            update="true" includes ="**/lib/*.class" 
            />
    </target> 
    
    <target name="deploy">
        <echo>The "deploy" target is not used in this test.</echo>
    </target>

    <target name="undeploy">
        <echo>The "undeploy" target is not used in this test.</echo>
    </target>   

    <target name="run" depends="init">
        <echo>Testing stand-alone client...</echo>
        <!--
            Run the client with a nonsense setting for the APPCPATH env. var.
            This test should fail.
        -->
        <runclient appcpath-setting="no-where" resultproperty="expectFailure" expectedOutcome="fail"/>
        
        <!--
            Now run with the correct setting for APPCPATH - pointing to the
            previously-build library jar.  This test should pass.
        -->
        <runclient appcpath-setting="${lib.jar.file}" resultproperty="expectSuccess" expectedOutcome="pass"/>
        
        <condition property="result" value="passed" else="failed">
            <and>
                <equals arg1="${expectFailure}" arg2="1"/>
                <equals arg1="${expectSuccess}" arg2="0"/>
            </and>                
        </condition>
        <echo>Test result: ${result}</echo>
    </target>

    <!--
        The following macro executes the client with the APPCPATH set according
        to the macro argument appcpath-setting.
    -->
    <macrodef name="runclient">
        <attribute name="appcpath-setting"/>
        <attribute name="resultproperty"/>
        <attribute name="expectedOutcome" default="pass"/> <!-- either "pass" or "fail" -->
        <sequential>
            <property name="appclient.jar" value="${assemble.dir}/${appname}-client.jar"/>
            <property name="generated.appclient.jar" value="${assemble.dir}/${appname}-client.jar"/>
            <echo>With APPCPATH set to @{appcpath-setting} invoking...</echo>
            <echo>appclient -client ${generated.appclient.jar} ${appclient.application.args}</echo>
            <exec executable="${APPCLIENT}" failonerror="false" resultproperty="@{resultProperty}">
                <arg line="-client ${generated.appclient.jar}"/>
                <arg value="@{expectedOutcome}"/>
                <env key="APPCPATH" value="@{appcpath-setting}"/>
            </exec>
        </sequential>
    </macrodef>
        
        

    <target name="usage">
        <antcall target="usage-common"/>
    </target>

</project>
