MCPcopy Index your code
hub / github.com/apache/groovy / TracingInterceptor

Class TracingInterceptor

src/main/java/groovy/lang/TracingInterceptor.java:52–142  ·  view source on GitHub ↗

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 invoke

Source from the content-addressed store, hash-verified

50 * </pre>
51 */
52public class TracingInterceptor implements Interceptor {
53
54 /**
55 * Writer used to emit trace output.
56 */
57 protected Writer writer = new PrintWriter(System.out);
58 private int indent = 0;
59
60 /**
61 * Returns the writer associated with this interceptor.
62 */
63 public Writer getWriter() {
64 return writer;
65 }
66
67 /**
68 * Changes the writer associated with this interceptor.
69 */
70 public void setWriter(Writer writer) {
71 this.writer = writer;
72 }
73
74 /**
75 * {@inheritDoc}
76 */
77 @Override
78 public Object beforeInvoke(Object object, String methodName, Object[] arguments) {
79 write(object, methodName, arguments, "before");
80 indent++ ;
81 return null;
82 }
83
84 /**
85 * {@inheritDoc}
86 */
87 @Override
88 public Object afterInvoke(Object object, String methodName, Object[] arguments, Object result) {
89 indent--;
90 write(object, methodName, arguments, "after ");
91 return result;
92 }
93
94 /**
95 * {@inheritDoc}
96 */
97 @Override
98 public boolean doInvoke() {
99 return true;
100 }
101 private String indent(){
102 return " ".repeat(Math.max(0, indent));
103 }
104
105 /**
106 * Writes a formatted trace line for the supplied invocation stage.
107 *
108 * @param object the receiver object
109 * @param methodName the invoked method name

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…