public abstract class RenderKit
extends java.lang.Object
RenderKit represents a collection of Renderer
instances that, together, know how to render Jakarta Faces UIComponent
instances for a specific
client. Typically, RenderKit
s are specialized for some combination of client device type, markup language,
and/or user Locale
. A RenderKit
also acts as a Factory for associated Renderer
instances, which perform the actual rendering process for each component.
A typical Jakarta Faces implementation will configure one or more RenderKit
instances at web
application startup. They are made available through calls to the getRenderKit()
methods of
RenderKitFactory
. Because RenderKit
instances are shared, they must be implemented in a thread-safe
manner. Due to limitations in the current specification having multiple RenderKit
instances at play in
the same application requires a custom ViewHandler
instance that is aware of how to
deal with this case. This limitation will be lifted in a future version of the spec.
The RenderKit
instance must also vend a ResponseStateManager
instance, which is used in the
process of saving and restoring tree structure and state.
Constructor and Description |
---|
RenderKit() |
Modifier and Type | Method and Description |
---|---|
void |
addClientBehaviorRenderer(java.lang.String type,
ClientBehaviorRenderer renderer)
Register the specified
ClientBehaviorRenderer instance, associated with the specified component
type , to the set of ClientBehaviorRenderer s registered with this RenderKit , replacing
any previously registered ClientBehaviorRenderer for this type. |
abstract void |
addRenderer(java.lang.String family,
java.lang.String rendererType,
Renderer renderer)
|
abstract ResponseStream |
createResponseStream(java.io.OutputStream out)
Use the provided
OutputStream to create a new ResponseStream instance. |
abstract ResponseWriter |
createResponseWriter(java.io.Writer writer,
java.lang.String contentTypeList,
java.lang.String characterEncoding)
Use the provided
Writer to create a new ResponseWriter instance for the specified (optional)
content type, and character encoding. |
ClientBehaviorRenderer |
getClientBehaviorRenderer(java.lang.String type)
Return the
ClientBehaviorRenderer instance most recently registered for the specified type , if
any; otherwise, return null . |
java.util.Iterator<java.lang.String> |
getClientBehaviorRendererTypes()
Return an |
java.util.Iterator<java.lang.String> |
getComponentFamilies()
Return an |
abstract Renderer |
getRenderer(java.lang.String family,
java.lang.String rendererType)
Return the
Renderer instance most recently registered for the specified component family and
rendererType , if any; otherwise, return null . |
java.util.Iterator<java.lang.String> |
getRendererTypes(java.lang.String componentFamily)
Return an |
abstract ResponseStateManager |
getResponseStateManager()
Return an instance of
ResponseStateManager to handle rendering technology specific state management
decisions. |
public abstract void addRenderer(java.lang.String family, java.lang.String rendererType, Renderer renderer)
public abstract Renderer getRenderer(java.lang.String family, java.lang.String rendererType)
Return the Renderer
instance most recently registered for the specified component family
and
rendererType
, if any; otherwise, return null
.
public abstract ResponseStateManager getResponseStateManager()
Return an instance of ResponseStateManager
to handle rendering technology specific state management
decisions.
ResponseStateManager
public abstract ResponseWriter createResponseWriter(java.io.Writer writer, java.lang.String contentTypeList, java.lang.String characterEncoding)
Use the provided Writer
to create a new ResponseWriter
instance for the specified (optional)
content type, and character encoding.
Implementors are advised to consult the getCharacterEncoding()
method of class
ServletResponse
to get the required value for the characterEncoding for this method. Since
the Writer
for this response will already have been obtained (due to it ultimately being passed to this
method), we know that the character encoding cannot change during the rendering of the response.
writer
- the Writer around which this ResponseWriter
must be built.contentTypeList
- an "Accept header style" list of content types for this response, or null
if the
RenderKit should choose the best fit. As of the current version, the values accepted by the Standard render-kit for
this parameter include any valid "Accept header style" String that includes the String text/html
,
application/xhtml+xml
, application/xml
or text/xml
. This may change in a
future version. The RenderKit must support a value for this argument that comes straight from the Accept
HTTP header, and therefore requires parsing according to the specification of the Accept
header. Please
see Section 14.1 of RFC 2616 for the specification of
the Accept
header.characterEncoding
- such as "ISO-8859-1" for this ResponseWriter, or null
if the
RenderKit
should choose the best fit. Please see
the IANA for a list of character encodings.ResponseWriter
.java.lang.IllegalArgumentException
- if no matching content type can be found in contentTypeList
, no
appropriate content type can be found with the implementation dependent best fit algorithm, or no matching character
encoding can be found for the argument characterEncoding
.public abstract ResponseStream createResponseStream(java.io.OutputStream out)
Use the provided OutputStream
to create a new ResponseStream
instance.
out
- the OutputStream
around which to create the ResponseStream
ResponseStream
public java.util.Iterator<java.lang.String> getComponentFamilies()
Return an Iterator
over the component-family entries supported by this RenderKit
instance.
The default implementation of this method returns an empty Iterator
Iterator
over the component-family entriespublic java.util.Iterator<java.lang.String> getRendererTypes(java.lang.String componentFamily)
Return an Iterator
over the renderer-type entries for the given component-family.
If the specified componentFamily
is not known to this RenderKit
implementation, return an
empty Iterator
The default implementation of this method returns an empty Iterator
componentFamily
- one of the members of the Iterator
returned by getComponentFamilies()
.Iterator
over the renderer-typepublic void addClientBehaviorRenderer(java.lang.String type, ClientBehaviorRenderer renderer)
Register the specified ClientBehaviorRenderer
instance, associated with the specified component
type
, to the set of ClientBehaviorRenderer
s registered with this RenderKit
, replacing
any previously registered ClientBehaviorRenderer
for this type.
type
- type of the ClientBehaviorRenderer
to registerrenderer
- ClientBehaviorRenderer
instance we are registeringjava.lang.NullPointerException
- if type
or renderer
is nullpublic ClientBehaviorRenderer getClientBehaviorRenderer(java.lang.String type)
Return the ClientBehaviorRenderer
instance most recently registered for the specified type
, if
any; otherwise, return null
.
type
- type of the requested ClientBehaviorRenderer
instanceClientBehaviorRenderer
instancejava.lang.NullPointerException
- if type
is null
public java.util.Iterator<java.lang.String> getClientBehaviorRendererTypes()
Return an Iterator
over the ClientBehaviorRenderer
types.
Iterator
over the ClientBehaviorRenderer