org.apache.velocity.app
Class FieldMethodizer
java.lang.Object
org.apache.velocity.app.FieldMethodizer
public class FieldMethodizer
extends java.lang.Object
This is a small utility class allow easy access to static fields in a class,
such as string constants. Velocity will not introspect for class
fields (and won't in the future :), but writing setter/getter methods to do
this really is a pain, so use this if you really have
to access fields.
The idea it so enable access to the fields just like you would in Java.
For example, in Java, you would access a static field like
MyClass.STRING_CONSTANT
and that is the same thing we are trying to allow here.
So to use in your Java code, do something like this :
context.put("runtime", new FieldMethodizer( "org.apache.velocity.runtime.Runtime" ));
and then in your template, you can access any of your static fields in this way :
$runtime.RUNTIME_LOG_WARN_STACKTRACE
Right now, this class only methodizes
public static
fields. It seems
that anything else is too dangerous. This class is for convenience accessing
'constants'. If you have fields that aren't
static
it may be better
to handle them by explicitly placing them into the context.
$Id: FieldMethodizer.java,v 1.3.14.1 2004/03/03 23:22:53 geirm Exp $private HashMap | classHash - Hold the class objects by field name
|
private HashMap | fieldHash - Hold the field objects by field name
|
FieldMethodizer() - Allow object to be initialized without any data.
|
FieldMethodizer(Object o) - Constructor that takes as it's arg a living
object to methodize.
|
FieldMethodizer(String s) - Constructor that takes as it's arg the name of the class
to methodize.
|
void | addObject(Object o) - Add an Object to methodize
|
void | addObject(String s) - Add the Name of the class to methodize
|
Object | get(String fieldName) - Accessor method to get the fields by name.
|
private void | inspect(Class clas) - Method that retrieves all public static fields
in the class we are methodizing.
|
classHash
private HashMap classHash
Hold the class objects by field name
fieldHash
private HashMap fieldHash
Hold the field objects by field name
FieldMethodizer
public FieldMethodizer()
Allow object to be initialized without any data. You would use
addObject() to add data later.
FieldMethodizer
public FieldMethodizer(Object o)
Constructor that takes as it's arg a living
object to methodize. Note that it will still
only methodized the public static fields of
the class.
FieldMethodizer
public FieldMethodizer(String s)
Constructor that takes as it's arg the name of the class
to methodize.
s
- Name of class to methodize.
addObject
public void addObject(Object o)
throws Exception
Add an Object to methodize
addObject
public void addObject(String s)
throws Exception
Add the Name of the class to methodize
get
public Object get(String fieldName)
Accessor method to get the fields by name.
fieldName
- Name of static field to retrieve
- The value of the given field.
inspect
private void inspect(Class clas)
Method that retrieves all public static fields
in the class we are methodizing.
Copyright B) 2002 Apache Software Foundation. All Rights Reserved.