jsf
the javaserver faces tools subproject
WTP LogoWTP Home
Project Features
 

This document aims to list the feature set for the JavaServer Faces Tooling Project.

 

This is not intended to be an all-encompassing list initially, rather it is intended to serve as an evolving list as we move towards acceptance of the full feature set.

 

Please send all feedback to the eclipse.webtools.jsf newsgroup.

Assumptions
 

The following assumptions have been made:

  • Source editors will be SSE-based
  • A component designer is not in scope - this project will focus on JSF usage and not component creation
  • Needs to support JSF 1.0, 1.1, 1.2 and be flexible for future releases
  • EMF based models will be used for all JSF artifacts
  • Released in WTP 1.5 timeframe
  • Supports all WTP platforms
  • Users of this tool understand at least the basics of JSF/Web design
  • JSF is associated with JSP pages only
  • Does not have to deal with Shale/Tiles. A developer should be able to extend this project to create these kinds of tools. Our goal is to provide a platform that other projects can extend, e.g. a Tiles project.

Infrastructure/Management Features
Registry of JSF implementations (like Java JRE)
 

For each implementation registered, user can specify:

  • Libraries
  • Tag libraries
  • Default servlet name
  • Default servlet class
JSF implementation selected during project creation/adding JSF capabilities to existing web project.

 

Extensibility

 
  • Extension point(s) will be provided to allow plugins to register JSF implementations (could be licensing implications if we choose to provide one or more JSF implementation plugins with our release)
Component Manager
 

A Component Manager will allow users to register component libraries with a workspace and then use them in one or more projects. This enables the following functionality:

  • Association of taglibs and JARs with a named set of components (e.g. JSF Core, ADF Faces, MyFaces, etc.)
  • Registry of default prefixes for the taglibs when used (overrideable on pages)
  • Capability of wizards to add taglibs to generated pages
  • Capability to copy component JARs and taglibs to correct places in deployable folders
  • Possibility to provide design-time metadata

 

Extensibility

 
  • Extension point(s) will be provided to allow plugins to register component libraries (could be licensing implications if we choose to provide one or more component library plugins with our release)
  • Extension point(s) will be provided to allow plugins to register custom tag libraries
Build Classpath
 

A project's build classpath will reference a "Component Library Container" which will point at all component libraries used by this project (WTP 1.0-1.5 may change this requirement).

Preferences
 

Preferences will be provided for the following:

  • Web and XML
    • JSF Files
      • JSF Source
      • JSF Styles
      • JSF Templates
    • Application Configuration Resource File
      • Default filename
      • Default servlet-mapping

 

Extensibility

 
  • Base Eclipse functionality will allow extensibility
Creation Features
Create JSF Project Wizard
 

Will add page(s) to the Dynamic Web Project Wizard to create a web project and also perform the following feature's functionality.

 

Extensibility

 
  • Extension point(s) will be provided to allow plugins to add functionality to the wizard
Add JSF Capabilities to Existing Web Project Wizard
 

Will provide the following functionality:

  • Select JSF implementation from registry
  • Select component libraries (optional)
  • Create single application configuration resource file
    • Filename defaults to preference, overridable
    • Location defaults to ".../WEB-INF", overridable
    • Updates context-param in web.xml if selected location/filename is not "WEB-INF/faces-config.xml"
  • Updates web.xml with servlet and servlet-mapping information
    • Servlet name/classname default to preferences, overridable
    • Servlet-mapping defaults to preference, overridable
  • Add "JSF Feature" to project
    • Create Component Library Container in project

 

Extensibility

 
  • Extension point(s) will be provided to allow plugins to add functionality to the wizard
Add JSF JSP Page Wizard
 

Based upon same wizard flow as JSP page creation wizard, will provide the following functionality:

  • Select name and location
  • Select JSF template (optional)
  • Possibly elect to "auto-bind" to a managed bean (create or select existing bean)

 

Extensibility

 
  • Extension point(s) will be provided to allow plugins to add functionality to the wizard
Create Application Configuration Resource File Wizard
 

Will provide the following functionality:

  • Filename defaults to preference, overridable
  • Location defaults to ".../WEB-INF", overridable
  • Updates context-param in web.xml if selected location/filename is not "WEB-INF/faces-config.xml"

 

Extensibility

 
  • Extension point(s) will be provided to allow plugins to add functionality to the wizard
Application Configuration Resource File Artifact Creation Dialogs
 

Several dialogs will be provided to assist in creation of artifacts found in application configuration resource dialogs. They will be invoked through several mechanisms whenever creation of an artifact is desired and indicated by the user.

 

Create Managed Bean Dialog

 

Will collect necessary information from user to register a managed bean and optionally also create the Java class.

 

Create Navigation Rule Dialog

 

Will collect necessary information from user to register a navigation rule.

 

Create Validator Dialog

 

Will collecte necessary information from user to register a validator.

 

Create Converter Dialog

 

Will collect necessary information from user to register a converter.

 

