001 /* 002 * (c) 2003-2005, 2009, 2010 ThoughtWorks Ltd 003 * All rights reserved. 004 * 005 * The software in this package is published under the terms of the BSD 006 * style license a copy of which has been included with this distribution in 007 * the LICENSE.txt file. 008 * 009 * Created on 03-May-2004 010 */ 011 package com.thoughtworks.proxy; 012 013 import java.io.Serializable; 014 import java.lang.reflect.Method; 015 016 017 /** 018 * Generic interface for any call made to a proxy instance. This is the main interface for any proxy implementation 019 * using a {@link ProxyFactory}. An implementation realizes an invocation handler for the proxy. So it has the same 020 * purpose as {@link java.lang.reflect.InvocationHandler}. 021 * 022 * @since 0.1 023 */ 024 public interface Invoker extends Serializable { 025 026 /** 027 * Invocation of a method of the proxied object. 028 * 029 * @param proxy the proxy instance. 030 * @param method the method to invoke. 031 * @param args the arguments of the method. 032 * @return the result of the invoked method. 033 * @throws Throwable if the invoked method has thrown. 034 * @since 0.1 035 */ 036 Object invoke(Object proxy, Method method, Object[] args) throws Throwable; 037 }