<?xml version="1.0" encoding="UTF-8"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

-->
<project basedir="." default="build" name="enterprise/servletjspapi">
    <import file="../../nbbuild/templates/projectized.xml"/>

    <target name="-check-prepared-jar">
        <condition property="servletjspapi.jarcreated" value="present">
            <and>
                <available file="external/generated-servlet-jsp-api-3.1_2.3.jar" />
            </and>
        </condition>
    </target>

    <target name="build-init" depends="-check-prepared-jar,projectized.build-init" unless="servletjspapi.jarcreated">
        <property name="jars_location" location="./external"/>
            <fail message="Set jars_location">
                <condition>
                    <not>
                        <available  file="${jars_location}" type="dir"/>
                    </not>
                </condition>
            </fail>

            <echo message="Creating generated-servlet-jsp-api-3.1_2.3.jar"/>
            <mkdir dir="servletjspapi_api_location"/>
            <unzip src="${jars_location}/gf-client-module-5.0.jar" dest="servletjspapi_api_location/"/>
            <unzip src="${jars_location}/javax.servlet.jsp-api-2.3.3.jar" dest="servletjspapi_api_location/"/>
            <unzip src="${jars_location}/javax.servlet-api-3.1.0.jar" dest="servletjspapi_api_location/"/>
            <unzip src="${jars_location}/el-api-2.2.jar" dest="servletjspapi_api_location/"/>

            <mkdir dir="servletjspapi_api_location/resources/dtds" />
            <copy todir="servletjspapi_api_location/resources/dtds">
                <fileset dir="./servletjspapi_api_location/dtds">
                    <include name="web-app_2_2.dtd"/>
                    <include name="web-app_2_3.dtd"/>
                    <include name="web-jsptaglibrary_1_1.dtd"/>
                    <include name="web-jsptaglibrary_1_2.dtd"/>
                </fileset>
            </copy>

            <mkdir dir="servletjspapi_api_location/resources/schemas" />
            <copy todir="servletjspapi_api_location/resources/schemas">
                <fileset dir="servletjspapi_api_location/schemas">
                    <include name="XMLSchema.dtd"/>
                    <include name="datatypes.dtd"/>
                    <include name="j2ee_1_4.xsd"/>
                    <include name="j2ee_web_services_1_1.xsd"/>
                    <include name="j2ee_web_services_client_1_1.xsd"/>
                    <include name="javaee_5.xsd"/>
                    <include name="javaee_6.xsd"/>
                    <include name="javaee_7.xsd"/>
                    <include name="javaee_8.xsd"/>
                    <include name="javaee_web_services_1_2.xsd"/>
                    <include name="javaee_web_services_1_3.xsd"/>
                    <include name="javaee_web_services_1_4.xsd"/>
                    <include name="javaee_web_services_client_1_2.xsd"/>
                    <include name="javaee_web_services_client_1_3.xsd"/>
                    <include name="javaee_web_services_client_1_4.xsd"/>
                    <include name="jsp_2_0.xsd"/>
                    <include name="jsp_2_1.xsd"/>
                    <include name="jsp_2_2.xsd"/>
                    <include name="jsp_2_3.xsd"/>
                    <include name="web-app_2_4.xsd"/>
                    <include name="web-app_2_5.xsd"/>
                    <include name="web-app_3_0.xsd"/>
                    <include name="web-app_3_1.xsd"/>
                    <include name="web-app_4_0.xsd"/>
                    <include name="web-common_3_0.xsd"/>
                    <include name="web-common_3_1.xsd"/>
                    <include name="web-common_4_0.xsd"/>
                    <include name="web-facelettaglibrary_2_0.xsd"/>
                    <include name="web-facelettaglibrary_2_2.xsd"/>
                    <include name="web-facelettaglibrary_2_3.xsd"/>
                    <include name="web-fragment_3_0.xsd"/>
                    <include name="web-fragment_3_1.xsd"/>
                    <include name="web-fragment_4_0.xsd"/>
                    <include name="web-jsptaglibrary_2_0.xsd"/>
                    <include name="web-jsptaglibrary_2_1.xsd"/>
                    <include name="web-partialresponse_2_2.xsd"/>
                    <include name="xml.xsd"/>
                    <include name="beans_1_0.xsd"/>
                    <include name="beans_1_1.xsd"/>
                    <include name="beans_2_0.xsd"/>
                </fileset>
            </copy>

            <delete file="./external/generated-servlet-jsp-api-3.1_2.3.jar" />
            <zip  basedir="servletjspapi_api_location"
                    includes="javax/servlet/jsp/**, javax/servlet/**, resources/**, javax/el/**"
                                zipfile="./external/generated-servlet-jsp-api-3.1_2.3.jar" />
            <delete dir="servletjspapi_api_location" />
    </target>
</project>
