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.
ProxyLookup
computes results lazily
Lookup
ProxyLookup
computes results lazily
org.openide.util.Lookup.paths
property
ServiceProvider
annotation
Lookups.forPath
Lookup
Lookups.exclude
added to simplify writing of lookups that filter content of other lookups
lookupItem()
method in Lookups
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
ProxyLookup
computes results lazily
org.openide.util.Lookup.paths
property
ServiceProvider
annotation
Lookups.forPath
Lookup
Lookups.exclude
added to simplify writing of lookups that filter content of other lookups
lookupItem()
method in Lookups
org.openide.util.lookup.AbstractLookup
org.openide.util.lookup.InstanceContent
org.openide.filesystems.annotations.LayerGeneratingProcessor
org.openide.util.Lookup
org.openide.util.Lookup.paths
property
Lookup
org.openide.util.LookupEvent
org.openide.util.LookupListener
org.openide.util.lookup.Lookups
Lookups.forPath
Lookups.exclude
added to simplify writing of lookups that filter content of other lookups
lookupItem()
method in Lookups
org.openide.util.lookup.NamedServiceDefinition
org.openide.util.lookup.ProxyLookup
org.openide.util.lookup.ServiceProvider
ServiceProvider
annotation
org.openide.util.lookup.ServiceProviders
ServiceProvider
annotation
ProxyLookup
; made by: tboudreau; issues: NETBEANS-4699
One of the most common usages of ProxyLookup
is to dynamically change the set of lookups being delegated to. However the
setLookups(...)
method is protected
. To avoid the need to subclass
ProxyLookup
this change introduces
ProxyLookup.Controller
that gives the creator of ProxyLookup
a way to call
setLookups(...)
without exposing the method to others having just a reference to
the ProxyLookup.
org.openide.filesystems.annotations.LayerGeneratingProcessor
; made by: sdedic; issues: NETBEANS-3250
Typically AbstractServiceProviderProcessor
subclasses declare some
SourceVersion
support,
but as new JDKs are released, the declaration becomes obsolete and produces spurious warnings. The processors
are typically not affected by newer Java language features.
This change changes the default behaviour if NO
@SupportedSourceVersion
annotation is present on subclass. From 8.40, the Processor will report
@SourceVersion.latest()
.
Lookups
; made by: jtulach; issues:
#247930
One can use Lookups.execute(yourLookup, yourRunnable) to temporarily influence return value from Lookup.getDefault().
NamedServiceDefinition
; made by: jtulach; issues:
#209780
Meta annotation NamedServiceDefinition for those who define their own annotations that register something into Lookups.forPath registration area.
ProxyLookup
computes results lazily
ProxyLookup.lookupAll().iterator() is now incremental. E.g. you can use traverse part of the results without waiting for or creating all of them:
for (URLStreamHandlerFactory first : Lookup.getDefault().lookupAll(URLStreamHandlerFactory.class)) { return first; }
Calling
ProxyLookup.lookupAll() and other methods that compute
aggregate results delays computation of the result. This
may affect code which called
Lookup.Result.allItems
,
allInstances
or allClasses
and relied
on side effect of such call. In case you want to trigger the
computation call some method on the returned
Collection
(other than iterator()
) like size()
or isEmpty
.
Adding SPI interface package for those who implement the NetBeans platform. This package is not shown in Javadoc as it does not form a generally available public API.
Lookup
AbstractLookup
ProxyLookup
Lookups
; made by: jtulach; issues:
#170056
Lookup and its associated interfaces are now available as a separate module.
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.
org.openide.util.Lookup.paths
property
Lookup
; made by: jtulach; issues:
#166782
Better way to integrate Lookup.getDefault() and system filesystem.
ServiceProvider
annotation
ServiceProvider
ServiceProviders
; made by: jglick; issues:
#150447
Added annotations ServiceProvider
and ServiceProviders
to simplify registration of global singleton services.
Modules registering services using META-INF/services
files in the source tree are encouraged to switch to the annotation.
AbstractLookup
ProxyLookup
InstanceContent
; made by: jtulach; issues:
#134297
All modification methods in AbstractLookup
and ProxyLookup
were extended to accept an
Executor.
If not null, it is used to dispatch events to listeners sometime
"later". Also the AbstractLookup.Content
and InstanceContent
constructors
have been extended to accept such Executor
s.
Lookups.forPath
Lookups
; made by: jtulach; issues:
#98426
New method Lookups.forPath(String) has been added to replace now deprecated FolderLookup and allow modules who wants to read settings from layers to do so with a simpler code, without dependency on DataSystems API.
Lookup
Lookup
; made by: jglick; issues:
#73848
Two methods, lookupResult
and lookupAll
, were
added to Lookup
to encapsulate the most common usage patterns
with less typing, and more importantly avoiding the need to explicitly
make a Lookup.Template
object.
Could conceivably conflict with existing subclass method with same signature with different semantics or return type.
ProxyLookup
AbstractLookup
; made by: jtulach; issues:
#68031
Collection
s.
So do not try to modify them. It was always documented that the
results, are immutable and also it was never said that a change is
delivered when there is no change in the result, so this is considered
compatible change, even it is know that at least one piece of code
in NetBeans relied on this behaviour.
Lookups.exclude
added to simplify writing of lookups that filter content of other lookups
Lookups
; made by: jtulach; issues:
#53058
New method that takes lookup and set of classes and return new lookup which contains everything from the original one except instances of the specified classes has been added.
Lookups
; made by: dkonecny; issues:
#41606
lookupItem()
method in Lookups
Lookups
; made by: vstejskal
Lookups
; made by: dstrupl; issues:
#29126
AbstractLookup
ProxyLookup
; made by: jglick; issues:
#20190
AbstractLookup
as well as
FolderLookup
's lookup. ProxyLookup
has a
protected subclass constructor permitting subclasses to be serializable.
InstanceCookie
between sessions may not work
correctly with the cache. This is probably very rare.
Lookups
; made by: dstrupl; issues:
#27425
Lookup.getDefault()
can be specified
by a standard JDK registration mechanism, using JARs'
META-INF/services
directory. This is suitable for services that do not change,
do not require user modification and that need to be ready
soon during initialization of the system.
Lookups
; made by: dstrupl; issues:
#20550
public static Lookup singleton(Object objectToLookup); public static Lookup fixed(Object[] objectsToLookup); public static Lookup fixed(Object[] keys, InstanceContent.Convertor convertor);The methods return an instance of simple lookup implementation that holds the objects passed a parameter.
AbstractLookup
ProxyLookup
; made by: jtulach
AbstractLookup.Content
made public to allow its usage
for objects that do not subclass AbstractLookup. ProxyLookup.beforeLookup
added so subclasses can update themselves (call setLookups (...)) before the actual lookup is
performed.
ProxyLookup
ProxyLookup.setLookups
made protected instead of public so
nobody can misuse the method except the creator of the object and
ProxyLookup.getLookups
added. ProxyLookup
made
non final.
AbstractLookup
ProxyLookup
; affected packages: org.openide.util.lookup
; made by: jtulach
org.openide.util.lookup
created, should hold SPI
interfaces for lookup. Initially filled with AbstractLookup
which introduces AbstractLookup.Pair
and with
ProxyLookup
.
Lookup
; made by: jtulach
Lookup
enhanced. Interface Lookup.Item
and
additional methods to access it also added.
Lookup
LookupEvent
LookupListener
; made by: jtulach
Lookup
introduced. There is a
org.openide.util.Lookup
with bunch of inner classes and
org.openide.util.LookupListener
and
org.openide.util.LookupEvent
.
AbstractLookup
InstanceContent
; made by: jtulach
AbstractLookup.Content
which can be passed to an
abstract lookup in its constructor and used to control the contents
easily. Also InstanceLookup
provides the common easy
implementation.