<?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 name="ide/o.apache.xml.resolver" default="build" basedir=".">

    <import file="../../nbbuild/templates/projectized.xml"/>

    <!-- A task to check if the binary 'external/resolver-1.2.jar exists -->
    <target name="-check-requires-patching-maven-sources">
        <available file="external/resolver-1.2.jar" property="sources-already-patched" />
    </target>

    <!-- 
         '-javac-init' task is invoked after maven sources have been downloaded 
         to 'external/xml-resolver-1.2-sources.jar'
         (see external/binaries-list).
         Then if 'external/resolver-1.2.jar does NOT exist...
    -->
    <target name="-prepare-patched-binary" depends="-check-requires-patching-maven-sources,-define-FileCRC32Calculator" unless="sources-already-patched">
        <FileCRC32Calculator file="external/xml-resolver-1.2.jar" property="o.apache.xml.resolver.crc32" />

        <echo message="Patching xml-resolver-1.2-sources.jar for Netbeans..." />
        <taskdef name="patchfile" classname="org.netbeans.nbbuild.extlibs.PatchFile" classpath="${nbantext.jar}"/>
        <!-- ... 1. Prepares a 'build/external-patch/[sources|classes]' working directories -->
        <delete dir="build/external-patch" />
        <mkdir dir="build/external-patch/sources" />
        <!-- ... 2. Unzips maven sources -->
        <unzip src="external/xml-resolver-1.2-sources.jar" dest="build/external-patch/sources" />
        <!-- ... 3. Applies patch 'external/xml-resolver-1.2-netbeans.patch -->
        <patchfile dir="build/external-patch/sources"
            patchfile="external/xml-resolver-1.2-netbeans.patch" />
        <!-- ... 4. Compiles sources to build/external-patch/classes -->
        <mkdir dir="build/external-patch/classes" />
        <javac srcdir="build/external-patch/sources" destdir="build/external-patch/classes" release="8">
            <exclude name="org/apache/xml/resolver/tests/**" />
        </javac>
        <!-- ... 5. Creates a jar in 'external/resolver-1.2.jar' -->
        <jar destfile="external/resolver-1.2.jar">
            <fileset dir="build/external-patch/classes" />
            <zipfileset src="external/xml-resolver-1.2.jar" includes="org/apache/xml/resolver/etc/**" />
            <manifest>
                <attribute name="NB-Original-CRC" value="${o.apache.xml.resolver.crc32}"/>
            </manifest>
        </jar>
    </target>

    <!-- Hook into harness "basic-init" task -->
    <target name="-process.release.files" depends="-prepare-patched-binary"/>


</project>
