jsr372-experts@javaserverfaces-spec-public.java.net

[jsr372-experts] [1315-ELResolvingByCDI] Simplify EL resolver chain by using CDI

From: manfred riem <manfred.riem_at_oracle.com>
Date: Wed, 08 Oct 2014 16:18:04 -0500

Hi all,

After working on
https://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-1311 it has
become clear to Ed and I that there is more work to be done so I have
temporarily reverted the work done for 1311 and I will now describe what
we think would be a good way forward.

Use case #1 - Old applications prior to Servlet 4.0 / JSF 2.3

Make sure this keeps working as usual without making it hard CDI
dependent. Which means we are not going to change in the EL resolvers,
the EL resolver chain or how the integration is currently done. This
will maintain our backwards compatibility.

Use case #2 - New application wanting to use Servlet 4.0 / JSF 2.3

1. Required to either have a web.xml with version 4.0 or a
WEB-INF/faces-config.xml stating version 2.3, as this will activate the
new behavior.

2. Let CDI do most of the EL resolving, which means adding producers for
the old EL resolvers (e.g. ImplicitObject, Composite etc).

3. Rework the EL resolver chain to use the new CDI EL Resolver plus any
other EL resolvers that we need.

4. Define the default producers in a javax.faces package so they are
consistent between JSF implementations and allow for overriding.

5. By making it an opt-in the component vendor / developer will have to
support the new requirements if they want to take advantage of these new
capabilities.

Comments, thoughts?

Regards,
Manfred