1
2
3
4
5
6
7 package org.mule.config.spring.parsers.specific;
8
9 import org.mule.api.lifecycle.Disposable;
10 import org.mule.api.lifecycle.Initialisable;
11 import org.mule.config.spring.parsers.AbstractMuleBeanDefinitionParser;
12 import org.mule.object.AbstractObjectFactory;
13 import org.mule.object.PrototypeObjectFactory;
14
15 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
16 import org.springframework.beans.factory.support.GenericBeanDefinition;
17 import org.springframework.beans.factory.xml.ParserContext;
18 import org.w3c.dom.Element;
19
20 public class ShortcutComponentDefinitionParser extends ComponentDefinitionParser
21 {
22
23 private static Class OBJECT_FACTORY_TYPE = PrototypeObjectFactory.class;
24
25 public ShortcutComponentDefinitionParser(Class clazz)
26 {
27 super(clazz);
28 }
29
30 @Override
31 protected void parseChild(Element element, ParserContext parserContext, BeanDefinitionBuilder builder)
32 {
33 String className = element.getAttributeNode(AbstractMuleBeanDefinitionParser.ATTRIBUTE_CLASS).getValue();
34
35 GenericBeanDefinition objectFactoryBeanDefinition = new GenericBeanDefinition();
36 objectFactoryBeanDefinition.setBeanClass(OBJECT_FACTORY_TYPE);
37 objectFactoryBeanDefinition.getPropertyValues().addPropertyValue(
38 AbstractObjectFactory.ATTRIBUTE_OBJECT_CLASS_NAME, className);
39
40 objectFactoryBeanDefinition.setInitMethodName(Initialisable.PHASE_NAME);
41 objectFactoryBeanDefinition.setDestroyMethodName(Disposable.PHASE_NAME);
42
43 builder.addPropertyValue("objectFactory", objectFactoryBeanDefinition);
44 super.parseChild(element, parserContext, builder);
45 }
46 }