public < T > T newImpersonatingProxy ( Class < T > type , T core ) { return new InterceptingProxy ( ) { protected Object call ( Object o , Method m , Object [ ] args ) throws Throwable { final Executor old = IMPERSONATION . get ( ) ; IMPERSONATION . set ( Executor . this ) ; try { return m . invoke ( o , args ) ; } finally { IMPERSONATION . set ( old ) ; } } } . wrap ( type , core ) ; }
Creates a proxy object that executes the callee in the context that impersonates this executor . Useful to export an object to a remote channel .