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 methodmethodName - name of the called methodarguments - arguments to the called methodresult - result of the executed method call or result of beforeInvoke if method was not calledThis code is executed before the method is optionally called.
object - receiver object for the method callmethodName - name of the method to callarguments - 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