<?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="platform/autoupdate.services">
    <description>Builds, tests, and runs the project org.netbeans.modules.autoupdate.services</description>
    <import file="../../nbbuild/templates/projectized.xml"/>
    <target name="compile-updater" depends="init">
        <mkdir dir="${build.dir}/updaterclasses"/>
        <javac srcdir="libsrc" destdir="${build.dir}/updaterclasses"
               deprecation="${build.compiler.deprecation}"
               debug="${build.compiler.debug}" debuglevel="${build.compiler.debuglevel}"
               optimize="${build.compiler.optimize}" source="${javac.source}"
               target="${javac.target}">
            <compilerarg line="${javac.compilerargs}"/>
        </javac>
        <copy todir="${build.dir}/updaterclasses">
            <fileset dir="libsrc" excludes="${jar-excludes}"/>
        </copy>
    </target>

    <target name="jar-updater" depends="init,compile-updater">
        <mkdir dir="${cluster}/modules/ext" />
        <nb-ext-jar jarfile="${cluster}/modules/ext/updater.jar"
             compress="${build.package.compress}">
            <manifest>
                <attribute name="NetBeans-Own-Library" value="true"/>
            </manifest>
            <fileset dir="${build.dir}/updaterclasses"/>
        </nb-ext-jar>
    </target>

    <target name="compile" depends="jar-updater,projectized-common.compile"/>

    <target name="netbeans-extra" depends="jar-updater"/>

    <target name="do-unit-test-build" depends="projectized.do-unit-test-build">
        <property name="validation-store" value="${build.test.unit.classes.dir}/org/netbeans/api/autoupdate/data/test-validate-keystore.jks" />
        <delete file="${validation-store}" />
        <genkey
            keystore="${validation-store}"
            alias="demo-key" storepass="password"
            dname="CN=Demo Key, OU=NetBeans, O=Apache.org, C=US"
        />
        <property name="unvalidation-store" value="${build.test.unit.classes.dir}/org/netbeans/api/autoupdate/data/test-unvalidate-keystore.jks" />
        <delete file="${unvalidation-store}" />
        <genkey
            keystore="${unvalidation-store}"
            alias="demo-key-unvalidated" storepass="password"
            dname="CN=Demo Key (unvalidated), OU=NetBeans, O=Apache.org, C=US"
        />
        <touch file="${build.dir}/Dummy.class" />
        <touch file="${build.dir}/Dummy2.class" />
        <jar destfile="${build.test.unit.classes.dir}/org/netbeans/api/autoupdate/data/dummy-signed.jar">
            <zipfileset prefix="dummy/" file="${build.dir}/Dummy.class"/>
        </jar>
        <signjar jar="${build.test.unit.classes.dir}/org/netbeans/api/autoupdate/data/dummy-signed.jar"
                 keystore="${test.unit.src.dir}/org/netbeans/api/autoupdate/data/test-keystore.jks"
                 storepass="password"
                 alias="test-one" />
        <jar destfile="${build.test.unit.classes.dir}/org/netbeans/api/autoupdate/data/dummy-signed-twice.jar">
            <zipfileset prefix="dummy/" file="${build.dir}/Dummy.class"/>
        </jar>
        <signjar jar="${build.test.unit.classes.dir}/org/netbeans/api/autoupdate/data/dummy-signed-twice.jar"
                 keystore="${test.unit.src.dir}/org/netbeans/api/autoupdate/data/test-keystore.jks"
                 storepass="password"
                 alias="test-one" />
        <signjar jar="${build.test.unit.classes.dir}/org/netbeans/api/autoupdate/data/dummy-signed-twice.jar"
                 keystore="${test.unit.src.dir}/org/netbeans/api/autoupdate/data/test-keystore.jks"
                 storepass="password"
                 alias="test-two" />
        <jar destfile="${build.test.unit.classes.dir}/org/netbeans/api/autoupdate/data/dummy-partial-signed.jar">
            <zipfileset prefix="dummy/" file="${build.dir}/Dummy.class"/>
        </jar>
        <signjar jar="${build.test.unit.classes.dir}/org/netbeans/api/autoupdate/data/dummy-partial-signed.jar"
                 keystore="${test.unit.src.dir}/org/netbeans/api/autoupdate/data/test-keystore.jks"
                 storepass="password"
                 alias="test-one" />
        <zip destfile="${build.test.unit.classes.dir}/org/netbeans/api/autoupdate/data/dummy-partial-signed.jar"
             update="true">
            <zipfileset prefix="dummy/" file="${build.dir}/Dummy2.class" />
        </zip>
        <jar destfile="${build.test.unit.classes.dir}/org/netbeans/api/autoupdate/data/dummy-validated.jar">
            <zipfileset prefix="dummy/" file="${build.dir}/Dummy.class"/>
        </jar>
        <signjar jar="${build.test.unit.classes.dir}/org/netbeans/api/autoupdate/data/dummy-validated.jar"
                 keystore="${validation-store}"
                 storepass="password"
                 alias="demo-key" />
        <jar destfile="${build.test.unit.classes.dir}/org/netbeans/api/autoupdate/data/dummy-unvalidated.jar">
            <zipfileset prefix="dummy/" file="${build.dir}/Dummy.class"/>
        </jar>
        <signjar jar="${build.test.unit.classes.dir}/org/netbeans/api/autoupdate/data/dummy-unvalidated.jar"
                 keystore="${unvalidation-store}"
                 storepass="password"
                 alias="demo-key-unvalidated" />
    </target>

</project>
