<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE project [
<!--

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

-->

<!ENTITY commonBuild SYSTEM "./../../config/common.xml">
<!ENTITY commonVersioning SYSTEM "../versioning-common.xml">
<!ENTITY basicScenarios SYSTEM "../basic-scenarios.xml">
]>

<project name="simple-versioned-ear" default="usage" basedir=".">

    &commonBuild;
    &commonVersioning;
    &basicScenarios;

    <!--
        versionInfos: the property file included in the war archives, this
        file contains a version identifier as a property and is used by the
        servlet to display the version informations.
    -->
    <property name="testPackage" value="versionedAppClient"/>
    <property name="gfDDFile" value="glassfish-application.xml"/>
    <property name="gfDDDir" value="META-INF"/>

    <loadproperties srcFile="../build.properties"/>

    <!-- link: the context root of the servlet -->
    <property name="link" value="/${untaggedName}"/>
    <!-- untaggedName: the name of the application, its the version's prefix -->
    <property name="untaggedName" value="simple-versioned-ear"/>
    <!-- packaging: the file archive's extention -->
    <property name="packaging" value="ear"/>

    <!-- the module embedded in the EAR archive -->
    <property name="moduleUntaggedName" value="simple-versioned-servlet"/>
    <property name="modulePackaging" value="war"/>
    <property name="moduleBuildDir" value="../${moduleUntaggedName}"/>

    <target name="process.servletName" depends="process.versionExpression">
      <condition property="servletAppName" value="${moduleUntaggedName}:${versionExpression}" else="${moduleUntaggedName}">
        <not><equals arg1="${versionExpression}" arg2=""/></not>
      </condition>
    </target>

    <target name="prepare" depends="init">
        <mkdir dir="${build}"/>
    </target>

    <!-- assemble: package the ear archive -->
    <target name="assemble" depends="prepare,process.servletName">
        <property name="moduleUntaggedArchive" value="${build}/${moduleUntaggedName}.${modulePackaging}"/>
        <delete file="${moduleUntaggedArchive}" failonerror="false"/>
        <ant dir="${moduleBuildDir}" target="create.version" inheritAll="false">
          <property name="versionExpression" value="${versionExpression}"/>
          <property name="xmlVersionIdentifier" value=""/>
        </ant>
        <move file="${build}/${servletAppName}.${modulePackaging}" tofile="${moduleUntaggedArchive}" failonerror="false"/>
        <property name="xmlFile" value="${gfDDDir}/${gfDDFile}"/>
            <antcall target="generate.xml.identifier"/>
        <jar destfile="${archiveFile}">
          <fileset dir="." includes="META-INF/*.xml"/>
          <fileset dir="${build}" includes="${moduleUntaggedName}.${modulePackaging}"/>
        </jar>
        <delete file="${moduleUntaggedArchive}" failonerror="false"/>
     </target>

<!--
  Currently, only the scenarios processing test.registred and test.notregistred
  are supported.
-->
    <target name="main-all">
      <antcall target="xml.version.information"/>
      <antcall target="clean.scenario"/>
    </target>
</project>
