public interface IConfigurationElement
plugin.xml
) file.
This interface also provides a way to create executable extension objects.
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 configuration element 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
and configuration element 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 or configuration element 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 |
---|---|
Object |
createExecutableExtension(String propertyName)
Creates and returns a new instance of the executable extension
identified by the named attribute of this configuration element.
|
boolean |
equals(Object o) |
String |
getAttribute(String name)
Returns the named attribute of this configuration element, or
null if none. |
String |
getAttribute(String attrName,
String locale)
When multi-language support is enabled, this method returns the named attribute of this
configuration element in the specified locale, or
null if none. |
String |
getAttributeAsIs(String name)
Deprecated.
The method is equivalent to the
getAttribute(String) . Contrary to its description,
this method returns a translated value. Use the getAttribute(String) method instead. |
String[] |
getAttributeNames()
Returns the names of the attributes of this configuration element.
|
IConfigurationElement[] |
getChildren()
Returns all configuration elements that are children of this
configuration element.
|
IConfigurationElement[] |
getChildren(String name)
Returns all child configuration elements with the given name.
|
IContributor |
getContributor()
Returns the contributor of this configuration element.
|
IExtension |
getDeclaringExtension()
Returns the extension that declares this configuration element.
|
int |
getHandleId()
Returns unique identifier of the registry object from which this element was created.
|
String |
getName()
Returns the name of this configuration element.
|
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 configuration element.
|
Object |
getParent()
Returns the element which contains this element.
|
String |
getValue()
Returns the text value of this configuration element.
|
String |
getValue(String locale)
When multi-language support is enabled, this method returns the text value of this
configuration element in the specified locale, or
null if none. |
String |
getValueAsIs()
Deprecated.
The method is equivalent to the
getValue() . Contrary to its description,
this method returns a translated value. Use the getValue() method instead. |
boolean |
isValid()
Returns whether this configuration element object is valid.
|
Object createExecutableExtension(String propertyName) throws CoreException
The specified class is instantiated using its 0-argument public constructor.
Then the following checks are done:
If the specified class implements the IExecutableExtension
interface, the method IExecutableExtension.setInitializationData(IConfigurationElement, String, Object)
is called, passing to the object the configuration information that was used to create it.
If the specified class implements IExecutableExtensionFactory
interface, the method IExecutableExtensionFactory.create()
is invoked.
Unlike other methods on this object, invoking this method may activate the plug-in.
propertyName
- the name of the propertyCoreException
- if an instance of the executable extension
could not be created for any reasonInvalidRegistryObjectException
- if this configuration element is no longer validIExecutableExtension.setInitializationData(IConfigurationElement, String, Object)
,
IExecutableExtensionFactory
String getAttribute(String name) throws InvalidRegistryObjectException
null
if none.
The names of configuration element attributes are the same as the attribute names of the corresponding XML element. For example, the configuration markup
<bg pattern="stripes"/>corresponds to a configuration element named
"bg"
with an attribute named "pattern"
with attribute value "stripes"
.
Note that any translation specified in the plug-in manifest file is automatically applied.
name
- the name of the attributenull
if noneInvalidRegistryObjectException
- if this configuration element is no longer validString getAttribute(String attrName, String locale) throws InvalidRegistryObjectException
null
if none.
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
getAttribute(String)
.
attrName
- the name of the attributelocale
- the requested localenull
if noneInvalidRegistryObjectException
- if this configuration element is no longer validgetAttribute(String)
,
IExtensionRegistry.isMultiLanguage()
@Deprecated String getAttributeAsIs(String name) throws InvalidRegistryObjectException
getAttribute(String)
. Contrary to its description,
this method returns a translated value. Use the getAttribute(String)
method instead.null
if none.
The names of configuration element attributes are the same as the attribute names of the corresponding XML element. For example, the configuration markup
<bg pattern="stripes"/>corresponds to a configuration element named
"bg"
with an attribute named "pattern"
with attribute value "stripes"
.
Note that any translation specified in the plug-in manifest file for this attribute is not automatically applied.
name
- the name of the attributenull
if noneInvalidRegistryObjectException
- if this configuration element is no longer validString[] getAttributeNames() throws InvalidRegistryObjectException
The names of configuration element attributes are the same as the attribute names of the corresponding XML element. For example, the configuration markup
<bg color="blue" pattern="stripes"/>corresponds to a configuration element named
"bg"
with attributes named "color"
and "pattern"
.
InvalidRegistryObjectException
- if this configuration element is no longer validIConfigurationElement[] getChildren() throws InvalidRegistryObjectException
Each child corresponds to a nested XML element in the configuration markup. For example, the configuration markup
<view>     <verticalHint>top</verticalHint>     <horizontalHint>left</horizontalHint> </view>corresponds to a configuration element, named
"view"
,
with two children.
InvalidRegistryObjectException
- if this configuration element is no longer validgetChildren(String)
IConfigurationElement[] getChildren(String name) throws InvalidRegistryObjectException
name
- the name of the child configuration elementInvalidRegistryObjectException
- if this configuration element is no longer validgetChildren()
IExtension getDeclaringExtension() throws InvalidRegistryObjectException
InvalidRegistryObjectException
- if this configuration element is no longer validString getName() throws InvalidRegistryObjectException
<wizard name="Create Project"/>corresponds to a configuration element named
"wizard"
.InvalidRegistryObjectException
- if this configuration element is no longer validObject getParent() throws InvalidRegistryObjectException
IExtension
.
Otherwise the returned value can be downcast to
IConfigurationElement
.null
InvalidRegistryObjectException
- if this configuration element is no longer validString getValue() throws InvalidRegistryObjectException
<script lang="javascript">.\scripts\cp.js</script>corresponds to a configuration element
"script"
with value ".\scripts\cp.js"
.
Values may span multiple lines (i.e., contain carriage returns and/or line feeds).
Note that any translation specified in the plug-in manifest file is automatically applied.
null
InvalidRegistryObjectException
- if this configuration element is no longer validString getValue(String locale) throws InvalidRegistryObjectException
null
if none.
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
getValue()
.
locale
- the requested localenull
InvalidRegistryObjectException
- if this configuration element is no longer validgetValue(String)
,
IExtensionRegistry.isMultiLanguage()
@Deprecated String getValueAsIs() throws InvalidRegistryObjectException
getValue()
. Contrary to its description,
this method returns a translated value. Use the getValue()
method instead.<script lang="javascript">.\scripts\cp.js</script>corresponds to a configuration element
"script"
with value ".\scripts\cp.js"
.
Values may span multiple lines (i.e., contain carriage returns and/or line feeds).
Note that translation specified in the plug-in manifest file is not automatically applied. For example, the configuration markup
<tooltip>#hattip</tooltip>corresponds to a configuration element, named
"tooltip"
,
with value "#hattip"
.
null
InvalidRegistryObjectException
- if this configuration element is no longer valid@Deprecated String 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 configuration element is no longer validIExtensionRegistry
String getNamespaceIdentifier() throws InvalidRegistryObjectException
InvalidRegistryObjectException
- if this configuration element is no longer validIContributor getContributor() throws InvalidRegistryObjectException
InvalidRegistryObjectException
- if this configuration element is no longer validboolean equals(Object o)
equals
in class Object
getHandleId()
boolean isValid()
true
if the object is valid, and false
if it is no longer validint getHandleId()
equals(Object)
Copyright (c) 2000, 2018 Eclipse Contributors and others. All rights reserved.Guidelines for using Eclipse APIs.