Version 4

    This article is part of the "RichFaces 4.0 Components Development Kit" description.

    Generator expects next structure for Java classes and files :

    • <prefix>.component.Abstract<Name> - the optional abstract superclass for the JSF component. To avoid      manual writing for EL-enabled getters/setters,      saveState/restoreState methods, listener-related methods and so on,      developer may create that abstract class from which generator should      create the implementation.

    • <prefix>.component.UI<Name> - Base component class. That class might be generated from an  abstract superclass by the CDK or created by the developer. It makes sense to have concrete class that can be created by JSF Application or 'new' operatir in the backing bean.

    • <prefix>.component.<markup>.<Markup><RendererName>      - renderer-specific generated component. In addition to the base UI Component class it contains Java Bean getter/setter methods for renderer-specific attributes. This class is generated by the CDK.

    • <prefix>.<Name> - JSF UI component-type. May be provided in the configuration or calculated from the component class name.

    • <prefix>.<Name> - JSF  component family. That is common family name for the base UI... component and all renderer-specific component instances. May be provided in the configuration or calculated from the component class name.

    • <prefix>.<Markup><RendererName> - renderer-specific JSF component-type. May be provided in the      configuration or calculated from the renderer name.

    • <prefix>.renderkit.<RendererName>RendererBase      - optional Renderer superclass that implements methods required by      the generated renderer. Created by the component developer.

    • <prefix>.renderkit.<markup>.<RendererName>Renderer      – The component  renderer. That class might be created by the      component developer or generated from template by CDK.

    • <prefix>.<RendererName>  - JSF renderer-type. Can be provided in the configuration or calculated from the renderer name.

    • <prefix>.<markup>.<RendererName>.xml      - template for generated renderer class. Provided by the component      developer.

    • <prefix>.view.jsp.<RendererName>Tag      - JSP tag class.

    • <prefix>.view.facelets.Abstract<RendererName>Handler - base classes for generated handlers.
    • <prefix>.view.facelets.<RendererName>Handler - facelets tag handler class.

    • <renderername> - JSP/facelets tag name.

    For components that uses JSF events :


    • <prefix>.event.<Event>Event      - event class. Provided by the component developer.

    • <prefix>.event.<Event>Listener      - Event listener interface. Can be generated by CDK

    • process<Event> -      event processing method name in listener interface.

    • <prefix>.event.<Event>Source      - Interface for event processing component that contains methods      'add<Event>Listener(<Event>Listener      listener)', 'remove<Event>Listener(<Event>Listener      listener)'.

    • <prefix>.event.<Event>ListenerWrapper      - wrapper class that is used to bind listener's EL-expression to      user's beans.

    • <prefix>.taglib.<Event>ListenerTag      - JSP tag class that creates listener instance. Parent component      have to implement <Event>Source interface.

    • <prefix>.taglib.<Event>ListenerTagHandler      - Facelets tag class that creates listener instance.

    Definitions that are used in this structure (uppercase character means Java names notation. If the component name is "foo" then <name> means "foo", and <Name> means "Foo"):

    <prefix> is a common library name (for example, it      is 'javax.faces' for JSF standard components).

    <name>  is a base component  name (for      javax.faces.component.UIInput component <name> is      "input").


    <markup> is a render-kit generated content name, "html"      for HTML/XHTML pages, "wml" for mobile content etc.
    <rendererName> - is a renderer name for concrete visual      component, e.g. "commandButton" , "panelGroup".
    <event> is a Faces Event name ("action" for      all ActionSource components).

    The same rules as UML Class diagramm: