1
2
3
4
5
6
7 package org.mule.config.spring.parsers.collection;
8
9 import org.mule.config.spring.MuleHierarchicalBeanDefinitionParserDelegate;
10 import org.mule.config.spring.parsers.generic.ChildDefinitionParser;
11
12 import java.util.HashMap;
13 import java.util.Map;
14
15 import org.springframework.beans.factory.config.MapFactoryBean;
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
24 public class ChildMapDefinitionParser extends ChildDefinitionParser
25 {
26
27 public ChildMapDefinitionParser(String setterMethod)
28 {
29 super(setterMethod, HashMap.class);
30 addBeanFlag(MuleHierarchicalBeanDefinitionParserDelegate.MULE_NO_RECURSE);
31 }
32
33 protected Class getBeanClass(Element element)
34 {
35 return MapFactoryBean.class;
36 }
37
38 protected void parseChild(Element element, ParserContext parserContext, BeanDefinitionBuilder builder)
39 {
40 super.parseChild(element, parserContext, builder);
41 Map parsedMap = parserContext.getDelegate().parseMapElement(element, builder.getRawBeanDefinition());
42 builder.addPropertyValue("sourceMap", parsedMap);
43 builder.addPropertyValue("targetMapClass", super.getBeanClass(element));
44 }
45
46 }