public class ExprEditor extends Object
The users can define a subclass of this class to customize how to modify a method body. The overall architecture is similar to the strategy pattern.
If instrument() is called in
 CtMethod, the method body is scanned from the beginning
 to the end.
 Whenever an expression, such as a method call and a new
 expression (object creation),
 is found, edit() is called in ExprEdit.
 edit() can inspect and modify the given expression.
 The modification is reflected on the original method body.  If
 edit() does nothing, the original method body is not
 changed.
 
The following code is an example:
 CtMethod cm = ...;
 cm.instrument(new ExprEditor() {
     public void edit(MethodCall m) throws CannotCompileException {
         if (m.getClassName().equals("Point")) {
             System.out.println(m.getMethodName() + " line: "
                                + m.getLineNumber());
     }
 });
 
 This code inspects all method calls appearing in the method represented
 by cm and it prints the names and the line numbers of the
 methods declared in class Point.  This code does not modify
 the body of the method represented by cm.  If the method
 body must be modified, call replace()
 in MethodCall.
| Constructor and Description | 
|---|
| ExprEditor()Default constructor. | 
| Modifier and Type | Method and Description | 
|---|---|
| boolean | doit(CtClass clazz,
    MethodInfo minfo)Undocumented method. | 
| void | edit(Cast c)Edits an expression for explicit type casting (overridable). | 
| void | edit(ConstructorCall c)Edits a constructor call (overridable). | 
| void | edit(FieldAccess f)Edits a field-access expression (overridable). | 
| void | edit(Handler h)Edits a catch clause (overridable). | 
| void | edit(Instanceof i)Edits an instanceof expression (overridable). | 
| void | edit(MethodCall m)Edits a method call (overridable). | 
| void | edit(NewArray a)Edits an expression for array creation (overridable). | 
| void | edit(NewExpr e)Edits a new expression (overridable). | 
public boolean doit(CtClass clazz, MethodInfo minfo) throws CannotCompileException
CannotCompileExceptionpublic void edit(NewExpr e) throws CannotCompileException
e - the new expression creating an object.CannotCompileExceptionpublic void edit(NewArray a) throws CannotCompileException
a - the new expression for creating an array.CannotCompileExceptionpublic void edit(MethodCall m) throws CannotCompileException
CannotCompileExceptionpublic void edit(ConstructorCall c) throws CannotCompileException
super() or this()
 included in a constructor body.
 The default implementation performs nothing.CannotCompileExceptionedit(NewExpr)public void edit(FieldAccess f) throws CannotCompileException
CannotCompileExceptionpublic void edit(Instanceof i) throws CannotCompileException
CannotCompileExceptionpublic void edit(Cast c) throws CannotCompileException
CannotCompileExceptionpublic void edit(Handler h) throws CannotCompileException
CannotCompileExceptionCopyright © 2016 Shigeru Chiba, www.javassist.org. All Rights Reserved.