package com.revolsys.spring; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.config.AbstractFactoryBean; import org.springframework.beans.factory.config.BeanDefinition; public class TargetBeanFactoryBean extends AbstractFactoryBean<Object> { private boolean instanceCreated = false; private Class<?> targetBeanClass; private BeanDefinition targetBeanDefinition; private BeanFactory targetBeanFactory; private String targetBeanName; public TargetBeanFactoryBean() { } @Override protected Object createInstance() { this.instanceCreated = true; return this.targetBeanFactory.getBean(this.targetBeanName); } @Override public Class<?> getObjectType() { if (this.targetBeanClass == null) { return Object.class; } else { return this.targetBeanClass; } } public Class<?> getTargetBeanClass() { return this.targetBeanClass; } public BeanDefinition getTargetBeanDefinition() { return this.targetBeanDefinition; } public BeanFactory getTargetBeanFactory() { return this.targetBeanFactory; } public String getTargetBeanName() { return this.targetBeanName; } public boolean isInstanceCreated() { return this.instanceCreated; } public void setTargetBeanClass(final Class<?> targetBeanClass) { this.targetBeanClass = targetBeanClass; } public void setTargetBeanDefinition(final BeanDefinition targetBeanDefinition) { this.targetBeanDefinition = targetBeanDefinition; } public void setTargetBeanFactory(final BeanFactory targetBeanFactory) { this.targetBeanFactory = targetBeanFactory; } public void setTargetBeanName(final String targetBeanName) { this.targetBeanName = targetBeanName; } @Override public String toString() { return "Target=" + this.targetBeanName; } }