View Javadoc

1   /*
2    * $Id: AbstractMapBeanAssembler.java 20321 2010-11-24 15:21:24Z dfeist $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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  }