clarifications about extension points

This commit is contained in:
Karol Lewandowski 2022-02-23 13:46:56 +01:00
parent 5bb2c1ce16
commit d23221421c
2 changed files with 8 additions and 3 deletions

View File

@ -43,6 +43,8 @@ The `name` attribute assigns a unique name for this extension point.
Its fully qualified name required in [Using Extension Points](#using-extension-points) is built by prefixing `<id>` + `.`: `my.plugin.myExtensionPoint1` and `my.plugin.myExtensionPoint2`. Its fully qualified name required in [Using Extension Points](#using-extension-points) is built by prefixing `<id>` + `.`: `my.plugin.myExtensionPoint1` and `my.plugin.myExtensionPoint2`.
The `beanClass` attribute sets a bean class that specifies one or several properties annotated with the [`@Attribute`](upsource:///platform/util/src/com/intellij/util/xmlb/annotations/Attribute.java) annotation. The `beanClass` attribute sets a bean class that specifies one or several properties annotated with the [`@Attribute`](upsource:///platform/util/src/com/intellij/util/xmlb/annotations/Attribute.java) annotation.
Note that bean classes do not follow the JavaBean standard.
The `interface` attribute sets an interface the plugin that contributes to the extension point must implement. The `interface` attribute sets an interface the plugin that contributes to the extension point must implement.
The `area` attribute determines the scope in which the extension will be instantiated. The `area` attribute determines the scope in which the extension will be instantiated.

View File

@ -38,7 +38,10 @@ See [](explore_api.md) for more information and strategies.
* If the extension point was declared using the `interface` attribute, for newly added child element, set the `implementation` attribute to the name of the class that implements the specified interface. * If the extension point was declared using the `interface` attribute, for newly added child element, set the `implementation` attribute to the name of the class that implements the specified interface.
* If the extension point was declared using the `beanClass` attribute, for newly added child element, set all attributes annotated with the [`@Attribute`](upsource:///platform/util/src/com/intellij/util/xmlb/annotations/Attribute.java) annotations in the specified bean class. * If the extension point was declared using the `beanClass` attribute, for newly added child element, set all attributes annotated with the [`@Attribute`](upsource:///platform/util/src/com/intellij/util/xmlb/annotations/Attribute.java) annotations in the specified bean class.
To clarify this procedure, consider the following sample section of the <path>plugin.xml</path> file that defines two extensions designed to access the `com.intellij.appStarter` and `com.intellij.projectTemplatesFactory` extension points in the IntelliJ Platform and one extension to access the `another.plugin.myExtensionPoint` extension point in another plugin `another.plugin`: See the [](plugin_extension_points.md#declaring-extension-points) section for details.
To clarify this procedure, consider the following sample section of the <path>plugin.xml</path> file that defines two extensions designed to access the `com.intellij.appStarter` and `com.intellij.projectTemplatesFactory` extension points in the IntelliJ Platform,
and one extension to access the `another.plugin.myExtensionPoint` extension point in another plugin `another.plugin`:
```xml ```xml
<!-- <!--
@ -78,7 +81,7 @@ Several tooling features are available to help configure bean class extension po
Properties annotated with [`@RequiredElement`](upsource:///platform/extensions/src/com/intellij/openapi/extensions/RequiredElement.java) are inserted automatically and validated (2019.3 and later). Properties annotated with [`@RequiredElement`](upsource:///platform/extensions/src/com/intellij/openapi/extensions/RequiredElement.java) are inserted automatically and validated (2019.3 and later).
If the given property is allowed to have an explicit empty value, set `allowEmpty` to `true` (2020.3 and later). If the given property is allowed to have an explicit empty value, set `allowEmpty` to `true` (2020.3 and later).
Property names matching the following list will resolve to FQN: Property names matching the following list will resolve to fully qualified class name:
- `implementation` - `implementation`
- `className` - `className`
- `serviceInterface` / `serviceImplementation` - `serviceInterface` / `serviceImplementation`
@ -98,4 +101,4 @@ Similarly, `action` resolves to all registered `<action>` IDs.
Specifying `@org.jetbrains.annotations.Nls` validates a UI `String` capitalization according to the text property `Capitalization` enum value (2019.2 and later). Specifying `@org.jetbrains.annotations.Nls` validates a UI `String` capitalization according to the text property `Capitalization` enum value (2019.2 and later).
Attributes with `Enum` type support code insight with _lowerSnakeCased_ notation (2020.1 and later). Attributes with `Enum` type support code insight with _lower_snake_cased_ notation (2020.1 and later).