@@ -0,0 +1,1266 @@
+package net.ttddyy.dsproxy.listener;%0A%0Aimport java.lang.reflect.Method;%0Aimport java.util.ArrayList;%0Aimport java.util.List;%0A%0A/**%0A * Execute chain of %7B@link MethodExecutionListener%7D.%0A *%0A * @author Tadaya Tsuyukubo%0A * @since 1.4.3%0A */%0Apublic class CompositeMethodListener implements MethodExecutionListener %7B%0A    private List%3CMethodExecutionListener%3E listeners = new ArrayList%3CMethodExecutionListener%3E();%0A%0A    @Override%0A    public void beforeMethod(Object target, Method method, Object%5B%5D args) %7B%0A        for (MethodExecutionListener listener : this.listeners) %7B%0A            listener.beforeMethod(target, method, args);%0A        %7D%0A    %7D%0A%0A    @Override%0A    public void afterMethod(Object target, Method method, Object%5B%5D args, Object result, Throwable thrown, long elapsedTime) %7B%0A        for (MethodExecutionListener listener : this.listeners) %7B%0A            listener.afterMethod(target, method, args, result, thrown, elapsedTime);%0A        %7D%0A    %7D%0A%0A    public boolean addListener(MethodExecutionListener listener) %7B%0A        return this.listeners.add(listener);%0A    %7D%0A%0A    public List%3CMethodExecutionListener%3E getListeners() %7B%0A        return listeners;%0A    %7D%0A%0A    public void setListeners(List%3CMethodExecutionListener%3E listeners) %7B%0A        this.listeners = listeners;%0A    %7D%0A%7D%0A

Add CompositeMethodListener