Create Renderer Dialog

 

Will collect necessary information from user to register a renderer.

 

Create Phase Listener Dialog

 

Will collect necessary information from user to register a phase listener.

 

Create Component Dialog

 

Will collect necessary information from user to register a component.

Application Configuration Resource File Editing Features
Multi-page Editor
 
  • Navigation Rules Diagram Page
    • "Source View" objects can be arbitrary strings, not just JSP page names
      • Allow "Source View" object to represent both JSP Pages and arbitrary strings (e.g. "logon.jsp" and "*/orders/*")
      • If associated with JSP Page, rendered as such and opened as JSP Page
    • Palette
      • Items for navigation rules only
      • Support drag-and-drop from palette
    • Allow editing both directly on diagram and in Properties view
  • Source Page
    • SSE-based XML Editor
    • JSF-specific content assist
    • Drag-and-drop from palette into Source editor (if we provide palette)
    • "Hot linking" (ctrl-click) for classes, etc.
  • First-Class Artifacts Editor Page
    • Provide page to allow editing of managed beans, navigation rules, validators, converters, renderers, phase listeners, and components
 

Extensibility

 
  • Extension point(s) will be provided to allow plugins to add functionality to the editor
  • Extension point(s) will be provided to allow plugins to add functionality to palette(s)
Content Outline View
 

Will provide necessary Eclipse artifacts to populate the Content Outline view.

Properties View
 

Will provide necessary Eclipse artifacts to populate the Properties view.

 

Extensibility

 
  • Extension point(s) will be provided to allow plugins to provide specialized property editing
    • ISV should be able to provide complete Properties view replacement
    • ISV should be able to provide specialized editors for advanced cell editing in Properties view provided by us
Menus and Toolbars
 

Will provide necessary menu and toolbar items.

 

Extensibility

 
  • Base Eclipse functionality will allow extensibility
JSF JSP Page Editing Features
Multi-page Editor
 
  • Design Page
    • Graphical design page (WYSIWYG, or as close as possible)
    • Drag-and-drop from palette
  • Source Page
    • SSE-based XML Editor
    • JSF-specific content assist
    • Drag-and-drop from palette into Source editor (if we provide palette)
    • "Hot linking" (ctrl-click) for classes, etc.
 

Extensibility

 
  • Extension point(s) will be provided to allow plugins to add functionality to the editor
  • Extension point(s) will be provided to allow plugins to add functionality to palette(s)
Content Outline View
 

Will provide necessary Eclipse artifacts to populate the Content Outline view.

Properties View
 

Will provide necessary Eclipse artifacts to populate the Properties view.

 

Extensibility

 
  • Extension point(s) will be provided to allow plugins to provide specialized property editing
    • ISV should be able to provide complete Properties view replacement
    • ISV should be able to provide specialized editors for advanced cell editing in Properties view provided by us
Menus and Toolbars
 

Will provide necessary menu and toobar items.

 

Extensibility

 
  • Base Eclipse functionality will allow extensibility
Model/API Features
EMF Models
 

We need to utilize existing or create new EMF models for (at least) the following:

  • Application Configuration Resource File
  • JSP Page
  • JSF JSP Page
  • Tag Library Descriptor

 

Extensibility

 
  • Extension point(s) may be desirable to allow plugins to hook into the EMF notification mechanism of models (that we create) to listen to model events (for example)
  • API generated by EMF provides programmatic access to model(s)
EMF/SSE Synchronization
 

Must be able to keep EMF model and SSE model synchronized, since we will be using both SSE-based editors and editors that we provide.

Execution/Runtime Features
JSF Debugging
 
  • We will not break inside a component - design and debug for component development is not supported by this project today
  • We will leverage WTP-provided JSP debugging capabilities
  • Managed bean debugging is available for free (managed bean is Java class)
 

Extensibility

 
  • Extension point(s) may be desirable to allow plugins to provide advanced debugging capabilities
Deploy/Run
 

We will leverage WTP-provided deployment and run capabilities.

 

Extensibility

 
  • Extension point(s) may be desirable to allow plugins to provide advanced deploy/run capabilities
Other Features
Use Eclipse Quick Fix Functionality to Create Managed Beans
 
  • Requires EL parser and page validation (possibly available in SSE?)
  • Will spawn managed bean creation dialog
 

Extensibility

 
  • Base Eclipse functionality will allow extensibility
Application Configuration Resource File Resource Modification Participation
 

An application configuration resource file will participate in typical Eclipse resource modification operations, such as refactoring. Some examples are:

  • Renaming a managed bean will cause any reference to the renamed bean in an application configuration resource file to be updated
  • Renaming a JSP page will cause any reference to the renamed JSP page in an application configuration resource file to be updated

Content Assist for Expression Language (EL)
 

Need to provide content-assist for Expression Language (EL).

 

Extensibility

 
  • Extension point(s) may be desirable to allow plugins to provide advanced content assist capabilities