<?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="pamrealm" basedir="." default="usage">

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

    <path id="pamclient.class.path">
        <pathelement location="lib/commons-httpclient-3.1.jar"/>
        <pathelement path="${s1astest.classpath}"/>
    </path>


    <target name="all" depends="build, setup, deploy, run, undeploy, unsetup"/>
    <target name="clean" depends="init-common">
        <delete dir="${build.classes.dir}"/>
        <delete dir="${assemble.dir}"/>
    </target>

    <target name="compile-pam" depends="init-common">
        <mkdir dir="${build.classes.dir}"/>
        <echo message="Compiling test source files"
              level="verbose"/>
        <mkdir dir="${src}"/>
        <javac srcdir="${src}"
               destdir="${build.classes.dir}"                       
               debug="on"
               failonerror="true">
             <classpath refid="pamclient.class.path"/>
        </javac>
    </target>


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

    <target name="build" depends="compile">
        <antcall target="webclient-war-common">
          <param name="hasWebclient" value="true"/>
        </antcall>
    </target>

    <target name="setup" depends="init-common">
        <antcall target="asadmin-common">
            <param name="admin.command" value="create-auth-realm" />
            <param name="operand.props" value="--classname com.sun.enterprise.security.auth.realm.pam.PamRealm --property jaas-context=pamRealm pam"/>
        </antcall>
    </target>

    <target name="deploy" depends="init-common">
        <antcall target="deploy-war-common">
            <param name="env.REGULAR" value="true"/>
        </antcall>
     </target>

    <target name="run" depends="init-common">
        <java classname="com.sun.pamrealm.test.PamBasicAuthTest">
    <classpath>
        <pathelement location="lib/commons-httpclient-3.1.jar"/>
        <pathelement location="lib/commons-logging-1.1.1.jar"/>
        <pathelement location="lib/commons-codec-1.4.jar"/>
        <pathelement path="${s1astest.classpath}"/>
       <!-- <pathelement location="${assemble.dir}/*.war"/>-->
    </classpath>
            <arg value="${host}"/>
            <arg value="${port}"/>
            <arg value="${username}"/>
            <arg value="${password}"/>

    </java>
        
    </target>

    <target name="undeploy" depends="init-common">
        <antcall target="undeploy-war-common">
            <param name="env.REGULAR" value="true"/>
        </antcall>
    </target>

    <target name="unsetup" depends="init-common">
        <antcall target="asadmin-common">
            <param name="admin.command" value="delete-auth-realm" />
            <param name="operand.props" value="pam" />
        </antcall>
      <!--  <antcall target="reconfig-common"/>-->
    </target>

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

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