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.
- Restriction:
- This interface is not intended to be implemented by clients.
-
Method Summary
Modifier and TypeMethodDescriptionboolean
Returns all configuration elements declared by this extension.Returns the contributor of this extension.Returns the unique identifier of the extension point to which this extension should be contributed.getLabel()
Returns a displayable label for this extension.When multi-language support is enabled, this method returns a displayable label for this extension in the specified locale.Deprecated.Returns the namespace name for this extension.Returns the simple identifier of this extension, ornull
if this extension does not have an identifier.Returns the unique identifier of this extension, ornull
if this extension does not have an identifier.boolean
isValid()
Returns whether this extension object is valid.
-
Method Details
-
getConfigurationElements
Returns all configuration elements declared by this extension. These elements are a direct reflection of the configuration markup supplied in the manifest (plugin.xml
) file for the plug-in that declares this extension. Returns an empty array if this extension does not declare any configuration elements.- Returns:
- the configuration elements declared by this extension
- Throws:
InvalidRegistryObjectException
- if this extension is no longer valid
-
getNamespace
Deprecated.As namespace is no longer restricted to the contributor name, usegetNamespaceIdentifier()
to obtain namespace name orgetContributor()
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 ofMyId
, the namespace of the element was always set toorg.abc
, producing the qualified name oforg.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 specifyorg.zzz.MyExtPoint
as an Id. In this case, namespace name isorg.zzz
, but the contributor name isorg.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, usegetContributor()
. 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, usegetNamespaceIdentifier()
. 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 theorg.abc
namespace would fall into this category.Returns the namespace for this extension. This value can be used in various global facilities to discover this extension's provider.- Returns:
- the namespace for this extension
- Throws:
InvalidRegistryObjectException
- if this extension is no longer valid- Since:
- 3.0
- See Also:
-
getNamespaceIdentifier
Returns the namespace name for this extension.- Returns:
- the namespace name for this extension
- Throws:
InvalidRegistryObjectException
- if this extension is no longer valid- Since:
- org.eclipse.equinox.registry 3.2
-
getContributor
Returns the contributor of this extension.- Returns:
- the contributor for this extension
- Throws:
InvalidRegistryObjectException
- if this extension is no longer valid- Since:
- org.eclipse.equinox.registry 3.2
-
getExtensionPointUniqueIdentifier
Returns the unique identifier of the extension point to which this extension should be contributed.- Returns:
- the unique identifier of the relevant extension point
- Throws:
InvalidRegistryObjectException
- if this extension is no longer valid
-
getLabel
Returns a displayable label for this extension. Returns the empty string if no label for this extension is specified in the plug-in manifest file.Note that any translation specified in the plug-in manifest file is automatically applied.
- Returns:
- a displayable string label for this extension, possibly the empty string
- Throws:
InvalidRegistryObjectException
- if this extension is no longer valid
-
getLabel
When multi-language support is enabled, this method returns a displayable label for this extension in the specified locale. Returns the empty string if no label for this extension is specified in the plug-in manifest file.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()
.- Parameters:
locale
- the requested locale- Returns:
- a displayable string label for this extension, possibly the empty string
- Throws:
InvalidRegistryObjectException
- if this extension is no longer valid- Since:
- 3.5
- See Also:
-
getSimpleIdentifier
Returns the simple identifier of this extension, ornull
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.- Returns:
- the simple identifier of the extension (e.g.
"main"
) ornull
- Throws:
InvalidRegistryObjectException
- if this extension is no longer valid
-
getUniqueIdentifier
Returns the unique identifier of this extension, ornull
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.- Returns:
- the unique identifier of the extension (e.g.
"com.example.acme.main"
), ornull
- Throws:
InvalidRegistryObjectException
- if this extension is no longer valid
-
equals
-
isValid
boolean isValid()Returns whether this extension object is valid.- Returns:
true
if the object is valid, andfalse
if it is no longer valid- Since:
- 3.1
-
getNamespaceIdentifier()
to obtain namespace name orgetContributor()
to get the name of the contributor of this registry element.