Class ClassTool
- java.lang.Object
-
- org.apache.velocity.tools.generic.SafeConfig
-
- org.apache.velocity.tools.generic.ClassTool
-
@DefaultKey("class") public class ClassTool extends SafeConfig
This tool is meant to simplify reflective lookup of information about a
Class
and itsField
s,Method
s, andConstructor
s. This is ideally aimed at those wishing to generate documentation, demo code, or other content based on runtime reflection of a specified Class or Classes. It was not designed with reflective execution of code in mind and thus provides no facilities for code execution, nor direct access to the actual methods, constructors or fields of the class being inspected.Example tools.xml config: <tools> <toolbox scope="application"> <tool class="org.apache.velocity.tools.generic.ClassTool" inspect="com.org.Foo"/> </toolbox> </tools>
If no Class to be inspected is specified, the default is java.lang.Object.
- Since:
- VelocityTools 2.0
- Version:
- $Id: ClassTool.java 463298 2006-10-12 16:10:32Z henning $
- Author:
- Nathan Bubna
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ClassTool.CallableSub<T extends ClassTool.CallableSub>
static class
ClassTool.ConstructorSub
A simplified wrapping interface for inspecting features of aConstructor
in an inspected Class.static class
ClassTool.FieldSub
A simplified wrapping interface for inspecting features of aField
in an inspected Class.static class
ClassTool.MethodSub
A simplified wrapping interface for inspecting features of aMethod
in an inspected Class.static class
ClassTool.Sub<T extends ClassTool.Sub>
-
Field Summary
Fields Modifier and Type Field Description protected java.util.List<ClassTool.ConstructorSub>
constructors
protected java.util.List<ClassTool.FieldSub>
fields
static java.lang.String
INSPECT_KEY
protected org.apache.velocity.runtime.log.Log
log
protected java.util.List<ClassTool.MethodSub>
methods
static java.lang.String
SHOW_DEPRECATED_KEY
private boolean
showDeprecated
protected java.lang.Class
type
-
Fields inherited from class org.apache.velocity.tools.generic.SafeConfig
LOCK_CONFIG_KEY, OLD_LOCK_CONFIG_KEY, SAFE_MODE_KEY
-
-
Constructor Summary
Constructors Modifier Constructor Description ClassTool()
Creates an instance with target type ofObject
.protected
ClassTool(ClassTool tool, java.lang.Class type)
Creates a new instance that inspects the specified type and otherwise shares the configuration values of the specified "parent" ClassTool instance.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
addType(java.util.Set<java.lang.Class> types, java.lang.Class type)
protected void
configure(ValueParser values)
Does the actual configuration.java.util.List<java.lang.annotation.Annotation>
getAnnotations()
Returns theAnnotation
s of the Class being inspected.java.util.List<ClassTool.ConstructorSub>
getConstructors()
Returns aList
ofClassTool.ConstructorSub
s for each constructor declared constructor in the inspected class.java.util.List<ClassTool.FieldSub>
getFields()
Returns aList
ofClassTool.FieldSub
s for each field declared field in the inspected class.java.lang.String
getFullName()
Returns the fully-qualified name for the inspected Class.java.util.List<ClassTool.MethodSub>
getMethods()
Returns aList
ofClassTool.MethodSub
s for each method declared method in the inspected class.java.lang.String
getName()
Returns the simple name (i.e.java.lang.String
getPackage()
Returns the name of the package to which the inspected Class belongs.boolean
getShowDeprecated()
Returns the current showDeprecated setting.ClassTool
getSuper()
Returns a new ClassTool instance that is inspecting the superclass of the Class being inspected by this instance.java.lang.Class
getType()
Returns theClass
being inspected by this instance.java.util.Set<java.lang.Class>
getTypes()
Returns aSet
of allClass
es that are part of the signatures (i.e.ClassTool
inspect(java.lang.Class type)
Returns a new ClassTool instance that is inspecting the the specifiedClass
.ClassTool
inspect(java.lang.Object obj)
Returns a new ClassTool instance that is inspecting the Class of the specifiedObject
.ClassTool
inspect(java.lang.String name)
Returns a new ClassTool instance that is inspecting the Class with the specified name.boolean
isAbstract()
Returns true if the inspected Class is declared abstract.boolean
isDeprecated()
Returns true if the inspected Class has been deprecated.protected static boolean
isDeprecated(java.lang.reflect.AnnotatedElement element)
boolean
isFinal()
Returns true if the inspected Class is declared final.boolean
isInterface()
Returns true if the inspected Class is an interface.boolean
isPrivate()
Returns true if the inspected Class is declared private.boolean
isProtected()
Returns true if the inspected Class is declared protected.boolean
isPublic()
Returns true if the inspected Class is declared public.boolean
isStatic()
Returns true if the inspected Class is an inner class that has been declared static or is a standard outer class..boolean
isStrict()
Returns true if the inspected Class is declared strictfp (uses strict floating point math).protected void
setType(java.lang.Class type)
boolean
supportsNewInstance()
Returns true if a call to newInstance() on the Class being inspected is successful; otherwise returns false.private java.lang.Class
toClass(java.lang.String name)
java.lang.String
toString()
-
Methods inherited from class org.apache.velocity.tools.generic.SafeConfig
configure, isConfigLocked, isSafeMode, setLockConfig, setSafeMode
-
-
-
-
Field Detail
-
INSPECT_KEY
public static final java.lang.String INSPECT_KEY
- See Also:
- Constant Field Values
-
SHOW_DEPRECATED_KEY
public static final java.lang.String SHOW_DEPRECATED_KEY
- See Also:
- Constant Field Values
-
log
protected org.apache.velocity.runtime.log.Log log
-
type
protected java.lang.Class type
-
methods
protected java.util.List<ClassTool.MethodSub> methods
-
constructors
protected java.util.List<ClassTool.ConstructorSub> constructors
-
fields
protected java.util.List<ClassTool.FieldSub> fields
-
showDeprecated
private boolean showDeprecated
-
-
Constructor Detail
-
ClassTool
public ClassTool()
Creates an instance with target type ofObject
.
-
ClassTool
protected ClassTool(ClassTool tool, java.lang.Class type)
Creates a new instance that inspects the specified type and otherwise shares the configuration values of the specified "parent" ClassTool instance.
-
-
Method Detail
-
configure
protected void configure(ValueParser values)
Description copied from class:SafeConfig
Does the actual configuration. This is protected, so subclasses may share the same ValueParser and call configure at any time, while preventing templates from doing so when configure(Map) is locked.- Overrides:
configure
in classSafeConfig
-
toClass
private java.lang.Class toClass(java.lang.String name)
-
setType
protected void setType(java.lang.Class type)
-
isDeprecated
protected static boolean isDeprecated(java.lang.reflect.AnnotatedElement element)
-
getShowDeprecated
public boolean getShowDeprecated()
Returns the current showDeprecated setting.
-
getType
public java.lang.Class getType()
Returns theClass
being inspected by this instance.
-
inspect
public ClassTool inspect(java.lang.String name)
Returns a new ClassTool instance that is inspecting the Class with the specified name. If the specified Class cannot be found, then this will returnnull
. All other configuration settings will be copied to the new instance.
-
inspect
public ClassTool inspect(java.lang.Object obj)
Returns a new ClassTool instance that is inspecting the Class of the specifiedObject
. If the specified object is null, then this will returnnull
. All other configuration settings will be copied to the new instance.
-
getSuper
public ClassTool getSuper()
Returns a new ClassTool instance that is inspecting the superclass of the Class being inspected by this instance. If the current inspectee has no super class, then this will returnnull
. All other configuration settings will be copied to the new instance.
-
inspect
public ClassTool inspect(java.lang.Class type)
Returns a new ClassTool instance that is inspecting the the specifiedClass
. If the specified class is null, then this will returnnull
. All other configuration settings will be copied to the new instance. IfSafeConfig.isSafeMode()
istrue
and the specified Class is not declaredpublic
, then this will returnnull
.
-
getPackage
public java.lang.String getPackage()
Returns the name of the package to which the inspected Class belongs.
-
getName
public java.lang.String getName()
Returns the simple name (i.e. full name with package name removed) of the inspected Class.
-
getFullName
public java.lang.String getFullName()
Returns the fully-qualified name for the inspected Class.
-
supportsNewInstance
public boolean supportsNewInstance()
Returns true if a call to newInstance() on the Class being inspected is successful; otherwise returns false. Unlike calling newInstance() directly from a template, this will not throw an Exception if it fails, as all Exceptions are caught.
-
isDeprecated
public boolean isDeprecated()
Returns true if the inspected Class has been deprecated.
-
isPublic
public boolean isPublic()
Returns true if the inspected Class is declared public.
-
isProtected
public boolean isProtected()
Returns true if the inspected Class is declared protected.
-
isPrivate
public boolean isPrivate()
Returns true if the inspected Class is declared private.
-
isStatic
public boolean isStatic()
Returns true if the inspected Class is an inner class that has been declared static or is a standard outer class..
-
isFinal
public boolean isFinal()
Returns true if the inspected Class is declared final.
-
isInterface
public boolean isInterface()
Returns true if the inspected Class is an interface.
-
isStrict
public boolean isStrict()
Returns true if the inspected Class is declared strictfp (uses strict floating point math).
-
isAbstract
public boolean isAbstract()
Returns true if the inspected Class is declared abstract.
-
getMethods
public java.util.List<ClassTool.MethodSub> getMethods()
Returns aList
ofClassTool.MethodSub
s for each method declared method in the inspected class. However, in safe mode (which *is* the default), this will only return the public methods. You must configure safe mode to be off to receive a list of all methods.
-
getConstructors
public java.util.List<ClassTool.ConstructorSub> getConstructors()
Returns aList
ofClassTool.ConstructorSub
s for each constructor declared constructor in the inspected class. However, in safe mode (which *is* the default), this will only return the public constructors. You must configure safe mode to be off to receive a list of all constructors.
-
getFields
public java.util.List<ClassTool.FieldSub> getFields()
Returns aList
ofClassTool.FieldSub
s for each field declared field in the inspected class. However, in safe mode (which *is* the default), this will only return the public fields. You must configure safe mode to be off to receive a list of all fields.
-
getTypes
public java.util.Set<java.lang.Class> getTypes()
Returns aSet
of allClass
es that are part of the signatures (i.e. parameters or return types) of the inspected Class's methods, constructors and fields.
-
addType
private void addType(java.util.Set<java.lang.Class> types, java.lang.Class type)
-
getAnnotations
public java.util.List<java.lang.annotation.Annotation> getAnnotations()
Returns theAnnotation
s of the Class being inspected.
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-