001    package org.shiftone.jrat.integration.aop.proxy;
002    
003    
004    import org.shiftone.jrat.api.Monitor;
005    import org.shiftone.jrat.util.log.Logger;
006    
007    import java.lang.reflect.InvocationHandler;
008    import java.lang.reflect.Method;
009    
010    
011    /**
012     * @author jeff@shiftone.org (Jeff Drost)
013     */
014    public class ProxyInvocationHandler implements InvocationHandler {
015    
016        private static final Logger LOG = Logger.getLogger(ProxyInvocationHandler.class);
017        private final Object target;
018    
019        public ProxyInvocationHandler(Object target) {
020            this.target = target;
021        }
022    
023    
024        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
025            return Monitor.execute(method, target, new ProxyCommand(target, method, args));
026        }
027    }