1
2
3
4
5
6
7
8
9
10
11 package org.mule.config.spring.parsers.specific.endpoint.support;
12
13 import org.mule.config.spring.parsers.AbstractMuleBeanDefinitionParser;
14 import org.mule.config.spring.parsers.generic.AutoIdUtils;
15 import org.mule.config.spring.parsers.generic.ChildDefinitionParser;
16 import org.mule.util.StringUtils;
17
18 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
19 import org.w3c.dom.Element;
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public class ChildEndpointDefinitionParser extends ChildDefinitionParser
35 {
36
37 public ChildEndpointDefinitionParser(Class endpoint)
38 {
39 super("messageProcessor", endpoint);
40 addIgnored(AbstractMuleBeanDefinitionParser.ATTRIBUTE_REF);
41 EndpointUtils.addProperties(this);
42 EndpointUtils.addPostProcess(this);
43 }
44
45 @Override
46 public BeanDefinitionBuilder createBeanDefinitionBuilder(Element element, Class beanClass)
47 {
48 BeanDefinitionBuilder builder = super.createBeanDefinitionBuilder(element, beanClass);
49 String global = element.getAttribute(AbstractMuleBeanDefinitionParser.ATTRIBUTE_REF);
50 if (StringUtils.isNotBlank(global))
51 {
52 builder.addConstructorArgReference(global);
53 builder.addDependsOn(global);
54 }
55 return builder;
56 }
57
58 @Override
59 public String getPropertyName(Element e)
60 {
61 String parent = e.getParentNode().getLocalName().toLowerCase();
62 if (e.getLocalName() != null && e.getLocalName().toLowerCase().endsWith("inbound-endpoint"))
63 {
64 return "messageSource";
65 }
66 else if ("wire-tap".equals(parent) || "wire-tap-router".equals(parent))
67 {
68 return "tap";
69 }
70 else if ("binding".equals(parent) || "java-interface-binding".equals(parent)
71 || "publish-notifications".equals(parent) || "remote-dispatcher-agent".equals(parent))
72 {
73 return "endpoint";
74 }
75 else
76 {
77 return super.getPropertyName(e);
78 }
79 }
80
81 @Override
82 public String getBeanName(Element element)
83 {
84 if (null != element.getAttributeNode(AbstractMuleBeanDefinitionParser.ATTRIBUTE_REF))
85 {
86 return AutoIdUtils.uniqueValue("ref:"
87 + element.getAttribute(AbstractMuleBeanDefinitionParser.ATTRIBUTE_REF));
88 }
89 else
90 {
91 return super.getBeanName(element);
92 }
93 }
94 }