001    package org.shiftone.jrat.provider.tree;
002    
003    
004    import org.shiftone.jrat.core.MethodKey;
005    import org.shiftone.jrat.core.spi.MethodHandler;
006    import org.shiftone.jrat.util.Assert;
007    
008    
009    /**
010     * @author jeff@shiftone.org (Jeff Drost)
011     */
012    public class TreeMethodHandler implements MethodHandler {
013    
014        private final TreeMethodHandlerFactory factory;
015        private final MethodKey methodKey;
016    
017        public TreeMethodHandler(TreeMethodHandlerFactory factory, MethodKey methodKey) {
018    
019            Assert.assertNotNull("factory", factory);
020            Assert.assertNotNull("methodKey", methodKey);
021    
022            this.factory = factory;
023            this.methodKey = methodKey;
024        }
025    
026    
027        public void onMethodStart(Object obj) {
028    
029            Delegate delegate = factory.getDelegate();
030    
031            delegate.onMethodStart(methodKey);
032        }
033    
034    
035        public void onMethodFinish(Object obj, long durationNanos, Throwable throwable) {
036    
037            Delegate delegate = factory.getDelegate();
038    
039            delegate.onMethodFinish(methodKey, durationNanos, throwable == null);
040        }
041    }