<?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.

-->
<!DOCTYPE apichanges PUBLIC "-//NetBeans//DTD API changes list 1.0//EN" "../../nbbuild/javadoctools/apichanges.dtd">
<apichanges>
    <apidefs>
        <apidef name="util_base">Base Utilities API</apidef>
        <apidef name="xml_base">XML API</apidef>
    </apidefs>
        <changes>
            <change id="uri-normalize">
                <api name="util_base"/>
                <summary>Adding BaseUtilities.normalize</summary>
                <version major="9" minor="20"/>
                <date year="2021" month="6" day="15"/>
                <author login="jlahoda"/>
                <compatibility addition="yes" binary="compatible" source="compatible"/>
                <description>
                    <p>
                        Adding BaseUtilities.normalize, as a replacement for URI.normalize,
                        which should more carefully handle certain special URIs in non-normal
                        form.
                    </p>
                </description>
                <class package="org.openide.util" name="BaseUtilities"/>
                <issue number="4953"/>
        </change>
        <change id="lookup-mutex-event">
            <api name="util_base"/>
            <summary>Propagate current Lookup via Mutex.EVENT</summary>
            <version major="9" minor="18"/>
            <date year="2021" month="1" day="10"/>
            <author login="jtulach"/>
            <compatibility addition="yes" binary="compatible" source="compatible"/>
            <description>
                <p>
                    <a href="@TOP@/org/openide/util/Mutex.html#EVENT">Mutex.EVENT</a>
                    methods have been enhanced to work well with
                    <a href="@org-openide-util-lookup@/org/openide/util/lookup/Lookups.html#executeWith-org.openide.util.Lookup-java.lang.Runnable-">Lookups.executeWith(...)</a>.
                </p>
            </description>
            <class package="org.openide.util" name="Mutex"/>
            <issue number="188604"/>
        </change>
    <change id="weak-listen-on-specific-property">
        <api name="util_base"/>
        <summary>Weak property and vetoable listeners for a specific property name.</summary>
        <version major="9" minor="2"/>
        <date year="2014" month="10" day="22"/>
        <author login="mentlicher"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            <p>
                <code>WeakListeners</code> class got variants of <code>propertyChange()</code>
                and <code>vetoableChange()</code> methods, which take the property name.
                They are to be used as an argument to
                <code>addPropertyChangeListener(String propertyName, PropertyChangeListener listener)</code>
                and <code>addVetoableChangeListener(String propertyName, PropertyChangeListener listener)</code>
                methods respectively, and will call the appropriate remove methods with the provided
                property name.
            </p>
        </description>
        <class package="org.openide.util" name="WeakListeners"/>
        <issue number="188604"/>
    </change>
        <change id="server.is.free">
            <api name="util_base"/>
            <summary>Desktop independent utilities extracted</summary>
            <version major="9" minor="0"/>
            <date day="20" month="3" year="2014"/>
            <author login="sdedic"/>
            <compatibility modification="yes" addition="yes" binary="compatible" source="incompatible">
                <p>
                    Runtime compatibility remains, compile time compatibility is
                    mostly preserved too. It is however recommended to upgrade
                    dependencies of client modules. Try running
                    <code>ant fix-dependencies</code> in your Ant module.
                </p>
                <p>
                    Parts of <a href="@org-openide-util@/org/openide/util/Mutex.html">org.openide.util.Mutex</a>
                    that depended on EDT were removed.
                </p>
                <p>
                    Please also refer to the <a href="@org-openide-util-ui@/apichanges.html">API Changes document</a> of the
                    original <code>openide.utilities.ui</code> module.
                </p>
            </compatibility>
            <description>
                <p>
                    The following classes were spinned of into 
                    <a href="@org-openide-util@/overview-summary.html">org.openide.util.base module</a>:
                </p>
                <ul>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/Cancellable.html">Cancellable</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/ChangeSupport.html">ChangeSupport</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/CharSequences.html">CharSequences</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/Enumerations.html">Enumerations</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/Exceptions.html">Exceptions</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/MapFormat.html">MapFormat</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/Mutex.html">Mutex</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/MutexException.html">MutexException</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/NbBundle.html">NbBundle</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/NbCollections.html">NbCollections</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/NotImplementedException.html">NotImplementedExcepion</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/Pair.html">Pair</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/Parameters.html">Parameters</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/RequestProcessor.html">RequestProcessor</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/Task.html">Task</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/TaskListener.html">TaskListener</a>
                    </li>
                    <li>
                        TimedSoftReference
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/TopologicalSortException.html">TopologicalSortException</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/Union2.html">Union2</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/WeakListeners.html">WeakListeners</a>
                    </li>
                    <li>
                        <a href="@org-openide-util@/org/openide/util/WeakSet.html">WeakSet</a>
                    </li>
                </ul>
                <p>
                    The class <a href="@org-openide-util-ui@/org/openide/util/Utilities.html">Utilities</a> was also split and the
                    client desktop indepenent parts landed in <a href="@org-openide-util@/org/openide/util/BaseUtilities.html">BaseUtilities</a>.
                    Although all the constants and methods are still available through Utilities class, it is advised to change the dependencies
                    and reference them through BaseUtilities.
                </p>
            </description>
            <issue number="243100"/>
        </change>
    </changes>
    <htmlcontents>
        <head>
            <title>Change History for the Base Utilities API</title>
            <link rel="stylesheet" href="prose.css" type="text/css"/>
        </head>
        <body>
            <p class="overviewlink">
                <a href="overview-summary.html">Overview</a>
            </p>
            <h1>Introduction</h1>
            <h2>What do the Dates Mean?</h2>
            <p>The supplied dates indicate when the API change was made, on the CVS
                trunk. From this you can generally tell whether the change should be
                present in a given build or not; for trunk builds, simply whether it
                was made before or after the change; for builds on a stabilization
                branch, whether the branch was made before or after the given date. In
                some cases corresponding API changes have been made both in the trunk
                and in an in-progress stabilization branch, if they were needed for a
                bug fix; this ought to be marked in this list.</p>
            <ul>
                <li>The <code>release41</code> branch was made on Apr 03 '05 for use in the NetBeans 4.1 release.
                    Specification versions: 6.0 begins after this point.</li>
                <li>The <code>release40</code> branch was made on Nov 01 '04 for use in the NetBeans 4.0 release.
                    Specification versions: 5.0 begins after this point.</li>
            </ul>
            <hr/>
            <standard-changelists module-code-name="$codebase"/>
            <hr/>
            <p>@FOOTER@</p>
        </body>
    </htmlcontents>
</apichanges>
