<?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/web.jsf.editor">
    <description>Builds, tests, and runs the project org.netbeans.modules.web.jsf.editor</description>
    <import file="../../nbbuild/templates/projectized.xml"/>
    <target name="-check-prepared-zip">
        <condition property="web.jsf.editor.generated-zip-created" value="present">
            <and>
                <available file="external/generated-jsf-api-docs-2.3.zip" />
            </and>
        </condition>
    </target>
    <target name="build-init" depends="-check-prepared-zip,projectized.build-init" unless="web.jsf.editor.generated-zip-created">
        <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-jsf-api-docs-2.3.zip"/>
        <mkdir dir="build/jsf_editor_api_location"/>
        <unzip src="${jars_location}/javax.faces-api-2.3-javadoc.jar" dest="build/jsf_editor_api_location/" />
        <zip destfile="./external/generated-jsf-api-docs-2.3.zip">
            <fileset dir="./build/jsf_editor_api_location/javadocs/">
                <exclude name="**/*.png"/>
                <exclude name="**/*.cur"/>
            </fileset>
        </zip>
        <delete dir="build/jsf_editor_api_location" />
    </target>
</project>
