<?xml version="1.0"?>
<!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 testProperties SYSTEM "./build.properties">
]>

<project name="jacc-api" basedir="." default="usage">

   &commonSetup;
   &commonBuild;
   &commonRun;
   &testProperties;

    <property name="debug" value="false"/>

    <target name="all" depends="build, run"/>

    <target name="clean" depends="init-common">
        <delete dir="${build.classes.dir}"/>
        <delete dir="${assemble.dir}"/>
    </target>

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

    <target name="build" depends="compile"/>

    <target name="run" depends="init-common">
        <antcall target="run-test"/>
        <antcall target="run-pcftests"/>
        <antcall target="run-ejbtests"/>
        <antcall target="run-urltests"/>
        <antcall target="run-webtests"/>
        <antcall target="run-prog-auth"/>
    </target>

    <target name="run-prog-auth">
      <ant dir="prog-auth" target="all"/>
    </target>
    <target name="run-test" depends="init-common">
        <java classname="jakarta.security.jacc.Test" fork="yes"
            classpath="${s1astest.classpath}"/>
    </target>

    <target name="run-pcftests" depends="init-common">
        <property name="ISPCF" value="-Djakarta.security.jacc.PolicyConfigurationFactory.provider=com.sun.s1asdev.security.jaccapi.DummyPolicyConfigurationFactory"/>
        <property name="NOTPCF" value="-Djakarta.security.jacc.PolicyConfigurationFactory.provider=jakarta.security.jacc.PolicyContextException"/>
        <property name="PFL" value="-Djava.security.policy=${basedir}/config/java.policy"/>
        <property name="PFL2" value="-Djava.security.policy=${basedir}/config/java.policy2"/>

        <java classname="jakarta.security.jacc.TestPCF" fork="yes"
            classpath="${s1astest.classpath}">
            <jvmarg value="-DAPS_HOME=${env.APS_HOME}"/>
            <jvmarg value="${PFL2}"/>
            <arg value="true"/>
            <arg value="java.lang.ClassNotFoundException"/>
        </java>

        <java classname="jakarta.security.jacc.TestPCF" fork="yes"
            classpath="${s1astest.classpath}">
            <jvmarg value="-DAPS_HOME=${env.APS_HOME}"/>
            <jvmarg value="${NOTPCF}"/>
            <jvmarg value="${PFL2}"/>
            <arg value="true"/>
            <arg value="java.lang.ClassCastException"/>
        </java>

        <java classname="jakarta.security.jacc.TestPCF" fork="yes"
            classpath="${s1astest.classpath}">
            <jvmarg value="-DAPS_HOME=${env.APS_HOME}"/>
            <jvmarg value="${ISPCF}"/>
            <jvmarg value="${PFL2}"/>
            <arg value="true"/>
            <arg value="jakarta.security.jacc.PolicyContextException"/>
        </java>

        <java classname="jakarta.security.jacc.TestPCF" fork="yes"
            classpath="${s1astest.classpath}">
            <jvmarg value="-DAPS_HOME=${env.APS_HOME}"/>
            <jvmarg value="${NOTPCF}"/>
            <jvmarg value="${PFL}"/>
            <arg value="false"/>
            <arg value="java.lang.ClassCastException"/>
        </java>

        <java classname="jakarta.security.jacc.TestPCF" fork="yes"
            classpath="${s1astest.classpath}">
            <jvmarg value="-DAPS_HOME=${env.APS_HOME}"/>
            <jvmarg value="${ISPCF}"/>
            <jvmarg value="${PFL}"/>
            <arg value="false"/>
        </java>
    </target>

    <target name="run-ejbtests" depends="init-common">
        <java classname="jakarta.security.jacc.TestEJBPerms" fork="yes"
            classpath="${s1astest.classpath}">
            <jvmarg value="-Ddebug=${debug}"/>
        </java>
    </target>

    <target name="run-urltests" depends="init-common">
        <java classname="jakarta.security.jacc.TestURLPattern" fork="yes"
            classpath="${s1astest.classpath}"/>
        <java classname="jakarta.security.jacc.TestURLPatternSpec" fork="yes"
            classpath="${s1astest.classpath}"/>
    </target>

    <target name="run-webtests" depends="init-common">
        <java classname="jakarta.security.jacc.TestWebPerms" fork="yes"
            classpath="${s1astest.classpath}">
            <jvmarg value="-Ddebug=${debug}"/>
        </java>
    </target>

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