package com.esir.sr.sweetsnake.provider;
import java.beans.Introspector;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
/**
*
* @author Herminaƫl Rougier
* @author Damien Jouanno
*
*/
@Component
public class BeanProvider
{
/**********************************************************************************************
* [BLOCK] FIELDS
**********************************************************************************************/
/** The spring context */
@Autowired
private ApplicationContext context;
/**********************************************************************************************
* [BLOCK] PUBLIC METHODS
**********************************************************************************************/
/**
*
* @param clazz
* @return
*/
public <T> T getPrototype(final Class<T> clazz) {
return context.getBean(clazz);
}
/**
*
* @param clazz
* @return
*/
@SuppressWarnings("unchecked")
public <T> T getPrototype(final Class<T> clazz, final Object... args) {
return (T) context.getBean(Introspector.decapitalize(clazz.getSimpleName()), args);
}
}