<!--

	Copyright (c) 2021 Contributors to the Eclipse Foundation
    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/beans.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="testAddAdmin" depends="init-common">
    <antcall target="asadmin-common">
      <param name="admin.command" value="create-admin-object --target ${appserver.instance.name} --restype connector.MyAdminObject --raname generic-ra --property ResetControl=BEGINNING"/>
      <param name="operand.props" value="eis/testAdmin"/>
    </antcall>
  </target>

  <target name="testDelAdmin" depends="init-common">
    <antcall target="asadmin-common">
      <param name="admin.command" value="delete-admin-object"/>
      <param name="operand.props" value="--target ${appserver.instance.name} eis/testAdmin"/>
    </antcall>
  </target>

  <target name="sendMessage" depends="init-common">
    <echo message="Class path is ${s1astest.classpath}"/>
    <java classname="connector.Messages" fork="true" 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>
