Class Lookup

  extended byorg.openide.util.Lookup
Direct Known Subclasses:
AbstractLookup, ProxyLookup

public abstract class Lookup
extends Object

A general registry permitting clients to find instances of services (implementation of a given interface). This class is inspired by the Jini registration and lookup mechanism. The difference is that the methods do not throw checked exceptions (as they usually work only locally and not over the network) and that the Lookup API concentrates on the lookup, not on the registration (although getDefault() is strongly encouraged to support Lookups.metaInfServices(java.lang.ClassLoader) for registration in addition to whatever else it decides to support).

For a general talk about the idea behind the lookup pattern please see

See Also:
AbstractLookup, Lookups, LookupListener, LookupEvent

Nested Class Summary
static class Lookup.Item
          A single item in a lookup result.
static interface Lookup.Provider
          Objects implementing interface Lookup.Provider are capable of and willing to provide a lookup (usually bound to the object).
static class Lookup.Result
          Result of a lookup request.
static class Lookup.Template
          Template defining a pattern to filter instances by.
Field Summary
static Lookup EMPTY
          A dummy lookup that never returns any results.
Constructor Summary
          Empty constructor for use by subclasses.
Method Summary
static Lookup getDefault()
          Static method to obtain the global lookup in the whole system.
abstract  Object lookup(Class clazz)
          Look up an object matching a given interface.
abstract  Lookup.Result lookup(Lookup.Template template)
          The general lookup method.
 Lookup.Item lookupItem(Lookup.Template template)
          Look up the first item matching a given template.
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail


public static final Lookup EMPTY
A dummy lookup that never returns any results.

Constructor Detail


public Lookup()
Empty constructor for use by subclasses.

Method Detail


public static Lookup getDefault()
Static method to obtain the global lookup in the whole system. The actual returned implementation can be different in different systems, but the default one is based on Lookups.metaInfServices(java.lang.ClassLoader) with the context classloader of the first caller. Each system is adviced to honor this and include some form of metaInfServices implementation in the returned lookup as usage of META-INF/services is a JDK standard.

the global lookup in the system


public abstract Object lookup(Class clazz)
Look up an object matching a given interface. This is the simplest method to use. If more than one object matches, one will be returned arbitrarily. The template class may be a class or interface; the instance is guaranteed to be assignable to it.

clazz - class of the object we are searching for
an object implementing the given class or null if no such implementation is found


public abstract Lookup.Result lookup(Lookup.Template template)
The general lookup method. Callers can get list of all instances and classes that match the given template, request more info about them in form of Lookup.Item and attach a listener to this be notified about changes. The general interface does not specify whether subsequent calls with the same template produce new instance of the Lookup.Result or return shared instance. The prefered behaviour however is to return shared one.

template - a template describing the services to look for
an object containing the results


public Lookup.Item lookupItem(Lookup.Template template)
Look up the first item matching a given template. Includes not only the instance but other associated information.

template - the template to check
a matching item or null


Built on May 3 2007.  |  Portions Copyright 1997-2005 Sun Microsystems, Inc. All rights reserved.