1
2
3
4
5
6
7
8
9
10
11 package org.mule.config.spring.parsers.assembly;
12
13 import org.mule.config.spring.parsers.assembly.configuration.PropertyConfiguration;
14 import org.mule.util.MapCombiner;
15
16 import java.util.Iterator;
17 import java.util.List;
18 import java.util.Map;
19
20 import org.springframework.beans.PropertyValue;
21 import org.springframework.beans.factory.config.BeanDefinition;
22 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
23 import org.springframework.beans.factory.support.ManagedList;
24 import org.springframework.beans.factory.support.ManagedMap;
25
26 public abstract class AbstractMapBeanAssembler extends DefaultBeanAssembler
27 {
28
29 public AbstractMapBeanAssembler(PropertyConfiguration beanConfig, BeanDefinitionBuilder bean,
30 PropertyConfiguration targetConfig, BeanDefinition target)
31 {
32 super(beanConfig, bean, targetConfig, target);
33 }
34
35 protected void insertDefinitionAsMap(String oldName)
36 {
37 BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(MapCombiner.class);
38 Map map = new ManagedMap();
39 for (Iterator pvs = getBean().getBeanDefinition().getPropertyValues().getPropertyValueList().iterator();
40 pvs.hasNext();)
41 {
42 PropertyValue pv = (PropertyValue) pvs.next();
43 map.put(pv.getName(), pv.getValue());
44 }
45 List list = new ManagedList();
46 list.add(map);
47 builder.addPropertyValue(MapCombiner.LIST, list);
48 setBean(builder);
49 super.insertBeanInTarget(oldName);
50 }
51
52 }