<!--

    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 commonSetup SYSTEM "file:./../../../../config/properties.xml">
<!ENTITY commonBuild SYSTEM "file:./../../../../config/common.xml">
<!ENTITY testproperties SYSTEM "file:./build.properties">
]>

<project name="doclit with anonymous types" default="usage" basedir=".">

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

  <target name="all" depends="clean,build"/>


  <target name="run.wscompile">
        <exec executable="${WSCOMPILE}" failonerror="true" >
        <arg line="-source 1.1.2 ${wscompile.command}" />
        </exec>
  </target>

  <target name="build" depends="init-common, clean">
    <antcall target="wsi"/>
    <antcall target="non-wsi"/>
  </target>

  <!-- this will wrap the element -->
  <target name="wsi" depends="init-common, clean">
    <antcall target="gen-portable">
      <param name="features" value="-f:wsi -Xprintstacktrace"/>
    </antcall>
    <antcall target="gen-non-portable"/>
  </target>

  <!-- this will unwrap the element -->
  <target name="non-wsi" depends="init-common, clean">
    <antcall target="gen-portable">
      <param name="features" value="-Xprintstacktrace"/>
    </antcall>
    <antcall target="gen-non-portable"/>
  </target>

  <target name="gen-portable" depends="init-common">
    <antcall target="run.wscompile">
      <param name="wscompile.command"
       value="-import -cp . -mapping mapping.xml ${features} config.xml"/>
    </antcall>
  </target>

  <!-- this is to mimic what the server would do at runtime -->
  <!-- NO feature flags as mapping file should contain enough info -->
  <target name="gen-non-portable" depends="init-common">
    <antcall target="run.wscompile">
      <param name="wscompile.command"
       value="-gen:both -cp . -f:wsi mapping.config.xml"/>
    </antcall>
  </target>

  <target name="clean" depends="init-common">
    <antcall target="clean-common"/>
    <delete dir="anonymous"/>
    <delete file="mapping.xml"/>
  </target>

  <target name="usage">
    <echo>
      Usage:
        ant all
    </echo>
  </target>
</project>
