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