<!--

    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 redeploy" default="all" basedir=".">

  <property name="j2ee.home" value="../../../.."/>
  <property name="earfile" value="generic-embedded.ear"/>


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

  <target name="all" depends="init-common, clean-common">
   <ant dir="src" inheritAll="false" target="all"/>
   <antcall target="build-ear"/>
 <!--
   <antcall target="ear-common">
        <param name="appname" value="generic-embedded"/>
        <param name="application.xml" value="META-INF/application.xml"/>
   </antcall>
 -->
  </target>

  <target name="build-ear">

     <delete file="${assemble.dir}/generic-embeddedApp.ear"/>
     <mkdir dir="${assemble.dir}"/>
     <mkdir dir="${build.classes.dir}/META-INF"/>
     <ear earfile="${assemble.dir}/generic-embeddedApp.ear"
       appxml="META-INF/application.xml">
       <fileset dir="${assemble.dir}">
            <include name="*.jar"/>
            <include name="*.war"/>
       </fileset>
       <fileset dir="${env.APS_HOME}/lib">
           <include name="reporter.jar"/>
       </fileset>
     </ear>

  </target>


  <target name="deploy-ear" depends="init-common">
    <antcall target="deploy-common">
      <param name="appname" value="generic-embedded"/>
    </antcall>
  </target>

  <target name="undeploy" depends="init-common">
    <antcall target="asadmin-common">
      <param name="admin.command" value="undeploy"/>
      <param name="operand.props" value="generic-embeddedApp"/>
    </antcall>
  </target>

  <target name="clean">
    <antcall target="clean-common"/>
  </target>
</project>
