Skip to content

I20260604-1800

@akurtakov akurtakov tagged this 04 Jun 18:01
The E4 Injector was decoupled from jakarta annotations by replacing
the ClassRequestor pseudo-dependency descriptor with an empty array, in:
- https://github.com/eclipse-platform/eclipse.platform/pull/2649

That pseudo-link is what notifies an injected object when its supplier
is disposed. With an empty descriptor the link is no longer established,
so @PreDestroy of objects that only use constructor/@PostConstruct
injection (no @Inject links) is no longer guaranteed to run before the
supplying context is disposed.

This broke disposal ordering and surfaced as a failure of
PartRenderingEngineTests.testBut336225.

Restore a non-empty, optional descriptor without re-introducing jakarta:
use a private marker interface InjectionLink that is never available
from any supplier together with e4's own @Optional annotation. This
keeps the injector free of specific jakarta annotation classes (the goal
of the previous change) while re-establishing the supplier-disposal
link.

Fixes https://github.com/eclipse-platform/eclipse.platform/issues/2700
Assets 2
Loading