package org.jboss.resteasy.plugins.spring; import org.jboss.resteasy.plugins.spring.i18n.LogMessages; import org.jboss.resteasy.plugins.spring.i18n.Messages; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.beans.factory.FactoryBean; /** * This resovles optional * * @author <a href="mailto:sduskis@gmail.com">Solomon Duskis</a> * @version $Revision: 1 $ */ public class OptionalValueBeanFactory implements FactoryBean<Object>, BeanFactoryAware { private String beanName; private Class<?> clazz; private BeanFactory beanFactory; public String getBeanName() { return beanName; } public void setBeanName(String beanName) { this.beanName = beanName; } public Class<?> getClazz() { return clazz; } public void setClazz(Class<?> clazz) { this.clazz = clazz; } public Object getObject() throws Exception { try { if (beanFactory.containsBean(beanName)) return beanFactory.getBean(beanName, clazz); } catch (Exception e) { LogMessages.LOGGER.error(Messages.MESSAGES.couldNotRetrieveBean(beanName), e); } return null; } public Class<?> getObjectType() { return clazz; } public boolean isSingleton() { return true; } public void setBeanFactory(BeanFactory beanFactory) throws BeansException { this.beanFactory = beanFactory; } }