<!--

    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 props SYSTEM "../../../../config/properties.xml">
]>

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

  <property name="j2ee.home" value="../../.."/>
  <property name="earfile" value="generic-ra.rar"/>

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

  <target name="all">
    <ant dir="src" inheritAll="false" target="all"/>

    <jar jarfile="generic-ra.rar" basedir="."
         includes="generic-ra.jar, META-INF/ra.xml, META-INF/glassfish-resources.xml" />
  </target>

  <target name="deploy" depends="init-common">
    <antcall target="deploy-rar-common">
      <param name="rarfile" value="generic-ra.rar"/>
    </antcall>
  </target>

  <target name="undeploy" depends="init-common">
    <antcall target="undeploy-rar-common">
      <param name="undeployrar" value="generic-ra"/>
    </antcall>
  </target>
  <target name="sendMessage" depends="init-common">
    <echo message="Class path is ${s1astest.classpath}"/>
    <java fork="true" classname="connector.Messages" failonerror="true">
      <arg line="add Foo TestMessage"/>
      <classpath>
        <pathelement location="${s1astest.classpath}"/>
        <pathelement location="generic-ra.jar"/>
      </classpath>
    </java>
  </target>

  <target name="clean">
    <ant dir="src" inheritAll="false" target="clean"/>
  </target>

</project>
