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 23-May-2004
010 */
011 package com.thoughtworks.proxy.kit;
012
013 import java.lang.reflect.Method;
014
015 import com.thoughtworks.proxy.Invoker;
016
017
018 /**
019 * A simple {@link Invoker} implementation, that routes any call to a target object. A <code>null</code> value as
020 * target can be handled, the invocation result will always be <code>null</code>.
021 *
022 * @author Aslak Hellesøy
023 * @since 0.2
024 */
025 public class SimpleInvoker implements Invoker {
026
027 private static final long serialVersionUID = 1L;
028
029 private Object target;
030
031 /**
032 * Construct a SimpleInvoker.
033 *
034 * @param target the invocation target.
035 * @since 0.2
036 */
037 public SimpleInvoker(final Object target) {
038 this.target = target;
039 }
040
041 public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {
042 return (target == null ? null : method.invoke(target, args));
043 }
044
045 /**
046 * Retrieve the target of the invocations.
047 *
048 * @return the target object
049 * @since 0.2
050 */
051 protected Object getTarget() {
052 return target;
053 }
054 }