public interface IExtension
plugin.xml
) file.
These registry objects 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 except
isValid()
will throw InvalidRegistryObjectException
.
For extension objects, the most common case is code in a plug-in dealing
with extensions contributed to one of the extension points it declares.
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 when accessing the extension
objects because they become invalid if the contributing plug-in is 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 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.
This interface can be used without OSGi running.
This interface is not intended to be implemented by clients.
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object o) |
IConfigurationElement[] |
getConfigurationElements()
Returns all configuration elements declared by this extension.
|
IContributor |
getContributor()
Returns the contributor of this extension.
|
String |
getExtensionPointUniqueIdentifier()
Returns the unique identifier of the extension point
to which this extension should be contributed.
|
String |
getLabel()
Returns a displayable label for this extension.
|
String |
getLabel(String locale)
When multi-language support is enabled, this method returns a displayable label for this
extension in the specified locale.
|
String |
getNamespace()
Deprecated.
As namespace is no longer restricted to the contributor name,
use
getNamespaceIdentifier() to obtain namespace name or getContributor()
to get the name of the contributor of this registry element.
In the past namespace was dictated by the name of the bundle. If bundle
The namespace used to be the same as the bundle name. As a result, the
Since 3.2, the extension registry allows elements to specify qualified name. The extension point
of the plug-in (The use of a simple Id is still a preferred way. Whenever possible, specify only the simple Id and let runtime take care of the rest.)
If your code used the
If your code used the |
String |
getNamespaceIdentifier()
Returns the namespace name for this extension.
|
String |
getSimpleIdentifier()
Returns the simple identifier of this extension, or
null
if this extension does not have an identifier. |
String |
getUniqueIdentifier()
Returns the unique identifier of this extension, or
null
if this extension does not have an identifier. |
boolean |
isValid()
Returns whether this extension object is valid.
|
IConfigurationElement[] getConfigurationElements() throws InvalidRegistryObjectException
plugin.xml
)
file for the plug-in that declares this extension.
Returns an empty array if this extension does not declare any
configuration elements.InvalidRegistryObjectException
- if this extension is no longer validString getNamespace() throws InvalidRegistryObjectException
getNamespaceIdentifier()
to obtain namespace name or getContributor()
to get the name of the contributor of this registry element.
In the past namespace was dictated by the name of the bundle. If bundle org.abc
contributed registry element with Id of MyId
, the namespace of
the element was always set to org.abc
, producing the qualified name of
org.abc.MyId
.
The namespace used to be the same as the bundle name. As a result, the getNamespace()
method was used both to obtain the name of the bundle and to obtain the namespace of a registry
element.
Since 3.2, the extension registry allows elements to specify qualified name. The extension point
of the plug-in org.abc
could specify org.zzz.MyExtPoint
as
an Id. In this case, namespace name is org.zzz
, but the contributor
name is org.abc
.
(The use of a simple Id is still a preferred way. Whenever possible, specify only the simple Id and let runtime take care of the rest.)
If your code used the getNamespace()
to obtain the name of the contributing bundle,
use getContributor()
. The typical usage pattern here is to find a bundle name to obtain
some information from the corresponding OSGi bundle. For example, deducing the file location
specified as a relative path to the bundle install location would fall into this group.
If your code used the getNamespace()
to obtain the namespace of the registry element,
use getNamespaceIdentifier()
. Typically, this is the case when code is trying to process
registry elements belonging to some logical group. For example, processing notifications for all
elements belonging to the org.abc
namespace would fall into this category.
InvalidRegistryObjectException
- if this extension is no longer validIExtensionRegistry
String getNamespaceIdentifier() throws InvalidRegistryObjectException
InvalidRegistryObjectException
- if this extension is no longer validIContributor getContributor() throws InvalidRegistryObjectException
InvalidRegistryObjectException
- if this extension is no longer validString getExtensionPointUniqueIdentifier() throws InvalidRegistryObjectException
InvalidRegistryObjectException
- if this extension is no longer validString getLabel() throws InvalidRegistryObjectException
Note that any translation specified in the plug-in manifest file is automatically applied.
InvalidRegistryObjectException
- if this extension is no longer validString getLabel(String locale) throws InvalidRegistryObjectException
The locale matching tries to find the best match between available translations and the requested locale, falling back to a more generic locale ("en") when the specific locale ("en_US") is not available.
If multi-language support is not enabled, this method is equivalent to the method
getLabel()
.
locale
- the requested localeInvalidRegistryObjectException
- if this extension is no longer validIExtensionRegistry.isMultiLanguage()
String getSimpleIdentifier() throws InvalidRegistryObjectException
null
if this extension does not have an identifier.
This identifier is specified in the plug-in manifest (plugin.xml
)
file as a non-empty string containing no period characters
('.'
) and must be unique within the namespace."main"
)
or null
InvalidRegistryObjectException
- if this extension is no longer validString getUniqueIdentifier() throws InvalidRegistryObjectException
null
if this extension does not have an identifier.
If available, this identifier is unique within the plug-in registry, and
is composed of the namespace where this extension
was declared and this extension's simple identifier."com.example.acme.main"
), or null
InvalidRegistryObjectException
- if this extension is no longer validboolean isValid()
true
if the object is valid, and false
if it is no longer valid
Copyright (c) 2000, 2015 Eclipse Contributors and others. All rights reserved.Guidelines for using Eclipse APIs.