package com.revolsys.spring;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.config.AbstractFactoryBean;
public class BeanReferenceListFactoryBean<T> extends AbstractFactoryBean<List<T>> {
private List<String> beanNames = new ArrayList<>();
@Override
protected List<T> createInstance() throws Exception {
final BeanFactory beanFactory = getBeanFactory();
final List<T> beans = new ArrayList<>();
for (int i = 0; i < this.beanNames.size(); i++) {
final String beanName = this.beanNames.get(i);
final T bean = (T)beanFactory.getBean(beanName);
beans.add(bean);
}
return beans;
}
public List<String> getBeanNames() {
return this.beanNames;
}
@Override
public Class<?> getObjectType() {
return List.class;
}
@Override
public boolean isSingleton() {
return false;
}
public void setBeanNames(final List<String> beanNames) {
this.beanNames = beanNames;
}
}