View Javadoc

1   package com.atlassian.config.xml;
2   
3   import com.atlassian.config.AbstractConfigElement;
4   import com.atlassian.config.ConfigurationException;
5   import org.dom4j.DocumentHelper;
6   import org.dom4j.Element;
7   import org.dom4j.Node;
8   
9   /**
10   * Created by IntelliJ IDEA.
11   * User: ROSS
12   * Date: 16/03/2004
13   * Time: 10:49:24
14   * To change this template use File | Settings | File Templates.
15   */
16  public class Dom4jXmlStringConfigElement extends AbstractConfigElement
17  {
18      protected Element context;
19      protected boolean useCData = true;
20  
21      public Dom4jXmlStringConfigElement(String name, Element context, AbstractDom4jXmlConfigurationPersister config)
22      {
23          super(name, context, config);
24          this.useCData = ((AbstractDom4jXmlConfigurationPersister) getConfiguration()).isUseCData();
25      }
26  
27  
28      public Class getObjectClass()
29      {
30          return String.class;
31      }
32  
33      public void saveConfig(Object object) throws ConfigurationException
34      {
35          Element element = getOrMakeElement(getPropertyName());
36          if (useCData)
37          {
38              element.addCDATA((String) object);
39          }
40          else
41          {
42              element.setText((String) object);
43          }
44      }
45  
46      public Object loadConfig() throws ConfigurationException
47      {
48          //"/" + context.getName()+ "/" + getPropertyName()
49          Node n = context.selectSingleNode(getPropertyName());
50          if (n != null)
51          {
52              return n.getText();
53          }
54          else
55          {
56              return context.getText();
57          }
58      }
59  
60      protected Element getOrMakeElement(String path)
61      {
62          Element element = (Element) context.selectSingleNode(getPropertyName());
63          if (element == null)
64          {
65              element = DocumentHelper.makeElement(context, getPropertyName());
66          }
67          else
68          {
69              element.clearContent();
70          }
71          return element;
72      }
73  
74      public Object getContext()
75      {
76          return context;
77      }
78  
79      public void setContext(Object context)
80      {
81          if (context instanceof Element)
82          {
83              this.context = (Element) context;
84          }
85          else
86          {
87              throw new IllegalArgumentException("Context must be a: " + Element.class.getName());
88          }
89      }
90  
91      public boolean isUseCData()
92      {
93          return useCData;
94      }
95  }