Helios System Requirements and Architecture
This document is tentative and subject to change without notice.
JSF 2.0 Support
The Helios release will introduce system level support for JSF 2.0. This includes updates to:
- Facet and library framework support for JSF 2.0 projects.
- The XML catalog (after requisite IP review) for new XML schemas.
- The application configuration EMF model (facesconfig) for new XML elements introduced in the release.
- Supported web.xml configuration concepts.
- The JSF Tag Registry, which will become the authoratative source of information about JSF tags (both JSP and Facelet).
- Component tree rendering for the addition of the rendering target concept and an API to retrieve component ids that are in use.
New JSF 2.0 concepts to be supported by the system are:
- Annotation-based configuration of JSF artifacts.
- Implicit navigation rules formulated from supported action source tags.
- Design time support for the JSF resource loading concept.
- Facelet source editing support in the Structured Source Editor (SSE).
Flexibility of Adoption
Based on lessons learned over almost five years of experience with the JSF project as both committers and adopters, we have come to some conclusions about the limitations of our current bundling architecture with respect to adoption. These are based on the following premises:
- The most common, and therefore premier, adoption scenario is to create an update site that is installed directly on top of some subset of WTP and its dependencies.
- Adopters may support other scenarios such as productizing, but they will still need to support option 1.
- Frameworks that create long-lived objects or react to events without the adopter doing anything make it very difficult for adopters to tune their end-user experience.
- Only a choice few base platform features like JDT have become so "defacto standard" that adopters are comfortable exposing them to end users without significant customization. WTP JSF Tools is not in this category.
- The WTP API policy and the Eclipse annual release cycle combine to make it very difficult to evolve API and user visible features once they are released.
This leads us to the following observations about adoption of the JSF Tools Project:
- End-user visible features that appear by default are bad. Examples include the appearance of the WPE action on the Open With action in the project explorer and the validation framework. Once these features are contributed an adopter is stuck with them. Short of doing hacky things like calling non-API methods or worse, calling setAccessible to get private data. This is bad due to premise 1: adopters get stuck exposing things to their users that they may not like or conflict with a similar feature that they want to implement in their own way or based on a superior internal technology.
- Frameworks that are depend on non-overridable data such as JSF tag metadata are difficult to customize for same reason as observation.
- Default implementations