org.apache.commons.configuration.interpol
public class ConstantLookup extends StrLookup
A specialized lookup implementation that allows access to constant fields of classes.
Sometimes it is necessary in a configuration file to refer to a constant
defined in a class. This can be done with this lookup implementation.
Variable names passed in must be of the form
mypackage.MyClass.FIELD
. The lookup()
method
will split the passed in string at the last dot, separating the fully
qualified class name and the name of the constant (i.e. static final)
member field. Then the class is loaded and the field's value is obtained
using reflection.
Once retrieved values are cached for fast access. This class is thread-safe. It can be used as a standard (i.e. global) lookup object and serve multiple clients concurrently.
Since: 1.4
Version: $Id: ConstantLookup.java 490375 2006-12-26 21:28:04Z oheger $
Field Summary | |
---|---|
static Map | constantCache An internally used cache for already retrieved values. |
static char | FIELD_SEPRATOR Constant for the field separator. |
Log | log The logger. |
Method Summary | |
---|---|
static void | clear()
Clears the shared cache with the so far resolved constants. |
protected Class | fetchClass(String className)
Loads the class with the specified name. |
String | lookup(String var)
Tries to resolve the specified variable. |
protected Object | resolveField(String className, String fieldName)
Determines the value of the specified constant member field of a class.
|
getClass()
method of
Commons Lang's
ClassUtils
.
Parameters: className the name of the class to be loaded
Returns: the corresponding class object
Throws: ClassNotFoundException if the class cannot be loaded
resolveField()
method and pass in the name of the class
and the field.
Parameters: var the name of the variable to be resolved
Returns: the value of this variable or null if it cannot be resolved
fetchClass()
to obtain the
java.lang.Class
object for the target class. Then it will
use reflection to obtain the field's value. For this to work the field
must be accessable.
Parameters: className the name of the class fieldName the name of the member field of that class to read
Returns: the field's value
Throws: Exception if an error occurs