Found while resurrecting TCK tests lost during Mojarra 3.0→4.0 transition — specifically Spec763IT, the resurrection of #763 ("classes loaded from faces-config.xml are injectable").
The table Jakarta Faces Artifacts Eligible for Injection in ExpressionLanguageFacility.adoc (§ Jakarta Faces Managed Classes and Jakarta EE Annotations) omits two artifacts that are injectable in practice:
jakarta.faces.application.ViewHandler
jakarta.el.ELResolver
Both were injectable in JSR-314 and Mojarra still injects them today: ApplicationConfigProcessor.setViewHandler(...) and addELResolver(...) create the instance with performInjection=true and register it for @PreDestroy. Original support landed in javaee/mojarra:
- javaee/mojarra@7a6f863 — Make it so classes loaded from the faces-config.xml are injectable
- javaee/mojarra@5bc213e — Verify that ViewHandler, StateManager, SystemEventListener, NavigationHandler, ELResolver, ActionListener and ResourceHandler are injectable
The omission looks like an oversight in the Faces 4.0 DocBook→asciidoc conversion (d7fc180): the table still lists the now heavily @Deprecated(forRemoval=true) StateManager while dropping the fully-active ViewHandler.
Request: re-add ViewHandler (and clarify/confirm ELResolver) in the eligible-for-injection table.
Found while resurrecting TCK tests lost during Mojarra 3.0→4.0 transition — specifically
Spec763IT, the resurrection of #763 ("classes loaded from faces-config.xml are injectable").The table Jakarta Faces Artifacts Eligible for Injection in
ExpressionLanguageFacility.adoc(§ Jakarta Faces Managed Classes and Jakarta EE Annotations) omits two artifacts that are injectable in practice:jakarta.faces.application.ViewHandlerjakarta.el.ELResolverBoth were injectable in JSR-314 and Mojarra still injects them today:
ApplicationConfigProcessor.setViewHandler(...)andaddELResolver(...)create the instance withperformInjection=trueand register it for@PreDestroy. Original support landed in javaee/mojarra:The omission looks like an oversight in the Faces 4.0 DocBook→asciidoc conversion (d7fc180): the table still lists the now heavily
@Deprecated(forRemoval=true)StateManagerwhile dropping the fully-activeViewHandler.Request: re-add
ViewHandler(and clarify/confirmELResolver) in the eligible-for-injection table.