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

    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

-->

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

<project name="security-jmac-https" default="usage" basedir=".">

    &commonSetup;
    &commonBuild;
    &commonRun;
    &commonSecurity;
    &testproperties;

    <target name="all" depends="clean, build, setup, deploy, run, undeploy, unsetup"/>

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

    <target name="setup" depends="init-common,prepare-store-common">
        <copy file="${assemble.dir}/test-${appname}-provider.jar"
            todir="${env.S1AS_HOME}/lib"/>

        <antcall target="asadmin-common">
            <param name="admin.command" value="create-message-security-provider"/>
            <param name="as.props" value="${as.props} --classname com.sun.s1asdev.security.jmac.https.HttpsTestAuthModule --layer HttpServlet --providertype server --requestauthsource sender"/>
            <param name="operand.props" value="httpsTestAuthModule"/>
        </antcall>

        <antcall target="restart"/>
    </target>

    <target name="unsetup" depends="init-common">
        <antcall target="asadmin-common">
            <param name="admin.command" value="delete-message-security-provider"/>
            <param name="as.props" value="${as.props} --layer HttpServlet"/>
            <param name="operand.props" value="httpsTestAuthModule"/>
        </antcall>
	<antcall target="remove-store-common"/>

        <antcall target="restart"/>
        <!-- may not be able to delete this file in PC environment -->
        <delete file="${env.S1AS_HOME}/lib/test-${appname}-provider.jar" failonerror="false"/>
    </target>

    <target name="build" depends="init-common, init-security-util">
        <antcall target="webclient-war-common">
            <param name="hasWebclient" value="yes"/>
        </antcall>

        <antcall target="compile-common">
            <param name="src" value="src"/>
        </antcall>
        <mkdir dir="${assemble.dir}"/>
        <jar jarfile="${assemble.dir}/test-${appname}-provider.jar">
            <fileset dir="${build.classes.dir}"/>
        </jar>
    </target>

    <target name="deploy" depends="init-common">
        <antcall target="deploy-war-libraries">
            <param name="as.props" value="${as.props}"/>
            <param name="libraries" value="${env.S1AS_HOME}/lib/test-${appname}-provider.jar"/>
            <param name="contextroot" value="${appname}"/>
        </antcall>
    </target>

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

    <target name="run" depends="init-common, init-security-util">
        <java classname="com.sun.s1asdev.security.jmac.https.WebSSLClient" fork="true">
            <!-- jvmarg value="-Djavax.net.debug=ssl,handshake,data,trustmanager"/-->
            <jvmarg value="-Djavax.net.ssl.keyStore=${mykeystore.db.file}"/>
            <jvmarg value="-Djavax.net.ssl.trustStore=${mytruststore.db.file}"/>
            <jvmarg value="-Djavax.net.ssl.keyStorePassword=${ssl.password}"/>
            <jvmarg value="-Djavax.net.ssl.trustStorePassword=${ssl.password}"/>
            <jvmarg value="-Dsun.security.ssl.allowUnsafeRenegotiation=true"/>

            <arg value="${s1asCN}"/>
            <arg value="${https.port}"/>
            <arg value="${appname}"/>
            <classpath>
                <pathelement location="${env.APS_HOME}/lib/reporter.jar"/>
                <pathelement location="${build.classes.dir}"/>
            </classpath>
        </java>
    </target>

    <target name="restart">
      <antcall target="restart-server-instance-common"/>
    </target>

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