View Javadoc

1   /*
2    * Trip Tracker, a real-time position tracking system for the Internet.
3    * Copyright (C) 2006  Team Trip Tracker
4    *
5    * This program is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU General Public License as published by the
7    * Free Software Foundation; either version 2 of the License, or (at your
8    * option) any later version.
9    *
10   * This program is distributed in the hope that it will be useful, but
11   * WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13   * General Public License for more details.
14   *
15   * You should have received a copy of the GNU General Public License along
16   * with this program; if not, write to the Free Software Foundation, Inc.,
17   * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
18   */
19  
20  package triptracker.testing;
21  
22  import java.lang.reflect.InvocationHandler;
23  import java.lang.reflect.InvocationTargetException;
24  import java.lang.reflect.Method;
25  import java.lang.reflect.Proxy;
26  
27  public class DebugProxy implements InvocationHandler {
28  
29  	private Object obj;
30  
31  	public static Object newInstance(Object obj) {
32  		return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj
33  				.getClass().getInterfaces(), new DebugProxy(obj));
34  	}
35  
36  	private DebugProxy(Object obj) {
37  		this.obj = obj;
38  	}
39  
40  	public Object invoke(Object proxy, Method m, Object[] args)
41  			throws Throwable {
42  		Object result;
43  		try {
44  			System.out.println("before method " + m.getName());
45  			result = m.invoke(obj, args);
46  		} catch (InvocationTargetException e) {
47  			throw e.getTargetException();
48  		} catch (Exception e) {
49  			throw new RuntimeException("unexpected invocation exception: "
50  					+ e.getMessage());
51  		} finally {
52  			System.out.println("after method " + m.getName());
53  		}
54  		return result;
55  	}
56  }