<!--

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

-->

<!DOCTYPE project [
        <!ENTITY common SYSTEM     "../../../../../../config/common.xml">
        <!ENTITY testcommon SYSTEM "../../../../../../config/properties.xml">
        ]>

<project name="connector1.5 MDB" default="all" basedir=".">

    <property name="j2ee.home" value="../../../.."/>

    <!-- include common.xml and testcommon.xml -->
    &common;
    &testcommon;

    <target name="all" depends="init-common">
        <antcall target="compile-common">
            <param name="src" value="."/>
            <param name="s1astest.classpath" value="${s1astest.classpath}:../../ra/src/classes"/>
        </antcall>

        <javac
                srcdir="."
                classpath="${env.APS_HOME}/lib/reporter.jar"
                includes="client/WebTest.java" destdir="../"/>


        <antcall target="ejb-jar-common">
            <param name="ejb-jar.xml" value="META-INF/ejb-jar.xml"/>
            <param name="ejbjar.classes" value="mdb/*.class, beans/*.class, connector/*.class"/>
            <param name="sun-ejb-jar.xml" value="META-INF/sun-ejb-jar.xml"/>
            <param name="appname" value="generic-embedded"/>
        </antcall>

        <antcall target="webclient-war-common">
            <param name="hasWebclient" value="yes"/>
            <param name="appname" value="generic-embedded"/>
            <param name="web.xml" value="META-INF/web.xml"/>
            <param name="sun-web.xml" value="META-INF/sun-web.xml"/>
            <param name="webclient.war.classes" value="servlet/*.class, beans/*.class"/>
        </antcall>


        <!--
            <antcall target="appclient-jar-common">
                <param name="appname" value="generic-embedded" />
                <param name="application-client.xml" value="META-INF/application-client.xml" />
                <param name="appclientjar.classes" value="mdb/*.class, beans/*.class, connector/*.class, client/Client.class" />
                <param name="sun-application-client.xml" value="META-INF/sun-application-client.xml" />
            </antcall>
        -->
        <!--
            <jar jarfile="../ejb.jar" basedir="classes"
                 includes="mdb/*.class, beans/*.class, connector/*.class" >
                        <metainf dir="META-INF">
                                <include name="ejb-jar.xml"/>
                                <include name="sun-ejb-jar.xml"/>
                        </metainf>
            </jar>
        -->
    </target>

    <target name="clean">
        <antcall target="clean-classes-common">
            <param name="build.classes.dir" value="classes"/>
        </antcall>
    </target>
</project>
