1 package org
.argeo
.slc
.core
.execution
.xml
;
3 import org
.argeo
.slc
.SlcException
;
4 import org
.argeo
.slc
.core
.execution
.DefaultExecutionFlow
;
5 import org
.springframework
.beans
.factory
.config
.BeanDefinitionHolder
;
6 import org
.springframework
.beans
.factory
.support
.BeanDefinitionBuilder
;
7 import org
.springframework
.beans
.factory
.support
.ManagedList
;
8 import org
.springframework
.beans
.factory
.xml
.BeanDefinitionDecorator
;
9 import org
.springframework
.beans
.factory
.xml
.ParserContext
;
10 import org
.w3c
.dom
.Attr
;
11 import org
.w3c
.dom
.Node
;
13 public class AsFlowDecorator
implements BeanDefinitionDecorator
{
15 @SuppressWarnings("unchecked")
16 public BeanDefinitionHolder
decorate(Node node
, BeanDefinitionHolder bean
,
18 String flowBeanName
= ((Attr
) node
).getValue();
19 if (ctx
.getRegistry().containsBeanDefinition(flowBeanName
))
20 throw new SlcException("A bean named " + flowBeanName
21 + " is already defined.");
22 BeanDefinitionBuilder flow
= BeanDefinitionBuilder
23 .rootBeanDefinition(DefaultExecutionFlow
.class);
24 ManagedList executables
= new ManagedList(1);
25 executables
.add(bean
.getBeanDefinition());
26 flow
.addPropertyValue("executables", executables
);
27 ctx
.getRegistry().registerBeanDefinition(flowBeanName
,
28 flow
.getBeanDefinition());