<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 1997, 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="ejb30-session-hello" default="default" basedir=".">
    <property file="build.properties"/>

 <description>Builds, tests, and runs the project Hello JSP Application</description>
<!-- <import file="nbproject/build-impl.xml"/>-->

<target name="echo">
    <echo message="Hello World"/>
</target>
<target name="sun-taskdef">
    <taskdef name="sun-appserv-deploy" classname="org.apache.tools.ant.taskdefs.optional.sun.appserv.DeployTask">
        <classpath>
            <pathelement location="${sun.appserver.antjar}" />
        </classpath>
    </taskdef>
    <taskdef name="sun-appserv-undeploy" classname="org.apache.tools.ant.taskdefs.optional.sun.appserv.UndeployTask">
        <classpath>
            <pathelement location="${sun.appserver.antjar}" />
        </classpath>
    </taskdef>
</target>

<!--<env key="APPCPATH" path="${env.APS_HOME}/lib/testng.jar"/>-->

<path id="path2testng">
    <pathelement location="testng-5.0-jdk15.jar"/>
</path>



<path id="class.path">
    <fileset dir="${install.dir}/lib">
        <include name="**/*.jar"/>
    </fileset>
    <pathelement location="classes"/>
</path>

<path id="test.classpath">
    <fileset dir="${install.dir}/lib">
        <include name="**/*.jar"/>
    </fileset>
    <fileset dir="../../../lib">
        <include name="**/*.jar"/>
    </fileset>
    <pathelement location="classes/app"/>
    <pathelement location="classes/test"/>
</path>

<!-- TestNG class fileset -->

<target name="build">
    <delete dir="classes"/>
    <mkdir dir="classes/app"/>
    <javac   debug="true"
    fork="true"
    source="1.5"
    classpathref="class.path"
    srcdir="src/ejb"
    destdir="classes/app"/>

    <delete dir="dist" failonerror="false"/>

    <mkdir dir="dist"/>


    <jar destfile="dist/${ejbjar.file}">
        <fileset  dir="classes/app">
            <include name="**/*.class"/>
        </fileset>
       <metainf dir="descriptor">
                <include name="*.xml"/>
        </metainf>
    </jar>
    <echo message="======================================================="/>
    <echo message="Packaged Archive at ./dist/${ejbjar.file}"/>
    <echo message="======================================================="/>
</target>

<taskdef name="testng"
         classpathref="path2testng"
         classname="org.testng.TestNGAntTask"/>


<!-- Generate the TestNG report -->
<target name="report">
    <!--<delete dir="../../test-report"/>-->
    <mkdir dir="../../../test-report"/>
    <junitreport todir="../../../test-report">
        <fileset dir="../../../">
           <include name="**/test-output/**/*.xml"/>
           <exclude name="**/testng-failed.xml"/>
        </fileset>
        <report format="noframes" todir="../../../test-report"/>
    </junitreport>
</target>
<target name="compile-tests"
            description="compile the test ng example" depends="">
       <delete dir="classes/test" failonerror="false"/>
       <mkdir dir="classes/test"/>
       <javac   debug="true"
              fork="true"
              source="1.5"
              classpathref="test.classpath"
              srcdir="src/test"
              destdir="classes/test"
       />
</target>

<target  name="run">

    <echo message="=============Starting TestNG test at \n ${basedir}  ============"/>
    <mkdir dir="../../test-output"/>
    <testng outputdir="../../../test-output"
            classpathref="test.classpath" groups="">
         <classfileset dir="classes/test" includes="**/TestClient.class"/>
        <!--<xmlfileset dir="../../../" includes="testng.xml"/>-->
    </testng>
</target>

<target name="deploy" depends="sun-taskdef">
      <echo message="${sun.appserver.antjar}"/>

    <sun-appserv-deploy file="dist/${ejbjar.file}"
    name="helloworld"
    force="true"
    precompilejsp="true"
    verify="false"
    upload="true"
    user="${admin.user}"
    passwordfile="${install.dir}/pass.txt"
    host="${admin.host}"
    port="${admin.port}"
    asinstalldir="${install.dir}" />
</target>

<target name="dist">
    <echo message="Save EAR/WAR/JAR file"/>
</target>

<target name="_start-selenium">
 <java jar="../lib/selenium/${selenium-srvr-jar}" fork="true" spawn="true" />
 <antcall target="_run-ua-tests" />
 <get dest="${testreportdir}/results.txt"
        src="${selenium-srvr-loc}/selenium-server/driver/?cmd=shutDown" />
</target>

<target name="run">
 <taskdef classpathref="build.classpath" resource="testngtasks" />
 <testng outputDir="${testreportdir}"
         classpath="${testclassesdir};${classesdir}" haltonfailure="true">
  <xmlfileset dir="." includes="testng.xml" />
  <classpath>
   <path refid="build.classpath" />
  </classpath>
 </testng>
</target>



</project>
