public class RendererMap extends Object
ObjectRenderer
.Constructor and Description |
---|
RendererMap() |
Modifier and Type | Method and Description |
---|---|
static void |
addRenderer(RendererSupport repository,
String renderedClassName,
String renderingClassName)
Add a renderer to a hierarchy passed as parameter.
|
void |
clear() |
String |
findAndRender(Object o)
Find the appropriate renderer for the class type of the
o parameter. |
ObjectRenderer |
get(Class clazz)
Search the parents of
clazz for a renderer. |
ObjectRenderer |
get(Object o)
Syntactic sugar method that calls
get(Class) with the class of the object parameter. |
ObjectRenderer |
getDefaultRenderer() |
void |
put(Class clazz,
ObjectRenderer or)
Register an
ObjectRenderer for clazz . |
public static void addRenderer(RendererSupport repository, String renderedClassName, String renderingClassName)
public String findAndRender(Object o)
o
parameter. This is accomplished by calling the
get(Class)
method. Once a renderer is found, it is applied on the object o
and the result is
returned as a String
.public ObjectRenderer get(Object o)
get(Class)
with the class of the object parameter.public ObjectRenderer get(Class clazz)
clazz
for a renderer. The renderer closest in the hierarchy will be returned. If
no renderers could be found, then the default renderer is returned.
The search first looks for a renderer configured for clazz
. If a renderer could not be found, then the
search continues by looking at all the interfaces implemented by clazz
including the super-interfaces of
each interface. If a renderer cannot be found, then the search looks for a renderer defined for the parent
(superclass) of clazz
. If that fails, then all the interfaces implemented by the parent of
clazz
are searched and so on.
For example, if A0, A1, A2 are classes and X0, X1, X2, Y0, Y1 are interfaces where A2 extends A1 which in turn extends A0 and similarly X2 extends X1 which extends X0 and Y1 extends Y0. Let us also assume that A1 implements the Y0 interface and that A2 implements the X2 interface.
The table below shows the results returned by the get(A2.class)
method depending on the renderers added
to the map.
Added renderers | Value returned by get(A2.class) |
---|---|
A0Renderer
| A0Renderer
|
A0Renderer, A1Renderer
| A1Renderer
|
X0Renderer
| X0Renderer
|
A1Renderer, X0Renderer
| X0Renderer
|
This search algorithm is not the most natural, although it is particularly easy to implement. Future log4j versions may implement a more intuitive search algorithm. However, the present algorithm should be acceptable in the vast majority of circumstances.
public ObjectRenderer getDefaultRenderer()
public void clear()
public void put(Class clazz, ObjectRenderer or)
ObjectRenderer
for clazz
.Copyright © 1999-2024 The Apache Software Foundation. All Rights Reserved.
Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, the Apache Logging project logo, and the Apache Log4j logo are trademarks of The Apache Software Foundation.