1
2
3
4
5
6
7
8
9
10 package org.mule.config.spring.parsers.specific;
11
12 import org.mule.api.config.MuleProperties;
13 import org.mule.config.spring.parsers.generic.ChildDefinitionParser;
14 import org.mule.util.StringUtils;
15
16 import java.util.HashMap;
17 import java.util.Map;
18
19 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
20 import org.springframework.beans.factory.xml.ParserContext;
21 import org.w3c.dom.Element;
22
23
24
25
26 public class ServiceOverridesDefinitionParser extends ChildDefinitionParser
27 {
28 public ServiceOverridesDefinitionParser()
29 {
30 super("serviceOverrides", HashMap.class);
31 }
32
33 @Override
34 protected void parseChild(Element element, ParserContext parserContext, BeanDefinitionBuilder builder)
35 {
36 Map<String, String> overrides = new HashMap<String, String>();
37 addOverride(overrides, element, "messageReceiver", MuleProperties.CONNECTOR_MESSAGE_RECEIVER_CLASS);
38 addOverride(overrides, element, "transactedMessageReceiver", MuleProperties.CONNECTOR_TRANSACTED_MESSAGE_RECEIVER_CLASS);
39 addOverride(overrides, element, "xaTransactedMessageReceiver", MuleProperties.CONNECTOR_XA_TRANSACTED_MESSAGE_RECEIVER_CLASS);
40 addOverride(overrides, element, "dispatcherFactory", MuleProperties.CONNECTOR_DISPATCHER_FACTORY);
41 addOverride(overrides, element, "messageFactory", MuleProperties.CONNECTOR_MESSAGE_FACTORY);
42 addOverride(overrides, element, "inboundTransformer", MuleProperties.CONNECTOR_INBOUND_TRANSFORMER);
43 addOverride(overrides, element, "outboundTransformer", MuleProperties.CONNECTOR_OUTBOUND_TRANSFORMER);
44 addOverride(overrides, element, "responseTransformer", MuleProperties.CONNECTOR_RESPONSE_TRANSFORMER);
45 addOverride(overrides, element, "endpointBuilder", MuleProperties.CONNECTOR_ENDPOINT_BUILDER);
46 addOverride(overrides, element, "serviceFinder", MuleProperties.SERVICE_FINDER);
47 addOverride(overrides, element, "sessionHandler", MuleProperties.CONNECTOR_SESSION_HANDLER);
48 addOverride(overrides, element, "inboundExchangePatterns", MuleProperties.CONNECTOR_INBOUND_EXCHANGE_PATTERNS);
49 addOverride(overrides, element, "outboundExchangePatterns", MuleProperties.CONNECTOR_OUTBOUND_EXCHANGE_PATTERNS);
50 addOverride(overrides, element, "defaultExchangePattern", MuleProperties.CONNECTOR_DEFAULT_EXCHANGE_PATTERN);
51 builder.getRawBeanDefinition().setSource(overrides);
52
53 getBeanAssembler(element, builder).extendTarget(getPropertyName(element), overrides, false);
54 }
55
56 protected void addOverride(Map<String, String> overrides, Element e, String attributeName, String overrideName)
57 {
58 String value = e.getAttribute(attributeName);
59 if (!StringUtils.isBlank(value))
60 {
61 overrides.put(overrideName, value);
62 }
63 }
64 }