001 package org.shiftone.jrat.core.config; 002 003 import org.shiftone.jrat.core.spi.MethodHandler; 004 005 import java.util.Collection; 006 007 /** 008 * @author jeff@shiftone.org (Jeff Drost) 009 */ 010 public class CompositeMethodHandler implements MethodHandler { 011 012 private final MethodHandler[] handlers; 013 014 public CompositeMethodHandler(Collection methodHandlers) { 015 this((MethodHandler[]) methodHandlers.toArray(new MethodHandler[methodHandlers.size()])); 016 } 017 018 private CompositeMethodHandler(MethodHandler[] handlers) { 019 this.handlers = handlers; 020 } 021 022 public void onMethodStart(Object obj) { 023 024 for (int i = 0; i < handlers.length; i++) { 025 handlers[i].onMethodStart(obj); 026 } 027 028 } 029 030 public void onMethodFinish(Object target, long durationNanos, Throwable throwable) { 031 032 for (int i = 0; i < handlers.length; i++) { 033 handlers[i].onMethodFinish(target, durationNanos, throwable); 034 } 035 036 } 037 }