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.
release41
branch was made on Apr 03 '05 for use in the NetBeans 4.1 release.
Specification versions: 6.0 begins after this point.release40
branch was made on Nov 01 '04 for use in the NetBeans 4.0 release.
Specification versions: 5.0 begins after this point.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.
AbstractNode.cookieSet
protected, not public
BeanChildren
changed superclass
@BeanInfoSearchPath
annotation
@PropertyEditorRegistration
and @PropertyEditorSearchPath
annotations
ChildFactory.createKeys
better supports incremental display
setChildren()
in Node
Index.Support.showIndexedCustomizer
AbstractNode.cookieSet
protected, not public
Children.Keys.createNodes
can be null
Index.KeyChildren.createIndex
protected
BeanChildren
changed superclass
Index.KeyChildren
NodeOp.setDefaultActions
removed
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: org.openide.nodes > 1.20
@BeanInfoSearchPath
annotation
@PropertyEditorRegistration
and @PropertyEditorSearchPath
annotations
ChildFactory.createKeys
better supports incremental display
setChildren()
in Node
Index.Support.showIndexedCustomizer
org.openide.actions.AbstractCompileAction
org.openide.nodes.AbstractNode
AbstractNode.cookieSet
protected, not public
org.openide.actions.AddWatchAction
org.openide.cookies.ArgumentsCookie
org.openide.nodes.BeanChildren
BeanChildren
changed superclass
org.openide.nodes.BeanInfoSearchPath
@BeanInfoSearchPath
annotation
org.openide.nodes.BeanNode
org.openide.actions.BuildAction
org.openide.actions.BuildAllAction
org.openide.actions.BuildProjectAction
org.openide.nodes.ChildFactory
ChildFactory.createKeys
better supports incremental display
org.openide.nodes.Children
Children.Keys.createNodes
can be null
org.openide.explorer.propertysheet.editors.ChoicePropertyEditor
org.openide.actions.CleanAction
org.openide.actions.CleanAllAction
org.openide.actions.CompileAction
org.openide.actions.CompileAllAction
org.openide.actions.CompileProjectAction
org.openide.cookies.CompilerCookie
org.openide.loaders.CompilerSupport
org.openide.options.ControlPanel
org.openide.nodes.CookieSet
org.openide.loaders.DataObjectFilter
org.openide.cookies.DebuggerCookie
org.openide.actions.DebugProjectAction
org.openide.nodes.DefaultHandle
org.openide.nodes.DestroyableNodesFactory
org.openide.DialogDisplayer
org.openide.explorer.propertysheet.editors.DirectoryOnlyEditor
org.openide.cookies.ElementCookie
org.openide.explorer.propertysheet.editors.ElementFormatEditor
org.openide.cookies.ExecCookie
org.openide.loaders.ExecSupport
org.openide.actions.ExecuteAction
org.openide.actions.ExecuteProjectAction
org.openide.loaders.ExecutionSupport
org.openide.loaders.ExtensionListEditor
org.openide.explorer.propertysheet.editors.ExternalCompiler
org.openide.explorer.propertysheet.editors.FileEditor
org.openide.explorer.propertysheet.editors.FileOnlyEditor
org.openide.filesystems.FileUtil
org.openide.nodes.FilterNode
org.openide.actions.FinishDebuggerAction
org.openide.actions.GoAction
org.openide.actions.GoToCursorAction
org.openide.actions.HelpAction
org.openide.awt.HtmlBrowser
org.openide.explorer.propertysheet.editors.IconEditor
org.openide.explorer.propertysheet.editors.IdentifierArrayEditor
org.openide.modules.IllegalModuleException
org.openide.nodes.Index
Index.Support.showIndexedCustomizer
Index.KeyChildren.createIndex
protected
Index.KeyChildren
org.openide.nodes.IndexedCustomizer
Index.Support.showIndexedCustomizer
org.openide.nodes.IndexedNode
org.openide.explorer.propertysheet.InplaceEditor
org.openide.windows.InputOutput
org.openide.windows.IOProvider
org.openide.LifecycleManager
org.openide.modules.ManifestSection
org.openide.explorer.propertysheet.editors.MethodParameterArrayEditor
org.openide.explorer.propertysheet.editors.ModifierEditor
org.openide.modules.ModuleDescription
org.openide.nodes.Node
setChildren()
in Node
org.openide.nodes.NodeMemberEvent
org.openide.nodes.NodeOp
@BeanInfoSearchPath
annotation
@PropertyEditorRegistration
and @PropertyEditorSearchPath
annotations
NodeOp.setDefaultActions
removed
org.openide.nodes.NodeOperation
org.openide.nodes.NodeReorderEvent
org.openide.actions.OpenProjectAction
org.openide.windows.OutputEvent
org.openide.windows.OutputListener
org.openide.windows.OutputWriter
org.openide.Places
org.openide.cookies.ProjectCookie
org.openide.util.actions.ProjectSensitiveAction
org.openide.nodes.PropertyEditorRegistration
org.openide.nodes.PropertyEditorSearchPath
org.openide.explorer.propertysheet.PropertyEnv
org.openide.explorer.propertysheet.PropertySheet
org.openide.explorer.propertysheet.PropertySheetSettings
org.openide.loaders.RepositoryNodeFactory
org.openide.actions.SaveProjectAction
org.openide.cookies.SourceCookie
org.openide.actions.StartDebuggerAction
org.openide.awt.StatusDisplayer
org.openide.actions.StepOutAction
org.openide.explorer.propertysheet.editors.StringArrayCustomEditor
org.openide.explorer.propertysheet.editors.StringArrayCustomizable
org.openide.explorer.propertysheet.editors.StringArrayEditor
org.openide.actions.ToggleBreakpointAction
org.openide.TopManager
org.openide.actions.TraceIntoAction
org.openide.actions.TraceOverAction
org.openide.explorer.propertysheet.editors.TypeEditor
DestroyableNodesFactory
; made by: phejl; issues:
#257941
DestroyableNodesFactory is an abstract class which adds destroyNodes methods to ChildFactory.Detachable.
@BeanInfoSearchPath
annotation
NodeOp
BeanInfoSearchPath
; made by: jhorvath; issues:
#210323
Adding @BeanInfoSearchPath
annotation
to allow convenient way of registering BeanInfo search path.
@PropertyEditorRegistration
and @PropertyEditorSearchPath
annotations
NodeOp
PropertyEditorRegistration
PropertyEditorSearchPath
; made by: jhorvath; issues:
#218300
Adding @PropertyEditorRegistration
and @PropertyEditorSearchPath
annotations
to allow convenient way of registering property editors.
ChildFactory.createKeys
better supports incremental display
ChildFactory
; made by: jglick; issues:
#206556
An implementation of ChildFactory.createKeys
may now
use List.add
a number of times and return true at the
end, while still displaying keys incrementally.
Existing factories which returned false from createKeys
may continue to do so with the same behavior, but should consider
just producing all keys within the body of the loop instead.
NodeOperation
; made by: tpavek; issues:
#201223
NodeOperation.showCustomEditorDialog
method that shows a modal dialog for given property
just like when the [...] button in property sheet is pressed.
Node
; made by: mentlicher; issues:
#190115
Children have a new createLazy(Callable<Children> factory) method, that can be used to provide a lazy children implementation. Callable.call() is called just when node's children are really needed.
IndexedNode
; made by: jtulach; issues:
#163258
IndexedNode has
new constructor that accepts Lookup
.
NodeOp
; made by: jtulach; issues:
#161286
NodeOp.factory is new layer based factory method to allow declarative definition of a root node into the UI.
ChildFactory
; made by: tboudreau; issues:
#153347
ChildFactory.Detachable is an abstract class which adds addNotify() and removeNotify() methods to ChildFactory. addNotify() is called immediately before the first call to createKeys() after creation or a call to removeNotify().
Children
NodeMemberEvent
NodeReorderEvent
; made by: t_h; issues:
#121913
Children.Keys(boolean lazy)
.
Children.getNodesCount(boolean optimalResult)
can be
used instead of Children.getNodes(boolean optimalResult)
for children "initialization". While keeping same behavior as
Children.getNodes(boolean optimalResult)
for "default"
(non-lazy) implementation it allows full initialization without need to
create all nodes. Children.snapshot()
creates an immutable snapshot representing
the current view of the nodes in this children object. Such snapshots are available in
NodeMemberEvent and
NodeReorderEvent
via getSnapshot()
and provide information about state of nodes
in time when events were emited.
Children
; made by: t_h; issues:
#121913
ChildFactory can also be used to implement synchronous children,
by setting the asynchronous
parameter passed to
Children.create()
to false. This could replace most
common usages of Children.Keys, and make it easy to switch to
asynchronous child computation if that is determined to be
necessary for performance reasons.
CookieSet
; made by: jtulach; issues:
#62707
getLookup
to
allow queries for of its content.
Also there is a new method
assign(clazz, instances) that allows to add/remove
plain old java objects to the CookieSet
.
BeanNode
; made by: pnejedly; issues:
#67098
BeanNode
, allowing
subclasses to pass context Lookup.
AbstractNode
; made by: pnejedly; issues:
#53461
AbstractNode
to use PNG files
as icons. Adding new final method
setIconBaseWithExtension(String baseExt)
which replaces the original method for manipulating icon base,
setIconBase(String)
.
The original (now deprecated) method stil works the same way,
using ".gif"
as extension
The original method setIconBase(String)
delegates
to the new one, using the default extension.
FilterNode
; made by: pnejedly; issues:
#31006
getValue(String)
and setValue(String, Object)
calls the to the original node. Also, FilterNode now exports two
new constants, FilterNode.DELEGATE_SET_VALUE
and
FilterNode.DELEGATE_GET_VALUE
, which can be used to control
the delegation of the above mentioned methods.
Node
org.openide.explorer.propertysheet.InplaceEditor
org.openide.explorer.propertysheet.PropertyEnv
org.openide.explorer.propertysheet.PropertySheet
org.openide.explorer.propertysheet.PropertySheetSettings
; made by: tboudreau; issues:
#29447
PropertySheetSettings is an old SystemOption subclass that offers settings that affect the display of the property sheet. These settings are irrelevant to the new property sheet.
In order to provide some performance optimizations, it was necessary to un-final the class PropertyEnv. However, it should be treated as final outside the package - there should never be a need to subclass it. A note has been added to its javadoc to this effect.
A non-normative hint may now be supplied by instances of Node.PropertySet to return a localized display name for a tab which the property sheet should use for displaying that and any other property sets which share the name: "tabName".
FilterNode
; made by: jtulach; issues:
#32470
NodeOp
; made by: pzavadsky; issues:
#31476
NodeOp.findActions(Nodep[])
is changed
the way it returns an empty array instead of null (for the cases
there are no actions found). Also javadoc is refined in that sense.
Node
; made by: dstrupl
Node
; made by: jtulach; issues:
#26790
setChildren()
in Node
Node
; made by: phrebejk
Node
has new method setChildren(Children)
which allows
to change the Children
of given Node
. Node also fires
new PropertyChangeEvent(PROP_LEAF)
whenever changing
children from non-LEAF
to LEAF
and vice-versa.
Children
; made by: pnejedly
CookieSet
; made by: dstrupl; issues:
#15373
FilterNode
; made by: phrebejk; issues:
#12048
Method protected final void changeOriginal( Node original, boolean
)
and protected final void changeOriginal( Node original
added
to the class FilterNode
and FilterNode.Children
.
The methods allow to change the Node resp. Children the FilterNode resp.
FilterNode.Children delegates to. For more detailed information please see the
Javadoc of the methods.
Index.Support.showIndexedCustomizer
Index
IndexedCustomizer
; made by: jglick; issues:
#9323
Index.Support.showIndexedCustomizer(Index)
was added to provide a simpler way of displaying a dialog to reorder a
set of nodes based on an index cookie. Unlike direct use of the
IndexedCustomizer
dialog, it interacts smoothly with the
IDE's window system.
IndexedCustomizer
directly (as a dialog) should
consider using the new method instead.
Node
; made by: phrebejk; issues:
#15495
Method protected final boolean hasPropertyChangeListeners()
added
to the class Node
. Method returns true if at least one PropertyChangeListener
is attached to the Node. At the same time changes were made to optimize the number
of attached listeners so calling this method should have some information value.
AbstractNode.cookieSet
protected, not public
AbstractNode
; made by: jglick
getCookieSet
now protected, not public. Logically it should
never have been public, since each object is responsible for providing its
own set of cookies as it sees fit, and making it possible for anyone to
retrieve and modify its cookie set without its explicit permission
violates this modularity. Also setCookieSet
deprecated.
MultiDataObject
.
Children.Keys.createNodes
can be null
Children
; made by: jtulach
createNodes(Object key)
can now return null
if
the key should have no nodes to represent it. The purpose is to reduce the
number of useless created objects.
Index.KeyChildren.createIndex
protected
Index
createIndex
made protected.
Index
protected Index.KeyChildren.lock()
which returns an object that is
used as a synchronization lock when working the the list object provided
in constructor.
Node
; made by: jglick
Node.PropertySet
and Node.Property
may now have
the FeatureDescriptor
property helpID
set on
them (to a String
) help ID) which may be used in the property
sheet.
NodeOp
findContextMenuImpl
. In case of constructing
menu from node which for some reason has more than one occurrence of the
same SystemAction
no menu item was created. Now one menu item
will be created for such an action, where the first occurrence is taken
into account.
BeanChildren
changed superclass
BeanChildren
Children.Map
to
Children.Keys
.
initMap
put
putAll
remove
removeAll
BeanChildren
(it is rarely
used at all).
Index.KeyChildren
Index
java.util.List
. Automatically provide
implementation of Index
to reorder content of the list.
NodeOp.setDefaultActions
removed
NodeOp
setDefaultActions
deprecated.
boston
. Only technically incompatible: could always only be
called once, otherwise a SecurityException
would be thrown.
DefaultHandle
; made by: jglick
DefaultHandle
rewritten. Now stores just handle of direct
parent, so that intervening nodes have the opportunity to supply their own
handles.
org.openide.actions.AbstractCompileAction
org.openide.actions.BuildAction
org.openide.actions.BuildAllAction
org.openide.actions.CleanAction
org.openide.actions.CleanAllAction
org.openide.actions.CompileAction
org.openide.actions.CompileAllAction
org.openide.actions.ExecuteAction
org.openide.cookies.ArgumentsCookie
org.openide.cookies.CompilerCookie
org.openide.cookies.ExecCookie
org.openide.filesystems.FileUtil
org.openide.loaders.CompilerSupport
org.openide.loaders.ExecutionSupport
org.openide.windows.IOProvider
org.openide.windows.InputOutput
org.openide.windows.OutputEvent
org.openide.windows.OutputListener
org.openide.windows.OutputWriter
; affected packages: org.openide.compiler
org.openide.execution
; made by: jglick; issues:
#19443
Three sections of the Open APIs were split into new autoload modules.
The module org.openide.compiler
(version 1.0) contains
the Compiler API and some other classes directly related to it.
The module org.openide.execution
(version 1.0) contains
the Execution API and some other classes directly related to it.
The module org.openide.io
(version 1.0) contains
InputOutput
and related classes (formerly part of the
Window System API, and still physically in the
org.openide.windows
package).
New modules wishing to use these APIs must declare regular module dependencies on them. Future changes in these APIs will be documented separately.
Furthermore, modules wishing to use certain services must
OpenIDE-Module-Require
them if appropriate:
org.openide.compiler.CompilationEngine
, in order to
call CompilationEngine.getDefault()
, or safely use
AbstractCompileAction
or one of its subclasses, or
call CompilerJob.start()
, or use
BeanInfo
s for Compiler API classes, etc.
org.openide.execution.ExecutionEngine
, in order to
call ExecutionEngine.getDefault()
, or safely use
ExecuteAction
, or call
Executor.execute(...)
, or use BeanInfo
s
for Execution API classes, etc.
org.openide.windows.IOProvider
, in order to call
IOProvider.getDefault()
.
Other minor changes:
Registration of URL stream handler factories using
NbfsStreamHandlerFactory.register(...)
is deprecated.
Simply create an instance of URLStreamHandlerFactory
and add it to Lookup instead.
The method FileUtil.nbfsURLStreamHandler
was added,
but is not intended for use by modules.
All uses of ExecInfo
are deprecated as they abuse the
distinction between Filesystems and the user classpath. Use and
override only Executor.execute(DataObject)
. Similarly,
ThreadExecutor
is deprecated for the time being
because it suffers from similar problems.
Direct use of NbfsURLConnection
is deprecated in favor
of the more general URLMapper
from the Filesystems
API.
Package dependencies on
org.netbeans.lib.terminalemulator
must be replaced
with module dependencies on a new autoload module
org.netbeans.lib.terminalemulator
(version 1.0).
Several static convenience methods have been added to
AbstractCompileAction
. Of most interest is
prepareJobFor
. Module code should no longer assume
that DataFolder
has a CompilerCookie
which recursively compiles the folder and subfolders (according to
depth); while it is still true, for reasons of compatibility, new
code should use prepareJobFor
to create a compiler job
from a folder.
Module authors using the now-separated APIs will need to adjust their compilation classpaths to include the new JAR files. Modules wishing to use recent APIs and declaring a current openide specification version dependency will need to explicitly declare dependencies on these new APIs if there are any.
For compatibility, modules with no declared Open APIs dependency, or declared on a version prior to 3.17, will have their dependencies automatically refined as if to include the declarations:
OpenIDE-Module-Module-Dependencies: org.openide.compiler > 1.0, org.openide.execution > 1.0, org.openide.io > 1.0 OpenIDE-Module-Requires: org.openide.compiler.CompilationEngine, org.openide.execution.ExecutionEngine, org.openide.windows.IOProvider
And any package dependencies from old modules on
org.netbeans.lib.terminalemulator
will be converted to
module dependencies.
org.openide.DialogDisplayer
org.openide.LifecycleManager
org.openide.Places
org.openide.TopManager
org.openide.actions.AddWatchAction
org.openide.actions.BuildProjectAction
org.openide.actions.CompileProjectAction
org.openide.actions.DebugProjectAction
org.openide.actions.ExecuteProjectAction
org.openide.actions.FinishDebuggerAction
org.openide.actions.GoAction
org.openide.actions.GoToCursorAction
org.openide.actions.HelpAction
org.openide.actions.OpenProjectAction
org.openide.actions.SaveProjectAction
org.openide.actions.StartDebuggerAction
org.openide.actions.StepOutAction
org.openide.actions.ToggleBreakpointAction
org.openide.actions.TraceIntoAction
org.openide.actions.TraceOverAction
org.openide.awt.HtmlBrowser
org.openide.awt.StatusDisplayer
org.openide.cookies.DebuggerCookie
org.openide.cookies.ElementCookie
org.openide.cookies.ProjectCookie
org.openide.cookies.SourceCookie
org.openide.explorer.propertysheet.editors.ChoicePropertyEditor
org.openide.explorer.propertysheet.editors.DirectoryOnlyEditor
org.openide.explorer.propertysheet.editors.ElementFormatEditor
org.openide.explorer.propertysheet.editors.ExternalCompiler
org.openide.explorer.propertysheet.editors.FileEditor
org.openide.explorer.propertysheet.editors.FileOnlyEditor
org.openide.explorer.propertysheet.editors.IconEditor
org.openide.explorer.propertysheet.editors.IdentifierArrayEditor
org.openide.explorer.propertysheet.editors.MethodParameterArrayEditor
org.openide.explorer.propertysheet.editors.ModifierEditor
org.openide.explorer.propertysheet.editors.StringArrayCustomEditor
org.openide.explorer.propertysheet.editors.StringArrayCustomizable
org.openide.explorer.propertysheet.editors.StringArrayEditor
org.openide.explorer.propertysheet.editors.TypeEditor
org.openide.loaders.DataObjectFilter
org.openide.loaders.ExecSupport
org.openide.loaders.ExecutionSupport
org.openide.loaders.ExtensionListEditor
org.openide.loaders.RepositoryNodeFactory
org.openide.modules.IllegalModuleException
org.openide.modules.ManifestSection
org.openide.modules.ModuleDescription
org.openide.nodes.NodeOperation
org.openide.options.ControlPanel
org.openide.util.actions.ProjectSensitiveAction
org.openide.windows.IOProvider
; affected packages: org.openide.debugger
org.openide.src
org.openide.src.nodes
; made by: jglick; issues:
#19443
#20898
Many classes were moved to a separate module, openide-deprecated.jar, not available to modules by default. Uses of these classes in modules should be cleaned up whenever possible.
Additionally, the entire contents of org.openide.src.*
and
org.openide.src.nodes.*
, as well as
org.openide.cookies.SourceCookie
and some associated
property editors, were moved to a separate module.
The most common apparent symptom for module authors will be the absence
of TopManager
. Most methods in this class have been
replaced by newer utility classes in a straightforward manner. See the
Upgrade Guide.
The deprecated classes continue to be available in the module
org.openide.deprecated
which you may depend on it you
cannot remove uses of the deprecated APIs. In order for
TopManager.getDefault()
to work, you must also require the
token org.openide.TopManager
, which is provided by an
unspecified module. The deprecated API module and its implementation
module are autoloads, meaning they will not be loaded unless some
module still requires them.
Similarly, the Java Hierarchy API was moved to the module
org.openide.src
which you should depend on in order to use
this API.
For compatibility, the above three dependencies are added to your module automatically in case it either requests no specific API version at all, or requests an API version prior to 3.14. Modules requesting APIs 3.14 or higher must declare these dependencies explicitly if they in fact need them.