package com.revolsys.spring.factory; import org.springframework.beans.MutablePropertyValues; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.GenericBeanDefinition; public class Parameter implements FactoryBean<Object> { public static void registerBeanDefinition(final BeanDefinitionRegistry registry, final BeanFactory beanFactory, final String beanName) { registerBeanDefinition(registry, beanFactory, beanName, beanName); } public static void registerBeanDefinition(final BeanDefinitionRegistry registry, final BeanFactory beanFactory, final String beanName, final String alias) { if (beanFactory.containsBean(beanName)) { final Object value = beanFactory.getBean(beanName); registerBeanDefinition(registry, alias, value); } } public static void registerBeanDefinition(final BeanDefinitionRegistry registry, final String beanName, final Object value) { final GenericBeanDefinition beanDefinition = new GenericBeanDefinition(); beanDefinition.setBeanClass(Parameter.class); final MutablePropertyValues values = beanDefinition.getPropertyValues(); values.add("value", value); registry.registerBeanDefinition(beanName, beanDefinition); } private Class<?> type; private Object value; public Parameter() { } public Parameter(final Object value) { this.value = value; } @Override public Object getObject() throws Exception { return this.value; } @Override public Class getObjectType() { if (this.type == null && this.value != null) { return this.value.getClass(); } else { return this.type; } } public Class getType() { return this.type; } public Object getValue() { return this.value; } @Override public boolean isSingleton() { return true; } public void setType(final Class type) { this.type = type; } public void setValue(final Object value) { this.value = value; } }