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