The extension registry holds the master list of all
discovered namespaces, extension points and extensions.
The extension registry can be queried, by name, for
extension points and extensions.
The various objects that describe the contents of the extension registry
( IExtensionPoint , IExtension , and IConfigurationElement )
are intended for relatively short-term use. Clients that deal with these objects
must be aware that they may become invalid if the declaring plug-in is updated
or uninstalled. If this happens, all methods on these object except
isValid() will throw InvalidRegistryObjectException .
Code in a plug-in that has declared that it is not dynamic aware (or not declared
anything) can safely ignore this issue, since the registry would not be
modified while it is active. However, code in a plug-in that declares that it
is dynamic aware must be careful if it accesses extension registry objects,
because it's at risk if plug-in are removed. Similarly, tools that analyze
or display the extension registry are vulnerable. Client code can pre-test for
invalid objects by calling isValid(), which never throws this exception.
However, pre-tests are usually not sufficient because of the possibility of the
extension registry object becoming invalid as a result of a concurrent activity.
At-risk clients must treat InvalidRegistryObjectException as if it
were a checked exception. Also, such clients should probably register a listener
with the extension registry so that they receive notification of any changes to
the registry.
Extensions and extension points are declared by generic entities called
namespaces. The only fact known about namespaces is that they
have unique string-based identifiers. One example of a namespace
is a plug-in, for which the namespace id is the plug-in id.
This interface can be used without OSGi running.
This interface is not intended to be implemented by clients.
The extension registry can be queried, by name, for extension points and extensions.
The various objects that describe the contents of the extension registry ( IExtensionPoint , IExtension , and IConfigurationElement ) are intended for relatively short-term use. Clients that deal with these objects must be aware that they may become invalid if the declaring plug-in is updated or uninstalled. If this happens, all methods on these object except
isValid()will throw InvalidRegistryObjectException . Code in a plug-in that has declared that it is not dynamic aware (or not declared anything) can safely ignore this issue, since the registry would not be modified while it is active. However, code in a plug-in that declares that it is dynamic aware must be careful if it accesses extension registry objects, because it's at risk if plug-in are removed. Similarly, tools that analyze or display the extension registry are vulnerable. Client code can pre-test for invalid objects by callingisValid(), which never throws this exception. However, pre-tests are usually not sufficient because of the possibility of the extension registry object becoming invalid as a result of a concurrent activity. At-risk clients must treatInvalidRegistryObjectExceptionas if it were a checked exception. Also, such clients should probably register a listener with the extension registry so that they receive notification of any changes to the registry.Extensions and extension points are declared by generic entities called namespaces. The only fact known about namespaces is that they have unique string-based identifiers. One example of a namespace is a plug-in, for which the namespace id is the plug-in id.
This interface can be used without OSGi running.
This interface is not intended to be implemented by clients.