RichFaces 4.0 Components Development Kit

Version 4

    This article is part of RichFaces JSF 2.0 migration

    Although JSF 2.0 has a new declarative components, it seems too simple for a complex components ( like Tree, data tables and so on ) development. Also, it is still necessary to generate special getters and state saving-restore methods, add/removeListener methods, custom tag handlers and so on.


    1. Using JSF 2.0 annotations instead of propietary XML format for component description. Additional anntotations should be introduced for non-standard metadata ( component attributes, documentation ). The XML files still be used for backward compatibility and reusable information like common pass through attributes.
    2. Generate component code compatible with JSF 2.0. It should use StateHelper instead of custom save/restore state, implements BehaviorHolder when necessary, pass Default values to StateHelper.eval method.
    3. Generate behaviors and behavior renderers.
    4. Add support for JSF 2.0 system events.
    5. Geterate Tag Handlers compatible with JSF 2.0 composite components.
    6. Convert JSP-based Renderer template language into JSF 2.0 VDL. In addition to XML format append CSS language to generate custom stylesheets for skinnability.
    7. Generate resources annotations for component JavaScript and CSS files.
    8. Make generated renderer indepanded from base class, to do CDK library-independent.
    9. Build Assembled Library-wide and application-specific JavaScript and CSS files. Generate static stylesheets for required skins therefore these files could be served as static content.
    10. Generate automated tests for components and renderers.
    11. Develop set of functions to support current CDK capabilities (e.g. clientId).
    12. Optimize generated code. Use RI approach ( handleAttribute method ) for fastest access to common pass-through attributes.
    13. Generate XML Schema which could be used in IDE editors instead of tag library.
    14. Generate I18N resource bundles to use with UIComponent#getResourceBundleMap() method.