public class TracingInterceptor
extends Object
implements Interceptor
This Interceptor traces method calls on the proxied object to a log. By default, the log is simply
System.out; however, that can be
changed with the setWriter(Writer) method.
A message will be written to output before a method is invoked and after a method is invoked. If methods are nested, and invoke one another, then indentation of two spaces is written.
Here is an example usage on the ArrayList object:
def proxy = ProxyMetaClass.getInstance(ArrayList.class)
proxy.interceptor = new TracingInterceptor()
proxy.use {
def list = [1, 2, 3]
assert 3 == list.size()
assert list.contains(1)
}
Running this code produces this output:
before java.util.ArrayList.size()
after java.util.ArrayList.size()
before java.util.ArrayList.contains(java.lang.Integer)
after java.util.ArrayList.contains(java.lang.Integer)
| Type Params | Return Type | Name and description |
|---|---|---|
|
public Object |
afterInvoke(Object object, String methodName, Object[] arguments, Object result)* This code is executed after the method is optionally called. *
|
|
public Object |
beforeInvoke(Object object, String methodName, Object[] arguments)* This code is executed before the method is optionally called. *
|
|
public boolean |
doInvoke()*
|
|
public Writer |
getWriter()Returns the writer associated with this interceptor. |
|
public void |
setWriter(Writer writer)Changes the writer associated with this interceptor. |
|
protected void |
write(Object object, String methodName, Object[] arguments, String origin)Writes a formatted trace line for the supplied invocation stage. |
|
protected void |
writeInfo(Class aClass, String methodName, Object[] arguments)Writes a trace line describing the intercepted method invocation. |
Writer used to emit trace output.
* This code is executed after the method is optionally called. *
object - receiver object for the called method
*methodName - name of the called method
*arguments - arguments to the called method
*result - result of the executed method call or result of beforeInvoke if method was not called
** This code is executed before the method is optionally called. *
object - receiver object for the method call
*methodName - name of the method to call
*arguments - arguments to the method call
**
Returns the writer associated with this interceptor.
Changes the writer associated with this interceptor.
Writes a formatted trace line for the supplied invocation stage.
object - the receiver objectmethodName - the invoked method namearguments - the invocation argumentsorigin - the trace prefix to writeWrites a trace line describing the intercepted method invocation.
aClass - the declaring or receiver class to reportmethodName - the intercepted method namearguments - the intercepted arguments