Showing how to define and consume extension points in
Eclipse Dirigible — no dedicated annotation: an extension point is a
plain interface and a contribution is a @Component implementing it.
sample-java-extension-decorator/ # Dirigible project (registry path)
└── demo/
└── extension/
├── SampleExtensionPoint.java # plain interface — the extension point
├── SampleContribution.java # @Component implementing it — a contribution
├── ExtensionConsumer.java # @Controller — Extensions.find(...) lookup
└── InjectingConsumer.java # @Controller — List<SampleExtensionPoint> collection injection
Drop this project into the Dirigible IDE (clone via the Git perspective and publish, or copy it to
/registry/public/sample-java-extension-decorator/). The synchronizer compiles the classes; the bean
container registers SampleContribution as a @Component.
Two ways, both returning the same contributions:
- Collection injection (preferred, Spring-style) —
InjectingConsumertakes aList<SampleExtensionPoint>in its constructor; the bean container injects every contribution. Verify:GET /services/java/sample-java-extension-decorator/demo/extension/InjectingConsumer/injected-contributions - Programmatic lookup —
ExtensionConsumercallsExtensions.find(SampleExtensionPoint.class). Verify:GET /services/java/sample-java-extension-decorator/demo/extension/ExtensionConsumer/contributions
Both return ["Hello from SampleContribution!"].
See the Develop guide and the Java SDK.