<?xml version="1.0" encoding="UTF-8"?>
<!--

    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

-->

<project name="javaws">
    <!--
        This project defines targets useful for integrating Java Web Start-based
        app client testing into both the SQE and the devtest test frameworks.

        The enclosing ant environment must define the property ${javaws.lib.jar}
        to point to the ant-extras.jar containing the JavaWSURLBuilder class.

        @Author: Tim Quinn
    -->

    <target name="javaws.init" >
        <prepare-javaws-security/>
    </target>

    <target name="javaws.cleanup" >
        <restore-javaws-security/>
    </target>

    <!--
        Security-related targets

        GlassFish signs the GlassFish system JARs needed by the ACC and the application
        JARs needed by the client.  By default it uses the self-signed cert
        that is generated when the domain is created (or during the GlassFish
        build in the case of the default domain, domain1.)  Java Web Start
        verifies signed JARs it downloads, and if the cert used to sign a JAR
        does not have a certificate chain to a trusted certificate authority
        then Java Web Start displays a dialog box, asking the user if s/he wants
        to trust the content.

        For automated testing we need to prevent Java Web Start from prompting
        the user.  We do this by telling Java Web Start to trust the self-signed
        cert which GlassFish used to sign the JARs.  And we do that by setting
        a property in the current user's deployment.properties config file so
        that Java Web Start will use the GlassFish domain's keystore (which
        contains the domain's self-signed cert) as the Java Web Start truststore.
        Because Java Web Start then sees that it should trust the self-signed
        cert, it will not prompt the user.

        To accomplish this, as part of initialization we make a safe copy of the existing
        deployment.properties file (if one exists), then we append a line to
        the deployment.properties file (creating it if it does not already
        exist).  Later, as part of clean-up, we restore the safe copy (if there
        was a pre-existing deployment.properties).
    -->
    <macrodef name="prepare-javaws-security">
        <sequential>
            <find-deployment-properties/>
            <choose-new-deployment-properties/>
            <!--
                Make the safe copy of any existing deployment.properties file.
            -->
            <property name="savedDeploymentPropertiesFilePath" value="${user.home}/deployment-saved.properties"/>
            <property name="trustedCertsPath" value="${admin.domain.dir}/${admin.domain}/config/keystore.jks"/>
            <copy file="${originalDeploymentPropertiesFilePath}"
                  tofile="${savedDeploymentPropertiesFilePath}"
                  overwrite="false"
                  failonerror="false"/>

            <!--
                Add the line to the existing file (or create a new one) pointing to
                the domain's keystore as the Java Web Start user-level truststore.
            -->
            <echo append="true"
                  file="${originalDeploymentPropertiesFilePath}">
    # Generated by GlassFish test framework for Java Web Start testing
    deployment.user.security.trusted.certs=${trustedCertsPath}
            </echo>
        </sequential>
    </macrodef>


    <macrodef name="restore-javaws-security">
        <sequential>
            <move
                  file="${savedDeploymentPropertiesFilePath}"
                  tofile="${originalDeploymentPropertiesFilePath}"
                  overwrite="true"
                  failonerror="false"/>
        </sequential>
    </macrodef>


    <!--
        The deployment.properties file - if it exists - could be in a number of
        different places depending on which OS this is.
    -->
    <macrodef name="find-deployment-properties">
        <sequential>
            <condition property="originalDeploymentPropertiesFilePath"
                       value="${user.home}/Application Data/Sun/Java/deployment.properties"
                       >
                <os family="windows"/>
            </condition>
            <condition property="originalDeploymentPropertiesFilePath"
                       value="${user.home}/Library/Caches/Java/deployment.properties"
                       >
                <os family="mac"/>
            </condition>
            <condition property="originalDeploymentPropertiesFilePath"
                       value="${user.home}/.java/deployment/deployment.properties">
                <os family="unix"/>
            </condition>
        </sequential>
    </macrodef>

    <macrodef name="choose-new-deployment-properties">
        <sequential>
            <property name="newDeploymentPropertiesFilePath" value="${user.home}/tempDeployment.properties"/>
        </sequential>
    </macrodef>



    <!--
        For the SQE framework, launches the app client using Java Web Start.
    -->
    <target name="launch-appclient-javaws" if="use.javaws">

        <echo message="Launching app client using Java Web Start"/>

        <tempfile property="clientOutputFile" prefix="appclient" suffix=".txt"/>

        <prepare-javaws-security/>
        <!--
            Choose the output file.
        -->
        <tempfile property="javaws.report.file" prefix="javaws" suffix=".txt"/>
        <property name="javaws.status.file" value="${javaws.report.file}.status"/>
        <property name="javaws.protocol" value="http"/>
        <property name="javaws.report.timeout" value="1500000"/>

        <!--
            Compose the URL to use for launching the app client via Java Web Start.
        -->
        <java classname="org.glassfish.ant.extras.JavaWSURLBuilder"
              classpath="${ant-extras.lib.jar}"
              outputproperty="jnlp.url"
              logError="true"
              fork="true">
              <arg line="-client" />
              <arg line="${assemble.dir}/${appname}AppClient.jar"/>
              <arg line="-name" />
              <arg line="${appname}Client"/>
              <arg line="-textauth"/>
              <arg line="-user ${acc.user}"/>
              <arg line="-password ${acc.password}"/>
              <arg line="-xml &quot;${admin.domain.dir}/${admin.domain}/config/glassfish-acc.xml&quot;"/>
              <arg line="${appclient.application.args}"/>
              <env key="APPCPATH" value="${appclient.classpath}"/>
              <env key="VMARGS" value="${appclient.vmargs}"/>

              <arg value="-testOutput"/>
              <arg value="${javaws.report.file}"/>

              <sysproperty key="javaws.protocol" value="${javaws.protocol}"/>
              <sysproperty key="http.host" value="${http.host}"/>
              <sysproperty key="http.port" value="${http.port}"/>
              <sysproperty key="appname" value="${appname}"/>
              <sysproperty key="clientname" value="${clientname}"/>
        </java>

        <!--
            Now launch the client.
        -->
        <echo>Launching with ${JAVAWS} -Xnosplash ${jnlp.url}</echo>
        <exec executable="${JAVAWS}"
            failonerror="false"
            timeout="${javaws.report.timeout}"
            >
            <arg value="-Xnosplash"/>
            <arg value="${jnlp.url}"/>
        </exec>

        <!--
            The Java Web Start launch runs outside this VM, so wait
            for the status file to appear
        -->
        <echo>Waiting for Java Web Start launch to complete....</echo>
        <waitfor maxwaitunit="second" maxwait="${javaws.report.timeout}">
            <available file="${javaws.status.file}"/>
        </waitfor>
        <echo>Java Web Start launch finished</echo>

        <!--
            Read the output file into a property, echo the output to the
            output so any human watching can see it, and then check the
            status for success or failure.
        -->
        <loadresource property="launchOutput">
            <file file="${javaws.report.file}"/>
        </loadresource>

        <echo file="${clientOutputFile}" message="${launchOutput}"/>

        <echo message="${launchOutput}"/>

        <antcall target="checkReporting-common">
            <param name="test.name" value="${appname}"/>
            <param name="test.description" value="${test.description}"/>
            <param name="test.count" value="${test.count}"/>
        </antcall>

        <delete file="${javaws.report.file}"/>
        <delete file="${javaws.status.file}"/>

        <restore-javaws-security/>
    </target>

</project>
