/*
 * Copyright (C) 2005-2006 Kouji Sugisawa. All rights reserved.
 */

package jp.sourceforge.livez.util;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;

/**
 * Live Z の Spring Framework 用のユーティリティクラスです。
 * 
 * @author 杉澤 浩二
 */
public final class SpringUtils {

	/**
	 * インスタンス化できない事を強制します。
	 */
	private SpringUtils() {}

	/**
	 * 指定された BeanFactory から指定されたビーンIDに一致するオブジェクトを返します。
	 * BeanFactory が <code>null</code> の場合は <code>null</code> を返します。
	 * 
	 * @param factory BeanFactory
	 * @param id ビーンID
	 * @return オブジェクト又は <code>null</code>
	 * @throws BeansException 指定されたビーンIDが見つからない場合
	 */
	public static Object getRequiredBean(final BeanFactory factory, final String id) throws BeansException {
		if (factory == null)
			return null;

		return factory.getBean(id);
	}

	/**
	 * 指定された BeanFactory から指定されたビーンIDに一致するオブジェクトを返します。
	 * BeanFactory が <code>null</code> の場合や指定されたビーンIDが見つからない場合は <code>null</code> を返します。
	 * 
	 * @param factory BeanFactory
	 * @param id ビーンID
	 * @return オブジェクト又は <code>null</code>
	 */
	public static Object getBean(final BeanFactory factory, final String id) {
		try {
			return getRequiredBean(factory, id);
		} catch (BeansException e) {
			return null;
		}
	}

}
