Skip to content

Instantly share code, notes, and snippets.

@kimukou
Created November 16, 2010 10:29
Show Gist options
  • Save kimukou/701668 to your computer and use it in GitHub Desktop.
Save kimukou/701668 to your computer and use it in GitHub Desktop.
// Intercepter sample test
// see http://d.hatena.ne.jp/funatti/20100717/1279390870
class Tracer implements Interceptor{
Object beforeInvoke(Object obj, String name, Object[] args){
println "BEFORE: ${obj}.${name}"
}
boolean doInvoke(){ return true }
Object afterInvoke(Object obj, String name, Object[] args, Object result){
println "AFTER: ${obj}.${name}"
return result
}
}
//== case 1 (before after correct ?)==
println "====start====="
def tracer = new Tracer()
def proxy = ProxyMetaClass.getInstance(String)
proxy.interceptor = tracer
/*
BEFORE: hello.multiply
AFTER: hello.multiply
hellohellohello
*/
proxy.use{ // intercept start
println "hello"*3
}
//NG case
/*
hello
*/
proxy.use{
println "hello"
}
println "====end====="
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment