1   package com.atlassian.config.xml;
2   
3   import com.atlassian.config.ConfigurationException;
4   import org.dom4j.Element;
5   
6   import java.util.ArrayList;
7   import java.util.Iterator;
8   import java.util.List;
9   
10  public class Dom4jXmlListConfigElement extends Dom4jXmlStringConfigElement
11  {
12      public Dom4jXmlListConfigElement(String name, Element context, AbstractDom4jXmlConfigurationPersister config)
13      {
14          super(name, context, config);
15      }
16  
17      public Class getObjectClass()
18      {
19          return List.class;
20      }
21  
22      public void saveConfig(Object object) throws ConfigurationException
23      {
24          List list = (List) object;
25          Element listElement = getOrMakeElement(getPropertyName());
26          listElement.clearContent();
27  
28          Element itemElement;
29          String item;
30          for (Iterator iterator = list.iterator(); iterator.hasNext();)
31          {
32              item = (String) iterator.next();
33              itemElement = listElement.addElement("item");
34  
35              if (useCData)
36              {
37                  itemElement.addCDATA(item);
38              }
39              else
40              {
41                  itemElement.setText(item);
42              }
43          }
44      }
45  
46      public Object loadConfig() throws ConfigurationException
47      {
48          Element element = (Element) context.selectSingleNode(getPropertyName());
49          String item;
50          List list = new ArrayList();
51  
52          for (Iterator iterator = element.elementIterator(); iterator.hasNext();)
53          {
54              item = (String) getConfiguration().getConfigElement(String.class, "item", (Element) iterator.next());
55              list.add(item);
56          }
57          return list;
58      }
59  }