<!--

    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">
<!ENTITY testproperties SYSTEM "./build.properties">
]>

<project name="connector1.5 TEST" default="all" basedir=".">
  <property name="j2ee.home" value="../../.." />
  <property name="client.class" value="client/Client" />

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

  <target name="all"
          depends="init-common, build, disable-resource-validation, setup, runtest, unset, enable-resource-validation"
  />
  <target name="build" depends="init-common">
    <ant dir="ra" inheritAll="false" target="all" />
    <ant dir="app" inheritAll="false" target="all" />
  </target>

  <target name="setup">
    <ant dir="app" inheritAll="false" target="setupJdbc" />
    <ant dir="." inheritAll="false" target="deploy" />
  </target>

  <target name="deploy">
    <ant dir="app" inheritAll="false" target="deploy-ear" />
    <ant dir="ra" inheritAll="false" target="testAddAdmin" />
    <ant dir="." inheritAll="false" target="restart" />
  </target>

  <target name="disable-resource-validation">
    <antcall target="create-jvm-options">
      <param name="option" value="-Ddeployment.resource.validation=false" />
    </antcall>
    <antcall target="restart-server" />
  </target>

  <target name="enable-resource-validation">
    <antcall target="delete-jvm-options">
      <param name="option" value="-Ddeployment.resource.validation=false" />
    </antcall>
    <antcall target="restart-server" />
  </target>

  <target name="runtest" depends="init-common">

    <java classname="client.WebTest">
      <arg value="${http.host}" />
      <arg value="${http.port}" />
      <arg value="${contextroot}" />
      <classpath>
        <pathelement location="${env.APS_HOME}/lib/reporter.jar" />
        <pathelement location="app" />
      </classpath>
    </java>

  </target>


  <target name="unset">
    <ant dir="app" inheritAll="false" target="unsetJdbc" />
    <ant dir="." inheritAll="false" target="undeploy" />
    <ant dir="." inheritAll="false" target="restart" />
  </target>

  <target name="undeploy">
    <ant dir="app" inheritAll="false" target="undeploy" />
  </target>

  <target name="restart" depends="init-common">
    <echo message="Not required to restart" />
  </target>

  <target name="clean">
    <ant dir="ra" inheritAll="false" target="clean" />
    <ant dir="app" inheritAll="false" target="clean" />
    <ant dir="." inheritAll="false" target="unset" />
    <ant dir="." inheritAll="false" target="undeploy" />
    <ant dir="." inheritAll="false" target="restart" />
  </target>


</project>
