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

    Copyright (c) 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

-->

<project name="ejb" default="usage" basedir=".">

    <property name="ejb-target" value="all"/>

<!-- ======== Targets by execution granularity ========== -->
    <target name="all">
        <antcall target="runejbtargets">
            <param name="ejb-target" value="all"/>
        </antcall>
    </target>

    <target name="run-test">
        <antcall target="runejbtargets">
            <param name="ejb-target" value="run-test"/>
        </antcall>
    </target>

    <target name="clean">
        <antcall target="runejbtargets">
            <param name="ejb-target" value="clean"/>
        </antcall>
    </target>

    <target name="build">
        <antcall target="runejbtargets">
            <param name="ejb-target" value="build"/>
        </antcall>
    </target>

    <target name="deploy">
        <antcall target="runejbtargets">
            <param name="ejb-target" value="deploy"/>
        </antcall>
    </target>

    <target name="undeploy">
        <antcall target="runejbtargets">
            <param name="ejb-target" value="undeploy"/>
        </antcall>
    </target>

    <target name="run">
        <antcall target="runejbtargets">
            <param name="ejb-target" value="run"/>
        </antcall>
    </target>

    <target name="setup">
        <antcall target="runejbtargets">
            <param name="ejb-target" value="setup"/>
        </antcall>
    </target>

    <target name="unsetup">
        <antcall target="runejbtargets">
            <param name="ejb-target" value="unsetup"/>
        </antcall>
    </target>


    <target name="runejbtargets">
        <antcall target="stateless"/>
        <antcall target="stateful"/>
        <antcall target="bmp"/>
        <antcall target="cmp"/>
        <antcall target="mdb"/>
        <antcall target="ejb30"/>
    </target>

<!-- ======== Targets by technology ========== -->

    <target name="stateless">
        <record name="stateless.output" action="start" />
            <ant dir="stateless" target="${ejb-target}"/>
        <record name="stateless.output" action="stop" />
    </target>

    <target name="stateful">
        <record name="stateful.output" action="start" />
            <ant dir="stateful" target="${ejb-target}"/>
        <record name="stateful.output" action="stop" />
    </target>

    <target name="mdb">
        <record name="mdb.output" action="start" />
            <ant dir="mdb" target="${ejb-target}"/>
        <record name="mdb.output" action="stop" />
    </target>

    <target name="bmp">
        <record name="bmp.output" action="start" />
            <ant dir="bmp" target="${ejb-target}"/>
        <record name="bmp.output" action="stop" />
    </target>

    <target name="cmp">
        <record name="cmp.output" action="start" />
            <ant dir="cmp" target="${ejb-target}"/>
        <record name="cmp.output" action="stop" />
    </target>

    <target name="ejb30">
        <record name="ejb30.output" action="start" />
            <ant dir="ejb30/hello/session" target="${ejb-target}"/>
            <ant dir="ejb30/persistence/onetomany" target="${ejb-target}"/>
            <ant antfile="buildJava2DB.xml" dir="ejb30/persistence/onetomany" target="${ejb-target}"/>
        <record name="ejb30.output" action="stop" />
    </target>

    <target name="usage">
    <echo> Usage:
    ======== Targets by execution granularity =========

    ant clean (Cleans all ejb tests)
    ant build (builds all ejb tests)
    ant setup (setup all required resources)
    ant deploy (deploy all test apps)
    ant run (Executes all tests)
    ant undeploy (undeploy all test apps)
    ant unsetup (remove all set resources)

    ======== Targets by technology =========

    ant stateless (Executes the ejb stateless tests)
    ant stateful (Executes the ejb stateful tests)
    ant bmp (Executes the ejb bmp tests)
    ant cmp (Executes the ejb cmp tests)
    ant mdb (Executes the ejb mdb tests)
    ant all (Executes all the ejb tests)

    ===== Targets by technoloy and execution granularity ======
    Note: Run the command of the following type:

            % ant stateless -Dejb-target=clean

    to run the 'clean' target for 'stateless' tests
    </echo>
    </target>
</project>
