<?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 commonBuild SYSTEM "./../../../config/common.xml">
]>

<project name="deployment-ejb30-ear-security-App" default="all" basedir=".">

    &commonBuild;

    <property name="testName" value="deployment-ejb30-ear-security"/>
    <property name="archivedir" value="${build}/archives"/>

    <target name="prepare" depends="init">
        <mkdir dir="${build}"/>
        <mkdir dir="${archivedir}"/>
        <property name="all.ear" value="${archivedir}/${testName}App.ear"/>
        <property name="ejb.jar" value="${archivedir}/${testName}-ejb.jar"/>
        <property name="web.war" value="${archivedir}/${testName}-web.war"/>
        <property name="client.jar" value="${archivedir}/${testName}-client.jar"/>
    </target>

    <target name="compile" depends="prepare">
        <javac srcdir="ejb" destdir="${build}" debug="on" failonerror="true">
         <classpath refid="gfv3.classpath"/>
         </javac>
        <javac srcdir="web" destdir="${build}" debug="on" failonerror="true">
         <classpath refid="gfv3.classpath"/>
         </javac>
        <javac srcdir="client" destdir="${build}" debug="on" failonerror="true">
         <classpath refid="gfv3.classpath"/>
         </javac>
    </target>

    <target name="create.user" depends="setAsadminArgsWithoutPassword">
        <antcall target="common.createuser.asadmin">
            <param name="arg.list"
                value="--groups j2ee --authrealmname file j2ee"/>
            <param name="password" value="j2ee"/>
        </antcall>
        <antcall target="common.createuser.asadmin">
            <param name="arg.list"
                value="--groups sunuser --authrealmname file sunuser"/>
            <param name="password" value="sunuser"/>
        </antcall>
    </target>

    <target name="delete.user" depends="setAsadminArgs">
        <antcall target="common.run.asadmin">
            <param name="arg.list"
                value="delete-file-user ${ASADMIN-ARGS} --authrealmname file j2ee"/>
        </antcall>
        <antcall target="common.run.asadmin">
            <param name="arg.list"
                value="delete-file-user ${ASADMIN-ARGS} --authrealmname file sunuser"/>
        </antcall>
    </target>

    <target name="assemble" depends="compile">
        <jar destfile="${ejb.jar}" basedir="${build}"
                excludes="**/Client.class,**/ClientSuper.class,**/Servlet.class, **/MyFilter.class"/>

        <war destfile="${web.war}" webxml="descriptor/web.xml">
            <classes dir="${build}"
                excludes="**/Client.class, **/*EJB.class, **/*.jar"/>
        </war>

        <jar destfile="${client.jar}" basedir="${build}"
                includes="**/Client.class,**/Sful.class,**/Sless.class"
                manifest="client/MANIFEST.MF"/>

        <ear destfile="${all.ear}" basedir="${archivedir}"
            appxml="descriptor/application.xml" includes="*.jar, *.war">
            <metainf dir="descriptor">
                <include name="sun-application.xml"/>
            </metainf>
        </ear>
    </target>

    <target name="deploy.asadmin" depends="prepare">
        <antcall target="common.deploy.asadmin">
            <param name="arg.list" value="--retrieve ${archivedir} --name ${testName} ${all.ear}"/>
            <param name="testName" value="${testName}"/>
        </antcall>
    </target>

    <target name="redeploy.asadmin" depends="prepare">
        <antcall target="common.redeploy.asadmin">
            <param name="arg.list" value="--retrieve ${archivedir} --name ${testName} ${all.ear}"/>
            <param name="testName" value="${testName}"/>
        </antcall>
    </target>

    <target name="undeploy.asadmin" depends="prepare">
        <antcall target="common.undeploy.asadmin">
            <param name="arg.list" value="${testName}"/>
            <param name="testName" value="${testName}"/>
        </antcall>
    </target>

    <target name="runclient" depends="prepare,setOrbPort2,setHttpPort2">
        <exec executable="${APPCLIENT}" resultproperty="result" failonerror="false" output="${build}/${log.id}.output.log">
<!--arg line="${dbg}"/-->
            <arg line="-targetserver ${appclient.targetservers}"/>
            <arg line="-client ${archivedir}/${testName}Client.jar"/>
            <arg line="-textauth"/>
            <arg line="-user j2ee"/>
            <arg line="-password j2ee"/>
            <arg line="-xml ${env.S1AS_HOME}/domains/${admin.domain}/config/glassfish-acc.xml"/>
            <arg line="${http.host} ${depltest.port}"/>
        </exec>
        <antcall target="processResult">
            <param name="result" value="${result}"/>
            <param name="log" value="${build}/${log.id}.output.log"/>
        </antcall>
    </target>

    <target name="private-all">
        <antcall target="create.user"/>
        <antcall target="assemble"/>
        <antcall target="declare-test">
            <param name="description" value="ejb30/security Test asadmin deploy"/>
        </antcall>
        <antcall target="deploy.asadmin"/>
        <antcall target="runclient">
            <param name="log.id" value="1"/>
        </antcall>
        <antcall target="declare-test">
            <param name="description" value="ejb30/security Test asadmin redeploy"/>
        </antcall>
        <antcall target="redeploy.asadmin"/>
        <antcall target="runclient">
            <param name="log.id" value="2"/>
        </antcall>
        <antcall target="undeploy.asadmin"/>
        <antcall target="delete.user"/>
    </target>
</project>
