@DefaultKey(value="class") @ValidScope(value="application") public class ClassTool extends SafeConfig
This tool is meant to simplify reflective lookup of information about
a Class
and its Field
s, Method
s, and Constructor
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.
Modifier and Type | Class and Description |
---|---|
static class |
ClassTool.CallableSub<T extends ClassTool.CallableSub> |
static class |
ClassTool.ConstructorSub
A simplified wrapping interface for inspecting features
of a
Constructor in an inspected Class. |
static class |
ClassTool.FieldSub
A simplified wrapping interface for inspecting features
of a
Field in an inspected Class. |
static class |
ClassTool.MethodSub
A simplified wrapping interface for inspecting features
of a
Method in an inspected Class. |
static class |
ClassTool.Sub<T extends ClassTool.Sub> |
Modifier and Type | Field and Description |
---|---|
protected List<ClassTool.ConstructorSub> |
constructors |
protected List<ClassTool.FieldSub> |
fields |
static String |
INSPECT_KEY |
protected List<ClassTool.MethodSub> |
methods |
static String |
SHOW_DEPRECATED_KEY |
protected Class |
type |
LOCK_CONFIG_KEY, log, LOGGER_NAME_KEY, SAFE_MODE_KEY, USE_CLASS_LOGGER_KEY
Modifier | Constructor and Description |
---|---|
|
ClassTool()
Creates an instance with target type of
Object . |
protected |
ClassTool(ClassTool tool,
Class type)
Creates a new instance that inspects the specified type
and otherwise shares the configuration values of the specified "parent"
ClassTool instance.
|
Modifier and Type | Method and Description |
---|---|
protected void |
configure(ValueParser values)
Configure this tool
|
List<Annotation> |
getAnnotations()
Returns the
Annotation s of the Class being inspected. |
List<ClassTool.ConstructorSub> |
getConstructors()
Returns a
List of ClassTool.ConstructorSub s for each
constructor declared constructor in the inspected class. |
List<ClassTool.FieldSub> |
getFields()
Returns a
List of ClassTool.FieldSub s for each
field declared field in the inspected class. |
String |
getFullName()
Returns the fully-qualified name for the inspected Class.
|
List<ClassTool.MethodSub> |
getMethods()
Returns a
List of ClassTool.MethodSub s for each
method declared method in the inspected class. |
String |
getName()
Returns the simple name (i.e.
|
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.
|
Class |
getType()
Returns the
Class being inspected by this instance. |
Set<Class> |
getTypes()
|
ClassTool |
inspect(Class type)
Returns a new ClassTool instance that is inspecting the
the specified
Class . |
ClassTool |
inspect(Object obj)
Returns a new ClassTool instance that is inspecting the
Class of the specified
Object . |
ClassTool |
inspect(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(AnnotatedElement element)
Check if an annotation deprecates its class
|
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(Class type)
Set the class to inspect
|
boolean |
supportsNewInstance()
Returns true if a call to newInstance() on the Class being
inspected is successful; otherwise returns false.
|
String |
toString() |
configure, getLog, initLogger, isConfigLocked, isSafeMode, setLockConfig, setSafeMode
public static final String INSPECT_KEY
public static final String SHOW_DEPRECATED_KEY
protected Class type
protected List<ClassTool.MethodSub> methods
protected List<ClassTool.ConstructorSub> constructors
protected List<ClassTool.FieldSub> fields
public ClassTool()
Object
.protected void configure(ValueParser values)
configure
in class SafeConfig
values
- configuration valuesprotected void setType(Class type)
type
- the class to inspectprotected static boolean isDeprecated(AnnotatedElement element)
element
- annotationpublic boolean getShowDeprecated()
public Class getType()
Class
being inspected by this instance.public ClassTool inspect(String name)
null
. All other
configuration settings will be copied to the new instance.name
- class namepublic ClassTool inspect(Object obj)
Object
. If the specified object
is null, then this will return null
. All other
configuration settings will be copied to the new instance.obj
- object instance to inspectpublic ClassTool getSuper()
null
. All other
configuration settings will be copied to the new instance.public ClassTool inspect(Class type)
Class
. If the specified class
is null, then this will return null
. All other
configuration settings will be copied to the new instance.
If SafeConfig.isSafeMode()
is true
and the specified Class
is not declared public
, then this will return
null
.type
- class to inspectpublic String getPackage()
public String getName()
public String getFullName()
public boolean supportsNewInstance()
public boolean isDeprecated()
public boolean isPublic()
public boolean isProtected()
public boolean isPrivate()
public boolean isStatic()
public boolean isFinal()
public boolean isInterface()
public boolean isStrict()
public boolean isAbstract()
public List<ClassTool.MethodSub> getMethods()
List
of ClassTool.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.public List<ClassTool.ConstructorSub> getConstructors()
List
of ClassTool.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.public List<ClassTool.FieldSub> getFields()
List
of ClassTool.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.public Set<Class> getTypes()
Set
of all Class
es that are
part of the signatures (i.e. parameters or return types)
of the inspected Class's methods, constructors and fields.public List<Annotation> getAnnotations()
Annotation
s of the Class being inspected.Copyright © 2002–2021 The Apache Software Foundation. All rights reserved.