Skip to content

Extension point - *.extensionpoint

Declares a named hook that other artefacts can contribute to. Synchronizer: ExtensionPointsSynchronizer. Discoverable at runtime via @aerokit/sdk/extensions.

File format

json
{
    "name":        "ide-menu",
    "description": "Top-bar IDE menu contributions"
}

Fields

FieldNotes
nameThe string used by contributors when they declare extensionPoint: "<name>" on a *.extension. Must be globally unique within the deployment.
descriptionHuman-readable purpose statement.

Discovering contributions

At runtime, code asks the platform for every contribution registered against the point. String-keyed for *.extension artefacts:

ts
import { Extensions } from "@aerokit/sdk/extensions";

const modules = Extensions.getExtensions("ide-menu");
for (const m of modules) {
    // m is the registry path of a contributing module
}
java
import org.eclipse.dirigible.sdk.extensions.Extensions;

String[] modules = Extensions.getExtensions("ide-menu");

Typed Java alternative

For Java, the preferred form is the annotation pair @ExtensionPoint (on the contract interface) + @Extension(target = ContractInterface.class) (on contributing classes). Consumers retrieve typed instances directly:

java
@ExtensionPoint("Menu contributions")
public interface MenuContribution {
    List<Map<String, Object>> getItems();
}

@Extension(target = MenuContribution.class, name = "payments-menu")
public class PaymentsMenu implements MenuContribution { /* ... */ }

// Consumer:
List<MenuContribution> menus = Extensions.find(MenuContribution.class);

See /sdk/extensions/decorators and /sdk/extensions/extensions.

Editor

Authored either through the Extensions editor or as raw JSON in Monaco.

See also

Released under the EPL-2.0 License.