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
and that is the same thing we are trying to allow here.MyClass.STRING_CONSTANT
So to use in your Java code, do something like this :
and then in your template, you can access any of your static fields in this way :context.put("runtime", new FieldMethodizer( "org.apache.velocity.runtime.Runtime" ));
$runtime.COUNTER_NAME
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'tstatic
it may be better to handle them by explicitly placing them into the context.- Version:
- $Id: FieldMethodizer.java 652755 2008-05-02 04:00:58Z nbubna $
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.HashMap
fieldHash
Hold the field objects by field name
-
Constructor Summary
Constructors Constructor Description FieldMethodizer()
Allow object to be initialized without any data.FieldMethodizer(java.lang.Object o)
Constructor that takes as it's arg a living object to methodize.FieldMethodizer(java.lang.String s)
Constructor that takes as it's arg the name of the class to methodize.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addObject(java.lang.Object o)
Add an Object to methodizevoid
addObject(java.lang.String s)
Add the Name of the class to methodizejava.lang.Object
get(java.lang.String fieldName)
Accessor method to get the fields by name.private void
inspect(java.lang.Class clas)
Method that retrieves all public static fields in the class we are methodizing.
-
-
-
Constructor Detail
-
FieldMethodizer
public FieldMethodizer()
Allow object to be initialized without any data. You would use addObject() to add data later.
-
FieldMethodizer
public FieldMethodizer(java.lang.String s)
Constructor that takes as it's arg the name of the class to methodize.- Parameters:
s
- Name of class to methodize.
-
FieldMethodizer
public FieldMethodizer(java.lang.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.- Parameters:
o
- Name of class to methodize.
-
-
Method Detail
-
addObject
public void addObject(java.lang.String s) throws java.lang.Exception
Add the Name of the class to methodize- Parameters:
s
-- Throws:
java.lang.Exception
-
addObject
public void addObject(java.lang.Object o) throws java.lang.Exception
Add an Object to methodize- Parameters:
o
-- Throws:
java.lang.Exception
-
get
public java.lang.Object get(java.lang.String fieldName)
Accessor method to get the fields by name.- Parameters:
fieldName
- Name of static field to retrieve- Returns:
- The value of the given field.
-
inspect
private void inspect(java.lang.Class clas)
Method that retrieves all public static fields in the class we are methodizing.
-
-