AWComponent is the key class for template/based interactive content. All "pages", page sub-sections, "wrappers", as well as most controls / widgets, and even control contructs are implemented as subclasses of AWComponent.
Components typically have a {@link AWTemplate template} (.awl file) containing "barehtml text" mixed with {@link AWComponentReference references} to other embeddedAWComponents (or low level {@link ariba.ui.aribaweb.core.AWBindableElement elements}). These, in turn, have {@link AWBinding bindings} that refer back to the java instancepaired with the template (often using {@link ariba.util.fieldvalue.FieldPath fieldpaths}to dynamically push/pull values and invoke actions.
Components may be either {@link #isStateless() stateless} (pooled) or stateful (bound to theirpage instance and stored in the session. (Typically pages, page sub-sections, and particular rich components are stateful, while simple controls are stateless and simply push/pull their needed state from their parent component via bindings).
Simple subclasses of AWComponent typically declare instance variables (possible public for use in bindings) as well as action methods (which return {@link AWResponseGenerating reponses}which are usually just other page-level AWComponent instances for the next page (or null to rerender the current page while reflecting any updated state).
Components participate in the {@link AWCycleable} request handling lifecycle. In addition to{@link #renderResponse(AWRequestContext,AWComponent)}, {@link #applyValues(AWRequestContext,AWComponent)}, and {@link #invokeAction(AWRequestContext,AWComponent)}, an AWComponent also experiences {@link #init()}, {@link #awake()}, {@link #sleep()}, and even possibly {@link #hibernate()}.
@aribaapi private