----------------------------------------------
   Java Server Faces components generator
----------------------------------------------
----------------------------------------------
----------------------------------------------

Preferable classes names.

  By default, geterator expects the next structure for Java classes :
  
    * <\<prefix\>>.component.Abstract<\<Name\>> - the optional abstract superclass for JSF component. To avoid manual
   writing for EL-enabled getters/setters, saveState/restoreState methods, listener-related methods etc, developer
   can create abstract class, and generator will create the implementation.
    
    * <\<prefix\>>.component.UI<\<Name\>> - Base component class. It can be generated from the abstract superclass, or created by developer.
    
    * <\<prefix\>>.component.<\<markup\>>.<\<Markup\>><\<RendererName\>>renderer-specific generated component( where the markup is render-kit specific generation name, such as html | xml | wml ).
   In addition to the UI Component class, contains Java Bean getter/setter methods for renderer-specific attributes. This class is generated by CDK.
	
    * <\<prefix\>>.<\<Name\>> - JSF UI component-type. Can be provided in the configuration or calculated from the component class name.
	
    * <\<prefix\>>.<\<Markup\>><\<RendererName\>> - renderer-specific JSF component-type. Can be provided in the configuration or calculated from the renderer name.
	
    * <\<prefix\>>.renderkit.<\<RendererName\>>RendererBase - optional Renderer superclass, implements methods from template renderer  used by generated. Created by component developer.
	
    * <\<prefix\>>.renderkit.<\<markup\>>.<\<RendererName\>>Renderer - generated renderer.
	
    * <\<prefix\>>.<\<RendererName\>>Renderer - JSF renderer-type. Can be provided in the configuration or calculated from the renderer name.
	
    * <\<prefix\>>.<\<Markup\>><\<RendererName\>>.xml - template for generating the renderer class. jspx - like syntax is used. Provided by component developer.
	
    * <\<prefix\>>.taglib.<\<RendererName\>>Tag - JSP tag class.
	
    * <\<prefix\>>.taglib.<\<RendererName\>>TagHandler - facelets tag handler class.
	
    * <\<renderername\>> - JSP/facelets tag name.
	
   []
	
   For components, that uses JSF events :
	
    * <\<prefix\>>.event.<\<Event\>>Event - event class. Provided by 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 ( with methos add<\<Event\>>Listener(<\<Event\>>Listener listener ) , remove<\<Event\>>Listener.... )
	
    * <\<prefix\>>.event.<\<Event\>>EventWrapper - wrapper class. Uses for binding listener's EL-expression in user's beans.
	
    * <\<prefix\>>.taglib.<\<Event\>>ListenerTag - JSP tag class for creating listener instance. Parent tag must creates component implementing Source interface.
	
    * <\<prefix\>>.taglib.<\<Event\>>ListenerTagHandler - facelets tag class for create listener instance.
	
   []
	
   Definitions that are used in this structure ( uppercase symbols means Java names notation, for name "foo" <\<name\>> mean "foo", and <\<Name\>> - "Foo"  ): 
	
   [<\<prefix\>>] is a common library name ( for example, base JSF components use <\<javax.faces\>> prefix ). value for prefix get from abstract component package or renderer template path.
	
   [<\<name\>>] is a name for base component ( for UIInput component <\<name\>> is "input" ). value for component name generator can got from UI... or Abstract... class name.
	
   [<\<markup\>>] is a render-kit generated content name, "html" for HTML/XHTML pages, "wml" for mobile content etc. Must be provided in the render-kit description by ant task or maven POM. By default, "html" is used
	
   [<\<rendererName\>>] - name of renderer for concreting a visual component implementation, e.g. "commandButton" , "panelGroup" etc. Generator can take rendererName from a template file name.
	
   [<\<event\>>] is a name for Faces Event ( "action" for all ActionSource components like UICommand ). Can be provided in the component configuration, or got from the implemented ...Source interface.
	

Configuration building rules.

    We have a lot of methods for providing the component configuration. By default, generator will check a source folders and search for
  classes according to the default layout. As a minimal work, developer can create an abstract component class and renderer template with required structure.
  For classes, found with defined naming conventions, all other files and classes will be generateed automatically.
  For additional information and custom names and classes, developer can provide such information directly in Java code by special annotations, or
  create a special xml configuration file.
  
* A sequence for collecting configuration information ( library-wide information provided by ant task or maven-plugin configuration ):

  [[1]] As a first step, generator must read xml components configuration files and build internal structure for generation.
  
  [[2]] Generator searches in the all sources folders for Java classes with name like Abstract* or UI*, inherited from javax.faces.component.UIComponent.
  
  [[3]] For all components classes, founded on the step 2, but not included in xml config, generator must create default configuration object, with names for generated classes constructed by default layout.
  
  [[4]] All classes in configuration must be checked for Java or JavaDoc annotations with additional meta-information, as far as generator use reflection for searching the same information from superclasses and all implemented interfaces.
  For standard JSF classes and interfaces information provided in generator, for additional libraries developer can create special xml files with description. For components created in generated project, generator will build such files, and they can be used in depended projects.
  
  [[5]] For all Renderer templates ( placed in the separated folder ), but not included in the xml config, generator must also create default configuration objects, in the same manner as for components. 
  
  [[6]] Creates real Renderer's classes, by templates-compiler part of CDK. Meta information from templates will be used as additional qualification for components config.
  
  [[7]] Generates Java classes for components, tags and event-related interfaces.
  
  [[8]] creates configuration files ( faces-config.xml , ...tld, ...taglib.xml ).
  