Skip navigation links

Introduction

What do the Dates Mean?

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.


Index of APIs

Incompatible changes by date

Fuller descriptions of all changes can be found below (follow links).

Not all deprecations are listed here, assuming that the deprecated APIs continue to essentially work. For a full deprecation list, please consult the Javadoc.

All changes by date

Changes by version

These API specification versions may be used to indicate that a module requires a certain API feature in order to function. For example, if you see here a feature you need which is labelled 1.20, your manifest should contain in its main attributes the line:

OpenIDE-Module-Module-Dependencies: $codebase > 1.20

Changes by affected class

org.openide.util.actions.ActionInvoker

org.openide.util.actions.ActionPresenterProvider

org.openide.util.AsyncGUIJob

org.openide.util.actions.BooleanStateAction

org.openide.util.actions.CallbackSystemAction

org.openide.util.Cancellable

org.openide.util.ChangeSupport

org.openide.util.CharSequences

org.openide.util.ContextAwareAction

org.openide.util.ContextGlobalProvider

org.openide.util.EditableProperties

org.openide.xml.EntityCatalog

org.openide.util.Enumerations

org.openide.ErrorManager

org.openide.util.Exceptions

org.openide.util.HelpCtx

org.openide.util.ImageUtilities

org.openide.LifecycleManager

org.openide.util.Mutex

org.openide.util.NbBundle

org.openide.util.NbCollections

org.openide.util.NbPreferences

org.openide.util.NetworkSettings

org.openide.util.datatransfer.NewType

org.openide.util.Pair

org.openide.util.Parameters

org.openide.util.datatransfer.PasteType

org.openide.util.actions.Presenter

org.openide.util.RequestProcessor

org.openide.util.io.SafeException

org.openide.ServiceType

org.openide.util.SharedClassObject

org.openide.util.actions.SystemAction

org.openide.util.Task

org.openide.util.TopologicalSortException

org.openide.util.Union2

org.openide.util.URLStreamHandlerRegistration

org.openide.util.UserQuestionException

org.openide.util.Utilities

org.openide.util.WeakListeners

org.openide.util.WeakSet

org.openide.xml.XMLUtil


Details of all changes by API and date


Actions API

Action SPI interfaces added

Jan 21 '10; API spec. version: 8.1; affected top-level classes: ActionInvoker ActionPresenterProvider; made by: jglick; issues: #179289

Added some internal SPI interfaces.

New Actions system - part I.

Jan 8 '03; API spec. version: 3.29; affected top-level classes: ContextAwareAction Utilities CallbackSystemAction; made by: jtulach pzavadsky; issues: #27868

Introduction of new action system, which generally means move from usage of SystemAction to Action instances. That document also focuses on declarative actions usage which is not subject of current change, it will be part of later changes.

SystemAction refers to Icon rather than ImageIcon

Apr 11 '00; affected top-level classes: SystemAction; made by: jglick
getIcon and setIcon now use the interface Icon rather than the particular implementation ImageIcon. This corrects an API bug (excessive specificity).
Compatibility: First broken, later restored binary compatibility in trunk and boston. Any code explicitly using this calls before may break (source code may be compatible in many cases; binary compatibility has been preserved). These calls were known to be used only for Actions to create presenters; normal code which constructs SystemActions and implements iconResource should be unaffected. Actions using the "grouping action" template should check their getMenuPresenter method which may be binary-incompatible; it is easy to replace the code with safer code such as:

// ....

private static Icon icon = null;
// ....

public JMenuItem getMenuPresenter() {
    JMenu menu = new JMenu(getName ());
    if (icon == null) {
        icon = new ImageIcon(MyAction.class.getResource(iconResource()));
    }
    menu.setIcon(icon);
    // ....


Binary-compatible

Can create textual icons for actions

Mar 23 '00; affected top-level classes: SystemAction; made by: jglick
iconResource may now return null to indicate no icon. getIcon(true) may be used to get an icon created from the label if there is no icon specified.

Utilities API

BooleanStateAction deprecated in favour of Actions API and @ActionState annotation.

Aug 1 '18; API spec. version: 9.11; affected top-level classes: BooleanStateAction; made by: sdedic

The BooleanStateAction base class was deprecated, as there's a programatic API in Actions and a declarative @ActionState annotation which fully supersede the deprecated class.

API NetworkSettings.getAuthenticationPassword added

Nov 11 '16; API spec. version: 9.8; affected top-level classes: NetworkSettings; made by: tstupka; issues: #268803

The SPI NetworkSettings.ProxyCredentialsProvider allows NetBeans Platform users to provide proxy and network credentials, but the according API should also provide the password, not only the username.

Platform dependent sound when invoking a disabled action.

Jul 9 '14; API spec. version: 8.39; affected top-level classes: Utilities; made by: saubrecht; issues: #203979

Only some platforms provide an audible notification when user tries to invoke a disabled action. So instead of Toolkit.beep() which always plays a sound a new method Utilities.disabledActionSound() shoud be used instead.

Desktop independent utilities extracted

Mar 20 '14; API spec. version: 9.0; made by: sdedic; issues: #243100

The following classes were spinned of into org.openide.util.base module:

The class Utilities was also split and the client desktop indepenent parts landed in BaseUtilities. Although all the constants and methods are still available through Utilities class, it is advised to change the dependencies and reference them through BaseUtilities.


Compatibility:

Runtime compatibility remains, compile time compatibility is mostly preserved too. It is however recommended to upgrade dependencies of client modules. Try running ant fix-dependencies in your Ant module.

Try to lock a Mutex

Jan 20 '14; API spec. version: 8.37; affected top-level classes: org.openide.util.Mutex; made by: jtulach; issues: #240442

Two new methods, tryReadAccess and tryWriteAccess, added to Mutex.Privileged to allow better control when waiting for a lock.

Added an option to load different images and icons when using a dark look and feel.

Dec 6 '13; API spec. version: 8.35; affected top-level classes: ImageUtilities; made by: saubrecht; issues: #233959

When the IDE is running under a dark look and feel (UIManager.getBoolean("nb.dark.theme")) then ImageUtilities will try to load an image or on icon with a "_dark" suffix. For example "org/netbeans/modulename/toolbaricon_dark.png" or "org/netbeans/modulename/imagewithoutextension_dark". If such resource exists it will be used instead of the default one.

Added a type safe Pair of 2 elements

May 1 '13; API spec. version: 8.32; affected top-level classes: org.openide.util.Pair; made by: tzezula; issues: #228994

Added a type safe Pair of 2 elements.

Automatic support for UserQuestionException

Nov 14 '12; API spec. version: 8.29; affected top-level classes: org.openide.util.Exceptions UserQuestionException; made by: jtulach; issues: #57748

The default NetBeans Platform infrastructure knows how to display dialog when a UserQuestionException is reported.

UNC-safe File / URI interconversion

Jun 11 '12; API spec. version: 8.25; affected top-level classes: Utilities; made by: jglick; issues: #213562

Utilities gets new methods toURI(File) and toFile(URI) which offer the UNC safety of NIO.2 even on JDK 6.


Compatibility:

Use the Jackpot-format upgrade hint.

Exit with status code

Mar 8 '12; API spec. version: 8.23; affected top-level classes: LifecycleManager; made by: jtulach; issues: #209018

LifecycleManager has new exit method allowing callers to specify the exit code.

@NbBundle.Messages available on fields

Jan 3 '12; API spec. version: 8.22; affected top-level classes: org.openide.util.NbBundle; made by: jglick; issues: #206543

@NbBundle.Messages may now be used on fields, useful in case the field initializer involves some complex construction requiring a localized message. (Merely storing a localized message in a String constant is poor practice; inline the field instead.)


Compatibility:

Existing annotations made on classes but only used from a field within that class will continue to work, but for clarity should be moved onto the field.

HelpCtx.display added

Dec 13 '11; API spec. version: 8.21; affected top-level classes: HelpCtx; made by: jglick; issues: #205992

To permit modules to display help pages where available without a direct dependency on the JavaHelp API, HelpCtx.display() was added together with a matching SPI.


Compatibility:

Modules calling org.netbeans.api.javahelp.Help.showHelp via reflection should use this new API instead.

RequestProcessor tweaks

Oct 12 '11; API spec. version: 8.19; affected top-level classes: org.openide.util.RequestProcessor; made by: jtulach; issues: #202354

In order to deal with bug #202354 there were some minor tweaks inside RequestProcessor implementation.


Compatibility: The changes are supposed to be as compatible as possible. The only desirable change is that calling cancel(); cancel() on the same task returns false on the second call now. In spite of that the changes caused bunch of regressions and it took a week to stabilize them. That is why they deserve a warning note in compatibility section.

SPI NetworkSettings.ProxyCredentialsProvider added

Sep 20 '11; API spec. version: 8.17; affected top-level classes: NetworkSettings; made by: jrechtacek; issues: #201662

Most of the proxy and network credentials are currently read from a default NetBeans storage. This may not be ideal for other Platform aplications storing the settings in a different way or computing them dynamically. A SPI NetworkSettings.ProxyCredentialsProvider allows NetBeans Platform users to provide proxy and network credentials separately. See http://wiki.netbeans.org/Authenticator

NetworkSettings.suppressAuthenticationDialog added

Sep 20 '11; API spec. version: 8.17; affected top-level classes: NetworkSettings; made by: jrechtacek; issues: #201662

Some plugins needs a way to suppress java.net.Authenticator without asking user a question about the credentials. Invoke suppressAuthenticationDialog with a block of code where authentication dialog will be suppressed. See http://wiki.netbeans.org/Authenticator

NetworkSettings added

Feb 1 '11; API spec. version: 8.13; affected top-level classes: NetworkSettings; made by: jrechtacek; issues: #194530

Added new useful methods for getting Network Proxy for specified URI.

ImageUtilities support "url" attribute

Jan 10 '11; API spec. version: 8.12; affected top-level classes: ImageUtilities; made by: jtulach; issues: #193944

Images loaded by ImageUtilities.loadImage now respond to getProperty("url", null) calls.

New implementation of WeakSet with two new methods putIfAbsent and resize

Dec 22 '10; API spec. version: 8.11; affected top-level classes: org.openide.util.WeakSet; made by: vv159170; issues: #192759

New method putIfAbsent gives access to key already stored in Set. Method resize allows to change capacity of internal hash map.

Added @NbBundle.Messages

Dec 8 '10; API spec. version: 8.10; affected top-level classes: org.openide.util.NbBundle; made by: jglick; issues: #192750

A new annotation makes it easier to produce localizable strings.

Supress logging of not important exceptions

Sep 8 '10; API spec. version: 8.9; affected top-level classes: org.openide.util.Exceptions; made by: jtulach; issues: #190079

New method Exceptions.attachSeverity allows everyone to thrown an exception, which later will not be logged.

Simplified constructor for RequestProcessor

Apr 13 '10; API spec. version: 8.6; affected top-level classes: org.openide.util.RequestProcessor; made by: jtulach; issues: #180458

Simpler constructor for RequestProcessor.

Added CharSequences

Apr 2 '10; API spec. version: 8.3; affected top-level classes: org.openide.util.CharSequences; made by: vv159170; issues: #183162

CharSequences.create can now be used to create memory-efficient implementations of CharSequence for ASCII strings.

NbPreferences.Provider added

Jan 21 '10; API spec. version: 8.1; affected top-level classes: org.openide.util.NbPreferences; made by: jglick; issues: #179289

Added an internal SPI interface.

Lookup API extracted

Dec 20 '09; API spec. version: 8.0; made by: jtulach; issues: #170056

Lookup and its associated interfaces are now available as a separate module.


Compatibility:

Runtime compatibility remains, compile time compatibility is mostly preserved too. It is however recommended to upgrade dependencies of your modules. Try running ant fix-dependencies in your Ant module.

Added @URLStreamHandlerRegistration

Oct 30 '09; API spec. version: 7.31; affected top-level classes: org.openide.util.URLStreamHandlerRegistration; made by: jglick; issues: #20838

Introduced an annotation to register URL protocols.


Compatibility:

Modules registering URLStreamHandlerFactorys into global lookup will still work but are advised to switch to this annotation, which is both easier to use and more efficient.

ImageUtilities.createDisabledIcon and ImageUtilities.createDisabledImage added.

Sep 10 '09; API spec. version: 7.28; affected top-level classes: ImageUtilities; made by: t_h; issues: #171400

ImageUtilities.createDisabledIcon now can be used to create low color saturation icon for disabled buttons. Also ImageUtilities.createDisabledImage was added.

NbBundle.getMessage can take arbitrarily many format arguments

Aug 5 '09; API spec. version: 7.27; affected top-level classes: org.openide.util.NbBundle; made by: jglick

NbBundle.getMessage now has a varargs overload that permits you to specify four or more format arguments without explicitly constructing an array.

Copied API from project.ant for EditableProperties.

Jul 29 '09; API spec. version: 7.26; affected top-level classes: org.openide.util.EditableProperties; made by: jglick; issues: #66577

EditableProperties now available in Utilities API so it can be used more broadly.

Added way to request that the platform restart.

Jul 14 '09; API spec. version: 7.25; affected top-level classes: LifecycleManager; made by: jglick; issues: #168257

Can now use LifecycleManager.markForRestart to cause the application to restart after exiting. Formerly needed to create special files in the userdir or use similar tricks.

Added constructor RequestProcessor(String name, int throughput, boolean interruptThread, boolean enableStackTraces)

Jun 8 '09; API spec. version: 7.24; affected top-level classes: org.openide.util.RequestProcessor; made by: rmichalsky; issues: #165862

Newly added constructor allows to disable (slow) filling stack traces before posting each task.

Added loadImageIcon(String resource, boolean localized)

Jan 26 '09; API spec. version: 7.22; affected top-level classes: ImageUtilities; made by: t_h; issues: #157254

Convenient method for loading icons.

Added keyToString(KeyStroke stroke, boolean portable)

Jan 8 '09; API spec. version: 7.21; affected top-level classes: Utilities; made by: msauer; issues: #110492

keyToString(KeyStroke stroke, boolean portable) provides cross-platform compitable keystroke textual representation instead of hardcoding Ctrl, Meta or Alt key.

Added OS_OPENBSD and OS_UNIX_OTHER fields

Sep 16 '08; API spec. version: 7.18; affected top-level classes: Utilities; made by: jskrivanek; issues: #145462

Added a new Utilities.OS_OPENBSD and OS_UNIX_OTHER fields. Deprecated OS_WINDOWS_MASK and OS_UNIX_MASK.

Added OS_WINVISTA field

Aug 8 '08; API spec. version: 7.17; affected top-level classes: Utilities; made by: jskrivanek; issues: #142629

Added a new Utilities.OS_WINVISTA field to be able to recognize Windows Vista operating system.

RequestProcessor implements Executor interface

Jun 27 '08; API spec. version: 7.16; affected top-level classes: org.openide.util.RequestProcessor; made by: jtulach; issues: #134297

In order to align RequestProcessor closer to standard Java 5 concurrency utilities, the class now implements Executor interfaces and its execute(Runnable) method.

ImageUtilities class (with additional methods) was created as replacement for "image methods" in Utilities.

Jun 6 '08; API spec. version: 7.15; affected top-level classes: Utilities ImageUtilities; made by: t_h; issues: #123469

Image methods were separated to ImageUtilities (renamed IconManager) as replacement for methods in Utilities. There are some additional methods for image tool tips manipulation.

New methods for tool tips manipulation: Image assignToolTipToImage(Image image, String text); String getImageToolTip(Image image); Image addToolTipToImage(Image image, String text);

New method for conversion from Image to Icon: Icon image2Icon(Image image);

"Moved" methods from Utilities: Image icon2Image(Icon icon); Image loadImage(String resourceID); Image loadImage(String resource, boolean localized); Image mergeImages(Image image1, Image image2, int x, int y);

Mutex made pluggable

Jan 3 '08; API spec. version: 7.12; affected top-level classes: org.openide.util.Mutex; made by: jtulach; issues: #123832

Added new constructor Mutex(Privileged, Executor) that allows creators of the mutex to intercept and wrap all actions running inside the mutex with custom code.

Obsolete method Utilities.isLargeFrameIcons deprecated.

Oct 23 '07; API spec. version: 7.10; affected top-level classes: Utilities; made by: mslama; issues: #119069

Javadoc says: Test whether the operating system supports icons on frames (windows). But window system used this method to decide if small 16x16 or bigger 32x32 icon should be used for frame (main window). So usage and Javadoc is inconsistent. All OS support small icon in frame. From JDK 6 it is possible to set multiple size icons for frame so OS WM selects appropriate size. I removed useless usage of this method from window system code and this method is not used elsewhere.

Added ChangeSupport

Mar 26 '07; API spec. version: 7.8; affected top-level classes: org.openide.util.ChangeSupport; made by: abadea; issues: #95885

Added a ChangeSupport class to simplify the management of ChangeListeners and the firing of ChangeEvents.

Added Utilities.isMac() method

Jan 11 '07; API spec. version: 7.7; affected top-level classes: Utilities; made by: rkubacki; issues: #61044

Added a Utilities.isMac() method for checking if current platform is Mac.

Added Parameters

Dec 8 '06; API spec. version: 7.6; affected top-level classes: org.openide.util.Parameters; made by: abadea; issues: #89768

Added a Parameters class for checking the values of method parameters.

Added NbCollections.iterable(...) methods

Nov 13 '06; API spec. version: 7.5; affected top-level classes: org.openide.util.NbCollections; made by: jglick; issues: #88606

Added two new methods to make enhanced for-loops easier to use with legacy APIs returning Iterator or Enumeration.

Added NbPreferences.forModule(Class cls) and NbPreferences.root() methods as static factory methods for getting preference node from NetBeans preference tree.

Nov 10 '06; API spec. version: 7.4; affected top-level classes: org.openide.util.NbPreferences; made by: rmatous; issues: #73474

NetBeans preference tree is provided by NetBeans implementation of preferences which uses userdir as a storage. Both newly added methods return preferences node from NetBeans preference tree. Method NbPreferences.root() returns root preference node. Method NbPreferences.forModule(Class cls) returns preference node whose path depends whether class provided as a parameter was loaded as a part of any module or not. If so, then absolute path corresponds to slashified code name base of module. If not, then absolute path corresponds to class's package. See document Preferences in NetBeans to learn more about preferences in NetBeans.

Added Utilities.icon2Image method to perform conversion from Icon to Image

Jul 4 '06; API spec. version: 7.3; affected top-level classes: Utilities; made by: rkubacki; issues: #52562

Conversion from Icon to Image is done at various places and newly introduced method avoids the need to duplicate the same code.

Added Exceptions class as a replacement for ErrorManager

Jun 20 '06; API spec. version: 7.2; affected top-level classes: org.openide.util.Exceptions; made by: jtulach; issues: #35067

ErrorManager is now deprecated and its replacement is either Logger or Exceptions.

Added NbCollections and Union2

Jun 5 '06; API spec. version: 7.1; affected top-level classes: org.openide.util.NbCollections org.openide.util.Union2; made by: jglick; issues: #73637

Added two new classes useful for transitioning to JDK 5 generics.

Do not use ErrorManager for logging

Apr 15 '06; API spec. version: 7.0; affected top-level classes: ErrorManager; made by: jtulach; issues: #56311
ErrorManager is no longer the recommended way to do logging in NetBeans based application. Instead NetBeans now fully support logging two JDK's standard Logger. See the NetBeans logging guide to learn the best practises for logging in NetBeans.
ErrorManager is still kept around for annotating exceptions with localized messages and advanced manipulation and its behaviour is fully backward compatible. However modules are adviced to migrate to logging whereever possible.
To migrate your modules you can install Jackpot modules from autoupdate (if they are not yet part of your IDE) and apply precreate javapot error manager rule.
There is one possible incompatibility from end user point of view. The way to enable logging for certain components when running inside the whole NetBeans container has changed: If there is Logger or ErrorManager named org.mymodule.MyComponent then the correct way to turn the logging is now to invoke NetBeans with -J-Dorg.mymodule.MyComponent.level=100 (where the possible constants are taken form a JDK's definition of level). There is however a certain benefit in this change, the value of the property (like org.mymodule.MyComponent.level) can be changed during runtime and thus the logging can be enabled or disabled dynamically (after changing the value, it is necessary to call LogManager.readConfiguration()).

Ability to create finished RequestProcessor task

Nov 22 '05; API spec. version: 6.8; affected top-level classes: org.openide.util.RequestProcessor; made by: jtulach; issues: #68031
RequestProcessor.create(Runnable, boolean) has been added to allow creation of Task that has not executed its runnable yet, but looks like it is finished.

DynamicMenuContent interface added

Jun 12 '05; API spec. version: 6.4; affected top-level classes: Presenter; made by: mkleint; issues: #35827
In order to support MacOSX top menus and to fix problems with deprecated JInlineMenu, this new interface was added that allows to handle dynamic content in Presenter.Menu and Presenter.Popup. If the instance returned by Presenter.Menu/Popup is an instance of DynamicMenuContent, it's methods are consulted when creating/updating the menu.

Support for interruption of RequestProcessor tasks

Jun 10 '05; API spec. version: 6.3; affected top-level classes: org.openide.util.RequestProcessor; made by: jtulach; issues: #33467
When one calls RequestProcessor.Task.cancel(), the running thread gets interrupted if the RequestProcessor(string, int, boolean) constructor is used. There always was a way how to cancel not yet running Task, but if the task was already running, one was out of luck. Since now the thread running the task is interrupted and the Runnable can check for that and terminate its execution sooner. In the runnable one shall check for thread interruption and if true, return immediatelly as in this example:
public void run () {
  while (veryLongTimeLook) {
    doAPieceOfIt ();

    if (Thread.interrupted ()) return;
  }
}

New method task.waitFinished(timeout) added

Nov 2 '04; API spec. version: 5.0; affected top-level classes: org.openide.util.Task org.openide.util.RequestProcessor; made by: jtulach; issues: #16849

It is not possible to wait for a limited amount of time for completion of any task. The RequestProcessor.Task version is optimized, the Task version ensures that the sematics will be compatible for all subclasses, even they did not know about the method at all.

Added field OS_FREEBSD to Utilities

Oct 29 '04; API spec. version: 4.50; affected top-level classes: Utilities; made by: jrechtacek

FreeBSD was not recognized as Unix OS. Utilities has been enlarged with new field OS_FREEBSD, part of OS Unix mask. Utilities.isUnix() now returns true for applications run on FreeBSD.

Added Mutex.isReadAccess() and Mutex.isWriteAcess()

Sep 30 '04; API spec. version: 4.48; affected top-level classes: org.openide.util.Mutex; made by: jtulach; issues: #49459
A thread can now check whether read or write access on a Mutex has already been granted to it and use it to decide whether it is safe to perform certain operations or delay them.

Added SharedClassObject.reset method to allow subclasses to implement reset correctly

Sep 2 '04; API spec. version: 4.46; affected top-level classes: SharedClassObject; made by: jtulach; issues: #20962
The new SharedClassObject.reset method is called by the infrastructure in moments when an original (at the time of start) state of an option or any other SharedClassObject is requested. Interested subclasses are free to implement any kind of clean they need. The SystemOption provides a default implementation based on fired property changed events, so its correctly written subclasses do not need to do anything.

enum package deprecated and replaced by Enumerations factory class

Jun 7 '04; API spec. version: 4.37; affected top-level classes: org.openide.util.Enumerations; made by: jtulach; issues: #41166
enum is a keyword in JDK 1.5 and as such it should not be used. That is the reason why we had to deprecated our org.openide.util.enum package. We are providing replacements of the original classes in form of factory methods org.openide.util.Enumerations.

Support for complicated listeners

Sep 2 '03; API spec. version: 4.12; affected top-level classes: org.openide.util.WeakListeners; made by: jtulach; issues: #35726
Improved support for hierarchic listeners (aka NamingListener vs. ObjectChangeListener from javax.naming.event package).

Global action context as Lookup

Aug 12 '03; API spec. version: 4.10; affected top-level classes: ContextGlobalProvider Utilities; made by: jtulach; issues: #34758
As part of the work on separation of openide.jar into smaller parts a new interface ContextGlobalProvider and new method in utilities Utilities.actionsGlobalContext() had to be added in order to separate the implementation of actions like CallbackSystemAction and NodeAction from their dependency on window system.

Old WeakListener replaced by WeakListeners class

Aug 12 '03; API spec. version: 4.10; affected top-level classes: org.openide.util.WeakListeners; made by: jtulach; issues: #34758

As part of the work on separation of openide.jar into smaller parts the WeakListener had to be deprecated as it referenced too many classes around and replaced by more general WeakListeners factory class that provides a generic create method and specialized factory methods just for JDK own interfaces.

Also few factory methods were spread into appropriate packages like FileUtil.weakFileChangeListener and NodeOp.weakNodeListener.

New method to find HelpCtx

Apr 2 '03; API spec. version: 4.3; affected top-level classes: HelpCtx; made by: jtulach; issues: #32143
A new method for finding HelpCtx (HelpCtx.findHelp(Object)) has been added to replace the old InstanceSupport.findHelp that has been separated out from the openide.jar.

Retrofit of interface Cancellable into RequestProcessor.Task

Mar 14 '03; API spec. version: 4.1; affected top-level classes: org.openide.util.RequestProcessor; made by: dsimonek
RequestProcessor.Task was made to implement util.Cancellable interface. No change of implementation at all, RP.Task already had method from interface implemented, this is just a logical retrofit.

Support for asynchronous init of UI components

Feb 5 '03; API spec. version: 3.36; affected top-level classes: AsyncGUIJob org.openide.util.Cancellable Utilities; made by: dsimonek; issues: #30604

Performance related API addition, allows clients to write asynchronous initialization of UI components easily by providing AsyncGUIJob implementation. Also introduced Cancellable ability. Utilities.attachInitJob couples init job with target UI component.

Improved method for topological sort

Jan 10 '03; API spec. version: 3.30; affected top-level classes: Utilities org.openide.util.TopologicalSortException; made by: jglick; issues: #27286
The method Utilities.topologicalSort was added. It should be faster and probably more robust than the older partialSort method, which required a Comparator; the new method requires a list of ordering constraints, which should be O(n + m) rather than O(n2) (where n is the number of nodes to sort and m the number of edges). If the graph is not a DAG a TopologicalSortException is thrown containing description of unsortable parts of the graph and the best partitial sort that fullfils as much of ordering constraints as possible. These information can be used for error reporting and recovery.

Utilities.toFile and toURL added

Dec 24 '02; API spec. version: 3.26; affected top-level classes: Utilities; made by: jglick; issues: #29711
Two new utility methods were added which permit easy interconversion between files and URLs using the file protocol. This task is easy and safe under JDK 1.4, yet JDK 1.3 lacks a single call to do these tasks which will handle unusual characters in file names, especially hash marks. The utility methods use the JDK 1.4 variants when possible, else use specially coded versions of the JDK 1.3 variants which handle hash marks.
Compatibility: Existing code which uses the JDK 1.3 method File.toURL should be examined, as it may be better to call Utilities.toURL. Similarly, code which gets the path from a URL and calls the File constructor may need to be changed to call Utilities.toFile. Such changes should improve robustness of code when used in strangely named directories.

Can load localized cached images

Dec 15 '02; API spec. version: 3.24; affected top-level classes: Utilities SystemAction; made by: jglick; issues: #22156
Added method Utilities.loadImage(String, boolean) which works like Utilities.loadImage(String) except that it will search for localized images. Also SystemAction.getIcon() will load a localized image now if there is one.

org.openide.util.Utilities.createProgressCursor added

Dec 2 '02; API spec. version: 3.23; affected top-level classes: Utilities; made by: dsimonek
Method java.awt.Cursor createProgressCursor(java.awt.Component comp) was added into Utilities class. Method creates mouse cursor suitable for components which are busy, but still reacts to the input events. (don't block UI).

Added interface HelpCtx.Provider

Nov 11 '02; API spec. version: 3.20; affected top-level classes: HelpCtx ServiceType SystemAction NewType PasteType; made by: pnejedly
An interface HelpCtx.Provider with one method getHelpCtx was added and the logic in HelpCtx.findHelp and InstanceSupport.findHelp was extended to take this interface into accout. Various classes with existing getHelpCtx method were retrofitted to implement this interface.

ErrorManager.isNotifiable added

Nov 3 '02; API spec. version: 3.18; affected top-level classes: ErrorManager; made by: jglick; issues: #24056
The method ErrorManager.isNotifiable was added to capture the fact that an error manager implementation might be more aggressive about displaying stack traces than log messages.
Compatibility: Existing code which assumes (incorrectly) that isLoggable can be used for this purpose, or which calls notify at a low level such as INFORMATIONAL without first checking isNotifiable for efficiency, should be revised.

Utilities.activeReferenceQueue()

Oct 7 '02; API spec. version: 3.11; affected top-level classes: Utilities; made by: jtulach; issues: #27238
Active java.util.ref.ReferenceQueue that polls for all enqued instances (that should implement Runnable) and invokes their run method to do actual cleanup.

Deprecation of parts of MouseUtils.PopupMenuAdapter

Aug 6 '02; API spec. version: 3.4; made by: dsimonek
Constructor MouseUtils.PopupMenuAdapter(int) and public static field DEFAULT_THESHOLD are now obsoleted, performs no action. PopupMenuAdapter now delegates to isPopupTrigger crossplatform call, should be constructed via default constructor.

Added RequestProcessor.getDefault(), deprecated static methods in RequestProcessor

Apr 15 '02; API spec. version: 2.12; affected top-level classes: org.openide.util.RequestProcessor; made by: pnejedly
Sharing of singlethreaded RequestProcessor.DEFAULT through the static methods is inherently deadlock-prone, so the methods are deprecated and their usage should phase out in the favor of using private RequestProcessors or the shared multithreaded instance available through the new static method RequestProcessor.getDefault().

Added helper methods to aid module developers to write code which works correctly with multiple monitors

Feb 26 '02; API spec. version: 2.5; affected top-level classes: Utilities; made by: ttran; issues: #20882
The added methods are

public static Rectangle getUsableScreenBounds();
public static Rectangle getUsableScreenBounds(GraphicsConfiguration gconf);
public static Rectangle findCenterBounds(Dimension componentSize);
One should use these methods instead of calling Toolkit.getScreenSize(). For the same reason Utilities.getScreenSize() is now deprecated.

Added accessibility method ErrorManager.getDefault () that always returns non-null values

Jan 17 '02; API spec. version: 2.1; affected top-level classes: ErrorManager; made by: jtulach; issues: #16854

This method allows independent libraries (nodes, filesystems, utilities) to use the ErrorManager without testing if it is really present. Just call ErrorManager.getDefault () and you can be sure that a valid instance will be returned.

Also TopManager.getErrorManager is no longer useful (see change) and is now deprecated. It is also not abstract as it just delegates. notifyException is similarly deprecated.

Permit privileged access to mutexes to avoid inner classes

Jun 27 '01; API spec. version: 1.17; affected top-level classes: org.openide.util.Mutex
Added a new inner class and a constructor that takes an instance of that inner class as a parameter. The inner class is Privileged. Through its public methods one can enter internal states of the Mutex to which it was passed.

More flexibility in controlling running of tasks

Apr 27 '01; API spec. version: 1.5; affected top-level classes: org.openide.util.Task
Task has new protected constructor for subclasses and methods notifyRunning () and also non-final version of waitFinished ().

Icon & image cache manager added

Mar 9 '01; affected top-level classes: Utilities
Loading icons and images can be done through Utilities.loadImage() that uses cache to avoid duplicate loading of images. mergeImages uses the cache, too, for the results of merge.

Special exception thrown to request interaction with user

Mar 5 '01; affected top-level classes: UserQuestionException
Added the first revision. This exception is thrown when a process is about to perform some action that requires user confirmation.

Support for merging icons added

Jan 25 '01; affected top-level classes: Utilities
Added method mergeImages(Image image1, Image image2, int x, int y) for merging images.

Can get a list of localizing suffixes

Jan 1 '01; affected top-level classes: org.openide.util.NbBundle; made by: jglick
getLocalizingSuffixes added.

Updated DEC -> Compaq OS names

Dec 15 '00; affected top-level classes: Utilities
Operating system OS_DEC changed to OS_TRU64, and added OS_VMS.

ErrorManager.isLoggable added

Dec 2 '00; affected top-level classes: ErrorManager
isLoggable(int severity) added to ErrorManager.

ServiceType.createClone added

Nov 30 '00; affected top-level classes: ServiceType
public final ServiceType createClone() added.
Compatibility: Subclasses are encouraged to implement Cloneable.

Can find localized variants of extensionless resources

Oct 6 '00; affected top-level classes: org.openide.util.NbBundle; made by: jglick
getLocalizedFile now accepts null extensions to suppress the addition of a dot to the resource name.

Logging and hierarchy support added to ErrorManager

Aug 18 '00; affected top-level classes: ErrorManager
getInstance(String name), log(int severity, String s), and log(String s) added to ErrorManager.

Proper break iterators used when wrapping text strings

Aug 11 '00; affected top-level classes: Utilities
Added method wrapString which uses BreakIterator instead of a flag and a heuristic solution. wrapString(String,int,boolean,boolean) deprecated.
Compatibility: Deprecated version first removed, later re-added with deprecation in the trunk.

Added search for branded variants as part of locale lookup

Jul 20 '00; affected top-level classes: org.openide.util.NbBundle; made by: jglick
Added methods getBranding and setBranding. Normally these should only be called by the core implementation during startup, not module authors. All methods to look up localized objects may now also search for branded variants, if applicable.

Classloader finder for NbBundle is obsolete

Apr 11 '00; affected top-level classes: org.openide.util.NbBundle
NbBundle.ClassLoaderFinder and NbBundle.setClassLoaderFinder have been deprecated; they were quite obsolete.
Compatibility: First removed, later re-added but deprecated in trunk and boston. No one outside of NbBundle and the core implementation should have been using these classes to begin with.

SafeException is a FoldingIOException

Mar 9 '00; affected top-level classes: org.openide.util.io.SafeException
Now extends FoldingIOException, meaning that it should delegate the detail message, etc. to the original.

XML API

Refactored XML methods from various modules to be added to XMLUtil. Seven new methods added.

Apr 7 '10; API spec. version: 8.4; affected top-level classes: org.openide.xml.XMLUtil; made by: mvfranz; issues: #136595

Refactored XML related methods into XMLUtil.

Added XMLUtil.validate

Jul 11 '08; API spec. version: 7.17; affected top-level classes: org.openide.xml.XMLUtil; made by: jglick; issues: #42686

Added a new method to validate XML documents against schemas.

XML attribute and hexadecimal utilities modified

Oct 18 '01; API spec. version: 1.40; affected top-level classes: org.openide.xml.XMLUtil; issues: #16629
toAttribute(String, char, boolean) method replaced by toAttributeValue(String) and toContent(String, boolean) method replaced by toElementContent(String). These new simplified signatures and particular semantics should cover 99% usage of previous ones. See the original additions.
Compatibility: The original versions of these methods were not in any public release.

XML attribute and hexadecimal utilities added

Aug 8 '01; API spec. version: 1.29; affected top-level classes: org.openide.xml.XMLUtil
toAttribute(String, char, boolean), toContent(String, boolean), toHex(byte[], int, int) and fromHex(char[], int, int) methods added.

Independent XML API created

Mar 3 '01; affected top-level classes: org.openide.xml.XMLUtil org.openide.xml.EntityCatalog; affected packages: org.openide.xml; made by: pkuzel
XMLUtil utility class introduced. The class provides set of static methods useful for XML processing. EntityCatalog class introduced. It provides access to entity mapping registrations provided by installed modules.

Moved XML static methods into separate inner class

Feb 16 '01; affected top-level classes: org.openide.xml.XMLUtil; made by: pkuzel

Compatibility: XMLDataObject.Util itself deprecated on Mar 3 '01 in favor of XMLUtil .

Updated DOM to level 2 and added document writability

Jan 26 '01; affected top-level classes: org.openide.xml.XMLUtil; made by: pkuzel

Compatibility: Any code implementing DOM interfaces could be broken by the level 2 interfaces. Clients of the DOM API should be unaffected.

Can register entity resolvers

Dec 20 '00; affected top-level classes: org.openide.xml.EntityCatalog
addEntityResolver and removeEntityResolver added. These methods allow a user to develop own implementation of functionality similar to registerCatalogEntry. E.g. a user can register EntityResolver that reads data from persistent catalog avoiding bunch of calls to the register method in module restore code.
Compatibility: Subsequently deprecated on Mar 3 '01 by EntityCatalog .