<!--

    Copyright (c) 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

-->

<!--
    This is the common targets for all lazyInit tests
    imported into all the leaf level build files
-->

<!-- ================================================================ -->

<!-- Setup and Restart the server instance-->
<target name="norestart">
   <echo message="The tests will not restart the server before running" />
   <property name="no.restart" value="true"/>
</target>

<target name="pre-start" depends="printmessage">
    <antcall target="restart-before-test"/>
</target>

<target name="restart-before-test" unless="no.restart.test">
    <antcall target="restart-server-internal"/>
</target>

<target name="restart-server" depends="printmessage">
    <antcall target="restart-server-internal"/>
</target>

<target name="restart-server-internal" unless="no.restart">
    <antcall target="stopDomain"/>
    <antcall target="startDomain"/>
</target>

<target name="printmessage" if="no.retstart">
    <echo message="The test will be run without restarting the server"/>
</target>

<target name="startDomain" depends="startDomainUnix, startDomainWindows"/>

<target name="startDomainUnix" depends="init-common" if="isUnix">
    <exec executable="${ASADMIN}" failonerror="true">
        <arg line="start-domain"/>
        <arg line="--domaindir ${admin.domain.dir}"/>
        <arg line="${admin.domain}"/>
    </exec>
</target>

<target name="startDomainWindows" depends="init-common" if="isWindows">
    <delete file="${ASADMIN}.marker"/>
    <exec executable="${ASADMIN}" spawn="true">
        <!--
        <arg line="${ASADMIN}"/>
        -->
        <arg line="start-domain"/>
        <arg line="--domaindir ${admin.domain.dir}"/>
        <arg line="${admin.domain}"/>
    </exec>
    <waitfor checkevery="10" maxwait="30" maxwaitunit="second">
        <available file="${ASADMIN}.marker"/>
    </waitfor>
</target>

<target name="stopDomain" depends="init-common">
    <echo message="run.xml:stopping domain..."/>
    <exec executable="${ASADMIN}" failonerror="true">
        <arg line="stop-domain"/>
        <arg line="--domaindir ${admin.domain.dir}"/>
        <arg line="${admin.domain}"/>
    </exec>
</target>
