1
2
3
4
5
6
7
8
9
10
11 package org.mule.config.spring.parsers.generic;
12
13 import org.mule.config.spring.parsers.assembly.BeanAssembler;
14 import org.mule.util.StringUtils;
15
16 import org.springframework.beans.factory.config.BeanDefinition;
17 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
18 import org.springframework.beans.factory.xml.ParserContext;
19 import org.w3c.dom.Element;
20
21
22
23
24
25
26 public class OptionalChildDefinitionParser extends ChildDefinitionParser
27 {
28 private boolean isChild;
29
30 public OptionalChildDefinitionParser(String setterMethod)
31 {
32 super(setterMethod);
33 }
34
35 public OptionalChildDefinitionParser(String setterMethod, Class clazz)
36 {
37 super(setterMethod, clazz);
38 }
39
40 public OptionalChildDefinitionParser(String setterMethod, Class clazz, Class constraint)
41 {
42 super(setterMethod, clazz, constraint);
43 }
44
45 public OptionalChildDefinitionParser(String setterMethod, Class clazz, Class constraint, boolean allowClassAttribute)
46 {
47 super(setterMethod, clazz, constraint, allowClassAttribute);
48 }
49
50 @Override
51 protected void parseChild(Element element, ParserContext parserContext, BeanDefinitionBuilder builder)
52 {
53 isChild = isChild(element, parserContext, builder);
54 super.parseChild(element, parserContext, builder);
55 }
56
57 protected boolean isChild(Element element, ParserContext parserContext, BeanDefinitionBuilder builder)
58 {
59 String parentBean = getParentBeanName(element);
60 return !(StringUtils.isBlank(parentBean));
61 }
62
63 public BeanDefinition getParentBeanDefinition(Element element)
64 {
65 if (isChild)
66 {
67 return super.getParentBeanDefinition(element);
68 }
69 else
70 {
71 return null;
72 }
73 }
74
75 protected void postProcess(ParserContext context, BeanAssembler assembler, Element element)
76 {
77 if (isChild)
78 {
79 super.postProcess(context, assembler, element);
80 }
81 }
82 }
83
84