<!--

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

-->

  <target name="emma.usage">
    <echo><![CDATA[
**************************************************************************************
*  Usage : (Take ejb component for example)                                          *
*    ant all -> ant enable.emma all emma.gen.coverage.report -Demma.enabled=true     *
**************************************************************************************]]></echo>
   </target>

  <property name="emma.port.used.by.server" value="34543" /> <!-- port number must not be 47653 -->
  <property name="emma.coverage.out.file" value="${basedir}/coverage.ec" />

  <property name="glassfish-zip-file" value="${env.GLASSFISH_ZIP_FILE}" />
  <property name="glassfish.src.dir" value="${env.GLASSFISH_SRC_DIR}" />
  <property name="glassfish.server.dir" value="${env.S1AS_HOME}" />

  <property name="emma-filters-file" value="emma-filters.txt" />

  <!--the direcotry in which the reports are placed-->
  <property name="report.dir" value="${basedir}/report" />
  <!--the direcotry in which the coverage report is placed-->
  <property name="coverage.dir" value="${report.dir}/coverage" />

  <!-- directory that contains emma.jar and emma_ant.jar: -->
  <property name="emma.lib.dir" value="${env.APS_HOME}/lib" />
  <property name="emma.jar.name" value="emma.jar" />
  <property name="emma.ant.jar.name" value="emma_ant.jar" />

  <path id="emma.lib">
    <!-- use version 2.1.5320 of emma, otherwise, there is a Malformed data exception. -->
    <pathelement location="${emma.lib.dir}/${emma.jar.name}" />
    <pathelement location="${emma.lib.dir}/${emma.ant.jar.name}" />
  </path>

  <taskdef resource="emma_ant.properties" classpathref="emma.lib" />

  <target name="emma.prerequsite.check" description="Checking Prerequsite ...">
    <condition property="emma.prerequsite.met">
      <and>
        <isset property="emma.enabled" />
        <available file="${glassfish-zip-file}" type="file" />
        <antversion atleast="1.8"/>
      </and>
    </condition>
    <fail message="Please make sure ant version is 1.8 or higher, emma.enabled property is set, and environment variable GLASSFISH_ZIP_FILE is exported.">
      <condition>
        <not>
          <isset property="emma.prerequsite.met" />
        </not>
      </condition>
    </fail>
    <echo>[EMMA] : The prerequisite conditions are satisfied.</echo>
  </target>

  <target name="emma.init" depends="emma.prerequsite.check" if="emma.prerequsite.met" description="Initialize EMMA">
    <touch file="${emma-filters-file}"/>
    <mkdir dir="${coverage.dir}"/>
    <copy file="${emma.lib.dir}/${emma.jar.name}" todir="${glassfish.server.dir}/domains/domain1/lib/ext/" overwrite="true" />
  </target>

  <target name="emma.instrument" depends="emma.init" if="emma.prerequsite.met" description="Instrument Classes With EMMA">
    <property name="original.jar.dir" value="${glassfish.server.dir}/modules" />
    <echo>[EMMA] : Start to instrument the JAR files under ${original.jar.dir}/.</echo>

    <!--The temporary directory contains instrumented classes, and the jar files-->
    <property name="instrumented.dir" value="${basedir}/.instrumented" />
    <mkdir dir="${instrumented.dir}" />
    <emma enabled="true" verbosity="quiet">
      <instr mode="fullcopy"
             outdir="${instrumented.dir}"
             merge="true"
             metadatafile="${basedir}/metadata.em"
      >
        <instrpath>
          <!-- There is a bug in EMMA that it instruments all JARs under ${original.jar.dir} -->
          <fileset dir="${original.jar.dir}">
            <patternset refid="emma.instrument.jar.files" />
          </fileset>
        </instrpath>
        <filter file="${emma-filters-file}" />
      </instr>
    </emma>

    <!-- copy instrumented jars to glassfish server's classpath to overwite the old ones-->
    <copy todir="${original.jar.dir}" overwrite="true">
      <fileset dir="${instrumented.dir}/lib">
        <!-- we are not using '**/*.jar' to copy file due to the above bug, instead, copy one by one.  -->
        <patternset refid="emma.instrument.jar.files" />
      </fileset>
    </copy>
    <delete dir="${instrumented.dir}" />

    <echo>[EMMA] : The JAR files under ${original.jar.dir}/ have been instrumented.</echo>
  </target>

  <target name="emma.glassfish.settings" depends="emma.prerequsite.check" if="emma.prerequsite.met" description="Set port used by EMMA in GF, and let GF load EMMA's JARs">
    <replace file="${glassfish.server.dir}/domains/domain1/config/domain.xml">
      <replacetoken><![CDATA[        <jvm-options>-XX:NewRatio=2</jvm-options>
      </java-config>]]></replacetoken>
      <replacevalue expandProperties="true"><![CDATA[        <jvm-options>-XX:NewRatio=2</jvm-options>
          <jvm-options>-Demma.rt.control.port=${emma.port.used.by.server}</jvm-options>
          <jvm-options>-Demma.coverage.out.file=${emma.coverage.out.file}</jvm-options>
      </java-config>]]></replacevalue>
    </replace>

    <copy file="${glassfish.server.dir}/config/osgi.properties" todir="${glassfish.server.dir}/domains/domain1/config/" overwrite="true" />
    <property file="${glassfish.server.dir}/domains/domain1/config/osgi.properties" />
    <propertyfile
        file="${glassfish.server.dir}/domains/domain1/config/osgi.properties"
        comment="Adding EMMA settings">
      <entry key="org.osgi.framework.bootdelegation" value="${org.osgi.framework.bootdelegation}, com.vladium, com.vladium.*"/>
    </propertyfile>
  </target>

  <target name="emma.gen.coverage.report" depends="emma.prerequsite.check" if="emma.prerequsite.met" description="Generate Coverage Report With EMMA">
    <delete>
      <fileset dir="${coverage.dir}">
        <include name="**/*.html" />
      </fileset>
    </delete>
    <emma enabled="true">
      <report sourcepath="${glassfish.src.dir}"
              sort="+block,+name,+method,+class"
              metrics="method:70,block:80,line:80,class:100">
        <fileset dir="${basedir}">
          <include name="**/*.em" />
          <include name="**/*.ec" />
        </fileset>
        <html outfile="${coverage.dir}/coverage.html"
              columns="name,class,method,block,line"
              depth="method"
        />
      </report>
    </emma>
    <echo>[EMMA] : Code coverage report has been generated.</echo>
    <antcall target="emma.clean"/>
  </target>

  <target name="emma.clean" description="Clean Temporary Files During Generating EMMA Code Coverage Report">
    <echo>[EMMA] : Cleaning Files Generated By EMMA.</echo>

    <replace file="${glassfish.server.dir}/domains/domain1/config/domain.xml">
      <replacetoken expandProperties="true"><![CDATA[        <jvm-options>-XX:NewRatio=2</jvm-options>
        <jvm-options>-Demma.rt.control.port=${emma.port.used.by.server}</jvm-options>
        <jvm-options>-Demma.coverage.out.file=${emma.coverage.out.file}</jvm-options>
      </java-config>]]></replacetoken>
      <replacevalue><![CDATA[        <jvm-options>-XX:NewRatio=2</jvm-options>
      </java-config>]]></replacevalue>
    </replace>
    <delete file="${glassfish.server.dir}/domains/domain1/lib/ext/${emma.jar.name}"/>
    <delete file="${glassfish.server.dir}/domains/domain1/config/osgi.properties" />
    <delete>
      <fileset dir="${basedir}">
        <include name="**/*.ec" />
        <include name="**/*.em" />
      </fileset>
    </delete>

    <!-- create a temporatory direcotry for exploding glassfish.zip -->
    <property name="tmp.gf.exploded.dir" value="${basedir}/tmp_exploded_gf" />
    <mkdir dir="${tmp.gf.exploded.dir}/" />
    <!-- restore original EJB jar files -->
    <unzip src="${glassfish-zip-file}" dest="${tmp.gf.exploded.dir}"/>
    <copy todir="${glassfish.server.dir}/modules" overwrite="true">
      <fileset dir="${tmp.gf.exploded.dir}/glassfish7/glassfish/modules/">
        <include name="**/*.jar"/>
      </fileset>
    </copy>
    <delete dir="${tmp.gf.exploded.dir}/" />
  </target>

  <target name="enable.emma" depends="emma.init, emma.instrument, emma.glassfish.settings" if="emma.prerequsite.met" description="Enable EMMA">
    <echo>[EMMA] : Enable EMMA to collect code coverage runtime data.</echo>
  </target>
