View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
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   * Sets a Map of service overrides on the parent connector
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  }