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