/*
 * 作成日： 2004/09/01
 */
package org.seasar.tapestry.pageinjection.impl;

import org.seasar.tapestry.pageinjection.Injection;
import org.seasar.tapestry.util.InjectionUtil;

/**
 * トップレベルのオブジェクトに対してDIを行う。
 * @author maruo_syunsuke
 * @user-object
 */
public class TopInjection implements Injection {
	public void invoke( Object target ) {
		Class targetClass = target.getClass();
		while( isAopAppendClass( targetClass ) ){
			targetClass = targetClass.getSuperclass();
			if( targetClass == null ) return ;
		}
		InjectionUtil.invokeSetterInjection( targetClass, target );
	}

    private boolean isAopAppendClass( Class targetClass ) {
		String name = targetClass.getName();
        return name.indexOf( "$" ) != -1;
	}
}