<?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="javax.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="javax.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="javax.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="javax.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="javax.security.jacc.PolicyContextException"/>
        </java>

        <java classname="javax.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="javax.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="javax.security.jacc.TestEJBPerms" fork="yes"
            classpath="${s1astest.classpath}">
            <jvmarg value="-Ddebug=${debug}"/>
        </java>
    </target>

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

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

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