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.assembly.BeanAssembler;
14 import org.mule.config.spring.parsers.MuleDefinitionParser;
15 import org.mule.config.spring.parsers.PostProcessor;
16 import org.mule.util.StringUtils;
17
18 import org.w3c.dom.Element;
19 import org.apache.commons.logging.Log;
20 import org.apache.commons.logging.LogFactory;
21 import org.springframework.beans.factory.xml.ParserContext;
22
23
24
25
26
27
28
29 public class EndpointUtils
30 {
31
32 private static Log logger = LogFactory.getLog(EndpointUtils.class);
33 public static final String CONNECTOR_ATTRIBUTE = "connector-ref";
34 public static final String TRANSFORMERS_ATTRIBUTE = "transformer-refs";
35 public static final String URI_BUILDER_ATTRIBUTE = "URIBuilder";
36 public static final String ADDRESS_ATTRIBUTE = "address";
37
38 private static void processTransformerDependencies(BeanAssembler assembler, Element element)
39 {
40 if (StringUtils.isNotBlank(element.getAttribute(TRANSFORMERS_ATTRIBUTE)))
41 {
42 String[] trans = StringUtils.split(element.getAttribute(TRANSFORMERS_ATTRIBUTE), " ,;");
43 for (int i = 0; i < trans.length; i++)
44 {
45 String ref = trans[i];
46 if (logger.isDebugEnabled())
47 {
48 logger.debug("transformer dep: " + ref);
49 }
50 assembler.getBean().addDependsOn(ref);
51 }
52 }
53 }
54
55 private static void processConnectorDependency(BeanAssembler assembler, Element element)
56 {
57 if (StringUtils.isNotBlank(element.getAttribute(CONNECTOR_ATTRIBUTE)))
58 {
59 String ref = element.getAttribute(CONNECTOR_ATTRIBUTE);
60 if (logger.isDebugEnabled())
61 {
62 logger.debug("connector dep: " + ref);
63 }
64 assembler.getBean().addDependsOn(ref);
65 }
66 }
67
68 public static void addPostProcess(MuleDefinitionParser parser)
69 {
70 parser.registerPostProcessor(new PostProcessor()
71 {
72 public void postProcess(ParserContext unused, BeanAssembler assembler, Element element)
73 {
74 EndpointUtils.processConnectorDependency(assembler, element);
75 EndpointUtils.processTransformerDependencies(assembler, element);
76 }
77 });
78 }
79
80 public static void addProperties(MuleDefinitionParser parser)
81 {
82 parser.addAlias(ADDRESS_ATTRIBUTE, URI_BUILDER_ATTRIBUTE);
83 parser.addAlias("transformer", "transformers");
84 parser.addAlias("responseTransformer", "responseTransformers");
85 parser.addMapping("createConnector", "GET_OR_CREATE=0,ALWAYS_CREATE=1,NEVER_CREATE=2");
86 }
87
88 }