/* JFox, the OpenSource J2EE Application Server
 *
 * Distributable under GNU LGPL license by gun.org
 * more details please visit http://www.huihoo.org/jfox
 */
package org.jfox.ejb.handler;

import org.jfox.ejb.Invocation;

/**
 * 拦截器用于拦截方法的调用，可以在调用之前和之后加入一个控制，注意不应该改变 invocation 的值
 * <p/>
 * 可以使用 Interceptor 插件做日志分析，性能分析工具等
 *
 * @author <a href="mailto:young_yy@hotmail.com">Young Yang</a>
 */


public interface Interceptor extends ContainerPlugin {

    /**
     * 执行 Home 方法之前的控制
     *
     * @param invocation
     * @throws Exception
     */
    void preInvokeHome(final Invocation invocation) throws Exception;

    /**
     * 执行 Bean 方法之前的控制
     *
     * @param invocation
     * @throws Exception
     */
    void preInvokeBean(final Invocation invocation) throws Exception;

    /**
     * 执行 Home 方法之后的控制
     *
     * @param invocation
     * @throws Exception
     */
    void postInvokeHome(final Invocation invocation) throws Exception;

    /**
     * 执行 Bean 方法之后的控制
     *
     * @param invocation
     * @throws Exception
     */
    void postInvokeBean(final Invocation invocation) throws Exception;

}