org.apache.velocity.tools.generic

## Class ClassTool

- java.lang.Object
- - org.apache.velocity.tools.generic.SafeConfig
  - - org.apache.velocity.tools.generic.ClassTool

    @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.

Since:
  VelocityTools 2.0
Version:
  $Id: ClassTool.java 463298 2006-10-12 16:10:32Z henning $
Author:
  Nathan Bubna

### Nested Class Summary

Nested Classes
`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>`

### Field Summary

Fields
`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`

### Fields inherited from class org.apache.velocity.tools.generic.SafeConfig

`LOCK_CONFIG_KEY, log, LOGGER_NAME_KEY, SAFE_MODE_KEY, USE_CLASS_LOGGER_KEY`

### Constructor Summary

Constructors
`` `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.

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`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()` Returns a `Set` of all `Class`es that are part of the signatures (i.e.
`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()`

### Methods inherited from class org.apache.velocity.tools.generic.SafeConfig

`configure, getLog, initLogger, isConfigLocked, isSafeMode, setLockConfig, setSafeMode`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Field Detail

#### INSPECT_KEY

    public static final String INSPECT_KEY

See Also:
  Constant Field Values

#### SHOW_DEPRECATED_KEY

    public static final String SHOW_DEPRECATED_KEY

See Also:
  Constant Field Values

#### type

    protected Class type

#### methods

    protected List<ClassTool.MethodSub> methods

#### constructors

    protected List<ClassTool.ConstructorSub> constructors

#### fields

    protected List<ClassTool.FieldSub> fields

### Constructor Detail

#### ClassTool

    public ClassTool()

Creates an instance with target type of `Object`.

#### ClassTool

    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.

Parameters:
  `tool` - parent class tool
  `type` - class to inspect

### Method Detail

#### configure

    protected void configure(ValueParser values)

Configure this tool

Overrides:
  `configure` in class `SafeConfig`
Parameters:
  `values` - configuration values

#### setType

    protected void setType(Class type)

Set the class to inspect

Parameters:
  `type` - the class to inspect

#### isDeprecated

    protected static boolean isDeprecated(AnnotatedElement element)

Check if an annotation deprecates its class

Parameters:
  `element` - annotation
Returns:
  deprecation status

#### getShowDeprecated

    public boolean getShowDeprecated()

Returns the current showDeprecated setting.

Returns:
  flag value

#### getType

    public Class getType()

Returns the `Class` being inspected by this instance.

Returns:
  inspected class

#### inspect

    public ClassTool inspect(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 return `null`. All other configuration settings will be copied to the new instance.

Parameters:
  `name` - class name
Returns:
  new class tool

#### inspect

    public ClassTool inspect(Object obj)

Returns a new ClassTool instance that is inspecting the Class of the specified `Object`. If the specified object is null, then this will return `null`. All other configuration settings will be copied to the new instance.

Parameters:
  `obj` - object instance to inspect
Returns:
  new class tool

#### 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 return `null`. All other configuration settings will be copied to the new instance.

Returns:
  parent class tool

#### inspect

    public ClassTool inspect(Class type)

Returns a new ClassTool instance that is inspecting the the specified `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`.

Parameters:
  `type` - class to inspect
Returns:
  new class tool

#### getPackage

    public String getPackage()

Returns the name of the package to which the inspected Class belongs.

Returns:
  package name

#### getName

    public String getName()

Returns the simple name (i.e. full name with package name removed) of the inspected Class.

Returns:
  inspected class simple name

#### getFullName

    public String getFullName()

Returns the fully-qualified name for the inspected Class.

Returns:
  inspected class name

#### 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.

Returns:
  new instances supported or not

#### isDeprecated

    public boolean isDeprecated()

Returns true if the inspected Class has been deprecated.

Returns:
  deprecation status

#### isPublic

    public boolean isPublic()

Returns true if the inspected Class is declared public.

Returns:
  whether the inspected class is public

#### isProtected

    public boolean isProtected()

Returns true if the inspected Class is declared protected.

Returns:
  whether the inspected class is protected

#### isPrivate

    public boolean isPrivate()

Returns true if the inspected Class is declared private.

Returns:
  whether the inspected class is 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..

Returns:
  whether the inspected class is static

#### isFinal

    public boolean isFinal()

Returns true if the inspected Class is declared final.

Returns:
  whether the inspected class is final

#### isInterface

    public boolean isInterface()

Returns true if the inspected Class is an interface.

Returns:
  whether the inspected class is an interface

#### isStrict

    public boolean isStrict()

Returns true if the inspected Class is declared strictfp (uses strict floating point math).

Returns:
  whether the inspected class is strictfp

#### isAbstract

    public boolean isAbstract()

Returns true if the inspected Class is declared abstract.

Returns:
  whether the inspected class is abstract

#### getMethods

    public List<ClassTool.MethodSub> getMethods()

Returns a `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.

Returns:
  methods inspectors list

#### getConstructors

    public List<ClassTool.ConstructorSub> getConstructors()

Returns a `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.

Returns:
  constructors inspectors list

#### getFields

    public List<ClassTool.FieldSub> getFields()

Returns a `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.

Returns:
  fields inspectors list

#### getTypes

    public Set<Class> getTypes()

Returns a `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.

Returns:
  referenced classes set

#### getAnnotations

    public List<Annotation> getAnnotations()

Returns the `Annotation`s of the Class being inspected.

Returns:
  annotation list

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`
Returns:
  string representation of inspected class