You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2008/03/22 19:43:29 UTC

svn commit: r640046 - in /commons/proper/configuration/branches/configuration2_experimental/src: main/java/org/apache/commons/configuration2/XMLConfiguration.java test/java/org/apache/commons/configuration2/TestXMLConfiguration.java

Author: oheger
Date: Sat Mar 22 11:43:29 2008
New Revision: 640046

URL: http://svn.apache.org/viewvc?rev=640046&view=rev
Log:
File-based hierarchical configurations are now derived from AbstractHierarchicalConfiguration

Modified:
    commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/XMLConfiguration.java
    commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestXMLConfiguration.java

Modified: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/XMLConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/XMLConfiguration.java?rev=640046&r1=640045&r2=640046&view=diff
==============================================================================
--- commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/XMLConfiguration.java (original)
+++ commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/XMLConfiguration.java Sat Mar 22 11:43:29 2008
@@ -196,7 +196,7 @@
      * @param c the configuration to copy
      * @since 1.4
      */
-    public XMLConfiguration(HierarchicalConfiguration c)
+    public XMLConfiguration(AbstractHierarchicalConfiguration<? extends ConfigurationNode> c)
     {
         super(c);
         clearReferences(getRootNode());
@@ -532,7 +532,7 @@
             {
                 Iterator<String> it = values.iterator();
                 // Create new node for the original child's first value
-                ConfigurationNode c = createNode(child.getName());
+                ConfigurationNode c = createNode(parent, child.getName());
                 c.setValue(it.next());
                 // Copy original attributes to the new node
                 for (ConfigurationNode ndAttr : child.getAttributes())
@@ -541,7 +541,7 @@
                     c.addAttribute(ndAttr);
                 }
                 parent.removeChild(child);
-                parent.addChild(c);
+                //parent.addChild(c);
 
                 // add multiple new children
                 while (it.hasNext())
@@ -623,9 +623,9 @@
 
             XMLBuilderVisitor builder = new XMLBuilderVisitor(document,
                     isDelimiterParsingDisabled() ? (char) 0 : getListDelimiter());
-            builder.processDocument(getRootNode());
+            visit(getRootNode(), builder);
             return document;
-        } /* try */
+        }
         catch (DOMException domEx)
         {
             throw new ConfigurationException(domEx);
@@ -640,12 +640,19 @@
      * Creates a new node object. This implementation returns an instance of the
      * <code>XMLNode</code> class.
      *
+     * @param parent the parent node
      * @param name the node's name
      * @return the new node
      */
-    protected ConfigurationNode createNode(String name)
+    @Override
+    protected ConfigurationNode createNode(ConfigurationNode parent, String name)
     {
-        return new XMLNode(name, null);
+        ConfigurationNode node = new XMLNode(name, null);
+        if (parent != null)
+        {
+            parent.addChild(node);
+        }
+        return node;
     }
 
     /**
@@ -838,7 +845,7 @@
             return (XMLNode) node;
         }
 
-        XMLNode xmlNode = (XMLNode) createNode(node.getName());
+        XMLNode xmlNode = (XMLNode) createNode(null, node.getName());
         xmlNode.setValue(node.getValue());
         for (ConfigurationNode child : node.getChildren())
         {
@@ -985,6 +992,7 @@
          *
          * @param value the node's new value
          */
+        @Override
         public void setValue(Object value)
         {
             super.setValue(value);
@@ -1005,6 +1013,7 @@
         /**
          * Updates the associated XML elements when a node is removed.
          */
+        @Override
         protected void removeReference()
         {
             if (getReference() != null)
@@ -1145,16 +1154,6 @@
         {
             document = doc;
             this.listDelimiter = listDelimiter;
-        }
-
-        /**
-         * Processes the node hierarchy and adds new nodes to the document.
-         *
-         * @param rootNode the root node
-         */
-        public void processDocument(ConfigurationNode rootNode)
-        {
-            rootNode.visit(this);
         }
 
         /**

Modified: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestXMLConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestXMLConfiguration.java?rev=640046&r1=640045&r2=640046&view=diff
==============================================================================
--- commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestXMLConfiguration.java (original)
+++ commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestXMLConfiguration.java Sat Mar 22 11:43:29 2008
@@ -42,11 +42,11 @@
 import org.apache.commons.configuration2.HierarchicalConfiguration;
 import org.apache.commons.configuration2.SubnodeConfiguration;
 import org.apache.commons.configuration2.XMLConfiguration;
+import org.apache.commons.configuration2.expr.xpath.XPathExpressionEngine;
 import org.apache.commons.configuration2.reloading.FileAlwaysReloadingStrategy;
 import org.apache.commons.configuration2.reloading.InvariantReloadingStrategy;
 import org.apache.commons.configuration2.tree.ConfigurationNode;
 import org.apache.commons.configuration2.tree.DefaultConfigurationNode;
-import org.apache.commons.configuration2.tree.xpath.XPathExpressionEngine;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
 import org.xml.sax.helpers.DefaultHandler;
@@ -955,7 +955,7 @@
     public void testConfigurationAtWithReload() throws ConfigurationException
     {
         XMLConfiguration c = setUpReloadTest();
-        HierarchicalConfiguration sub = c.configurationAt("test(0)");
+        AbstractHierarchicalConfiguration<ConfigurationNode> sub = c.configurationAt("test(0)");
         assertEquals("New value not read", "newValue", sub.getString("entity"));
     }
 
@@ -965,10 +965,10 @@
     public void testConfigurationsAtWithReload() throws ConfigurationException
     {
         XMLConfiguration c = setUpReloadTest();
-        List configs = c.configurationsAt("test");
+        List<SubConfiguration<ConfigurationNode>> configs =
+            c.configurationsAt("test");
         assertEquals("New value not read", "newValue",
-                ((HierarchicalConfiguration) configs.get(0))
-                        .getString("entity"));
+                (configs.get(0)).getString("entity"));
     }
 
     /**
@@ -1095,8 +1095,8 @@
         final String newValue = "I am autosaved";
         conf.setFile(testSaveConf);
         conf.setAutoSave(true);
-        SubnodeConfiguration sub1 = conf.configurationAt("element2");
-        SubnodeConfiguration sub2 = sub1.configurationAt("subelement");
+        AbstractHierarchicalConfiguration<ConfigurationNode> sub1 = conf.configurationAt("element2");
+        AbstractHierarchicalConfiguration<ConfigurationNode> sub2 = sub1.configurationAt("subelement");
         sub2.setProperty("subsubelement", newValue);
         assertEquals("Change not visible to parent", newValue, conf
                 .getString("element2.subelement.subsubelement"));
@@ -1229,7 +1229,7 @@
         node.addChild(child);
         ConfigurationNode attr = new DefaultConfigurationNode("attr");
         node.addAttribute(attr);
-        ConfigurationNode node2 = conf.createNode("test2");
+        ConfigurationNode node2 = conf.createNode(null, "test2");
         Collection<ConfigurationNode> nodes = new ArrayList<ConfigurationNode>(2);
         nodes.add(node);
         nodes.add(node2);
@@ -1293,7 +1293,7 @@
     public void testSaveAfterCreateWithCopyConstructor()
             throws ConfigurationException
     {
-        HierarchicalConfiguration hc = conf.configurationAt("element2");
+        AbstractHierarchicalConfiguration<ConfigurationNode> hc = conf.configurationAt("element2");
         conf = new XMLConfiguration(hc);
         conf.save(testSaveConf);
         XMLConfiguration checkConfig = new XMLConfiguration();