/*
 * 作成日： 2004/09/30
 */
package org.seasar.tapestry.junk;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

import org.apache.tapestry.html.BasePage;

/**
 * @author maruo_syunsuke
 */
public class DynamicProxyPage implements InvocationHandler {
	private Object pojo_ ;
	private BasePage page_ ;
	
	private DynamicProxyPage(Class pojoClass, BasePage page) {
		this.pojo_ = Proxy.newProxyInstance(pojoClass.getClassLoader(),
				pojoClass.getInterfaces(), this );
		this.page_ = page ;
	}

	public static Object getDynamicProxyPage(Class pojoClass, BasePage page) {
		return new DynamicProxyPage(pojoClass,page).pojo_ ;
	}

	public static void main(String[] args) {
		Object obj = getDynamicProxyPage(Object.class,null);
		try {
			obj.getClass().getMethod("getOut",new Class[0]);
		} catch (SecurityException e) {
			// TODO 自動生成した catch ブロック
			e.printStackTrace();
		} catch (NoSuchMethodException e) {
			// TODO 自動生成した catch ブロック
			e.printStackTrace();
		}
	}
	/**
	 * @see java.lang.reflect.InvocationHandler#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
	 */
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		System.out.println("out");
		return null ;
		//		return method.invoke(this.pojo_,args);
		//throw new UnsupportedOperationException("invoke");
	}
}
