classUtils.javassist.reflect
Class Reflection

java.lang.Object
  extended by classUtils.javassist.reflect.Reflection
All Implemented Interfaces:
Translator

public class Reflection
extends java.lang.Object
implements Translator

The class implementing the reflection mechanism.

This class is used with ClassPool. Note that it implements an interface javassist.Translator.

If a class is reflective, then all the method invocations on every instance of that class are intercepted by the runtime metaobject controlling that instance. To do this, the original class file representing a reflective class:

is modified so that it represents a class:

See Also:
ClassMetaobject, Metaobject, Loader, Compiler, ClassPool, Translator

Constructor Summary
Reflection()
          Constructs a new Reflection object.
 
Method Summary
 boolean makeReflective(java.lang.Class clazz, java.lang.Class metaobject, java.lang.Class metaclass)
          Produces a reflective class.
 boolean makeReflective(CompileTimeClass clazz, CompileTimeClass metaobject, CompileTimeClass metaclass)
          Produces a reflective class.
 boolean makeReflective(java.lang.String classname, java.lang.String metaobject, java.lang.String metaclass)
          Produces a reflective class.
 void onWrite(ClassPool pool, java.lang.String classname)
          Inserts hooks for intercepting accesses to the fields declared in reflective classes.
 void start(ClassPool pool)
          Initializes.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Reflection

public Reflection()
Constructs a new Reflection object.

Method Detail

start

public void start(ClassPool pool)
           throws NotFoundException
Initializes.

Specified by:
start in interface Translator
Parameters:
pool - the ClassPool that this translator is attached to.
Throws:
NotFoundException
See Also:
ClassPool.ClassPool(ClassPool,Translator), ClassPool.getDefault(Translator)

onWrite

public void onWrite(ClassPool pool,
                    java.lang.String classname)
             throws CannotCompileException,
                    NotFoundException
Inserts hooks for intercepting accesses to the fields declared in reflective classes.

Specified by:
onWrite in interface Translator
Parameters:
pool - the ClassPool that this translator is attached to.
classname - a fully-qualified class name
Throws:
CannotCompileException
NotFoundException
See Also:
ClassPool.writeFile(String), ClassPool.writeFile(String, String), ClassPool.write(String), ClassPool.write(String,DataOutputStream)

makeReflective

public boolean makeReflective(java.lang.String classname,
                              java.lang.String metaobject,
                              java.lang.String metaclass)
                       throws CannotCompileException,
                              NotFoundException
Produces a reflective class. If the super class is also made reflective, it must be done before the sub class.

Parameters:
classname - the name of the reflective class
metaobject - the class name of metaobjects.
metaclass - the class name of the class metaobject.
Returns:
false if the class is already reflective.
Throws:
CannotCompileException
NotFoundException
See Also:
Metaobject, ClassMetaobject

makeReflective

public boolean makeReflective(java.lang.Class clazz,
                              java.lang.Class metaobject,
                              java.lang.Class metaclass)
                       throws CannotCompileException,
                              NotFoundException
Produces a reflective class. If the super class is also made reflective, it must be done before the sub class.

Parameters:
clazz - the reflective class.
metaobject - the class of metaobjects. It must be a subclass of Metaobject.
metaclass - the class of the class metaobject. It must be a subclass of ClassMetaobject.
Returns:
false if the class is already reflective.
Throws:
CannotCompileException
NotFoundException
See Also:
Metaobject, ClassMetaobject

makeReflective

public boolean makeReflective(CompileTimeClass clazz,
                              CompileTimeClass metaobject,
                              CompileTimeClass metaclass)
                       throws CannotCompileException,
                              NotFoundException
Produces a reflective class. It modifies the given CtClass object and makes it reflective. If the super class is also made reflective, it must be done before the sub class.

Parameters:
clazz - the reflective class.
metaobject - the class of metaobjects. It must be a subclass of Metaobject.
metaclass - the class of the class metaobject. It must be a subclass of ClassMetaobject.
Returns:
false if the class is already reflective.
Throws:
CannotCompileException
NotFoundException
See Also:
Metaobject, ClassMetaobject