Merge pull request #71 from olegz/INT-2115

added logic to recognize abstract bean definitions in GroovyControlBusFactoryBean.ManagedBeansScriptVariableGenerator
This commit is contained in:
Mark Fisher
2011-09-15 07:24:03 -04:00

View File

@@ -17,7 +17,7 @@ import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.ListableBeanFactory;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.context.Lifecycle;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.integration.Message;
@@ -73,10 +73,11 @@ public class GroovyControlBusFactoryBean extends AbstractSimpleMessageHandlerFac
private static class ManagedBeansScriptVariableGenerator implements ScriptVariableGenerator {
private final ListableBeanFactory beanFactory;
private final ConfigurableListableBeanFactory beanFactory;
public ManagedBeansScriptVariableGenerator(BeanFactory beanFactory) {
this.beanFactory = (beanFactory instanceof ListableBeanFactory) ? (ListableBeanFactory) beanFactory : null;
this.beanFactory = (beanFactory instanceof ConfigurableListableBeanFactory)
? (ConfigurableListableBeanFactory) beanFactory : null;
}
public Map<String, Object> generateScriptVariables(Message<?> message) {
@@ -84,11 +85,13 @@ public class GroovyControlBusFactoryBean extends AbstractSimpleMessageHandlerFac
variables.put("headers", message.getHeaders());
if (this.beanFactory != null) {
for (String name : this.beanFactory.getBeanDefinitionNames()) {
Object bean = this.beanFactory.getBean(name);
if (bean instanceof Lifecycle ||
bean instanceof CustomizableThreadCreator ||
(AnnotationUtils.findAnnotation(bean.getClass(), ManagedResource.class) != null)) {
variables.put(name, bean);
if (!this.beanFactory.getBeanDefinition(name).isAbstract()) {
Object bean = this.beanFactory.getBean(name);
if (bean instanceof Lifecycle ||
bean instanceof CustomizableThreadCreator ||
(AnnotationUtils.findAnnotation(bean.getClass(), ManagedResource.class) != null)) {
variables.put(name, bean);
}
}
}
}