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 2013/02/23 21:22:23 UTC

svn commit: r1449403 - in /commons/proper/configuration/trunk/src: main/java/org/apache/commons/configuration/HierarchicalINIConfiguration.java test/java/org/apache/commons/configuration/TestHierarchicalINIConfiguration.java

Author: oheger
Date: Sat Feb 23 20:22:23 2013
New Revision: 1449403

URL: http://svn.apache.org/r1449403
Log:
HierarchicalINIConfiguration no longer extends AbstractHierarchicalFileConfiguration.

Modified:
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/HierarchicalINIConfiguration.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestHierarchicalINIConfiguration.java

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/HierarchicalINIConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/HierarchicalINIConfiguration.java?rev=1449403&r1=1449402&r2=1449403&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/HierarchicalINIConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/HierarchicalINIConfiguration.java Sat Feb 23 20:22:23 2013
@@ -17,12 +17,10 @@
 package org.apache.commons.configuration;
 
 import java.io.BufferedReader;
-import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.Reader;
 import java.io.Writer;
-import java.net.URL;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
@@ -202,7 +200,7 @@ import org.apache.commons.configuration.
  * @since 1.6
  */
 public class HierarchicalINIConfiguration extends
-        AbstractHierarchicalFileConfiguration implements FileBasedConfiguration
+        BaseHierarchicalConfiguration implements FileBasedConfiguration
 {
     /**
      * The characters that signal the start of a comment line.
@@ -243,38 +241,15 @@ public class HierarchicalINIConfiguratio
     }
 
     /**
-     * Create and load the ini configuration from the given file.
+     * Creates a new instance of {@code HierarchicalINIConfiguration} with the
+     * content of the specified {@code HierarchicalConfiguration}.
      *
-     * @param filename The name pr path of the ini file to load.
-     * @throws ConfigurationException If an error occurs while loading the file
+     * @param c the configuration to be copied
+     * @since 2.0
      */
-    public HierarchicalINIConfiguration(String filename)
-            throws ConfigurationException
+    public HierarchicalINIConfiguration(HierarchicalConfiguration c)
     {
-        super(filename);
-    }
-
-    /**
-     * Create and load the ini configuration from the given file.
-     *
-     * @param file The ini file to load.
-     * @throws ConfigurationException If an error occurs while loading the file
-     */
-    public HierarchicalINIConfiguration(File file)
-            throws ConfigurationException
-    {
-        super(file);
-    }
-
-    /**
-     * Create and load the ini configuration from the given url.
-     *
-     * @param url The url of the ini file to load.
-     * @throws ConfigurationException If an error occurs while loading the file
-     */
-    public HierarchicalINIConfiguration(URL url) throws ConfigurationException
-    {
-        super(url);
+        super(c);
     }
 
     /**
@@ -283,8 +258,9 @@ public class HierarchicalINIConfiguratio
      * @param writer - The writer to save the configuration to.
      * @throws ConfigurationException If an error occurs while writing the
      *         configuration
+     * @throws IOException if an I/O error occurs
      */
-    public void save(Writer writer) throws ConfigurationException
+    public void write(Writer writer) throws ConfigurationException, IOException
     {
         PrintWriter out = new PrintWriter(writer);
         Iterator<String> it = getSections().iterator();
@@ -337,11 +313,6 @@ public class HierarchicalINIConfiguratio
         out.flush();
     }
 
-    public void write(Writer out) throws ConfigurationException, IOException
-    {
-        save(out);
-    }
-
     /**
      * Load the configuration from the given reader. Note that the
      * {@code clear()} method is not called so the configuration read in will
@@ -350,63 +321,53 @@ public class HierarchicalINIConfiguratio
      * @param reader The reader to read the configuration from.
      * @throws ConfigurationException If an error occurs while reading the
      *         configuration
+     * @throws IOException if an I/O error occurs
      */
-    public void load(Reader reader) throws ConfigurationException
+    public void read(Reader in) throws ConfigurationException, IOException
     {
-        try
-        {
-            BufferedReader bufferedReader = new BufferedReader(reader);
-            ConfigurationNode sectionNode = getRootNode();
+        BufferedReader bufferedReader = new BufferedReader(in);
+        ConfigurationNode sectionNode = getRootNode();
 
-            String line = bufferedReader.readLine();
-            while (line != null)
+        String line = bufferedReader.readLine();
+        while (line != null)
+        {
+            line = line.trim();
+            if (!isCommentLine(line))
             {
-                line = line.trim();
-                if (!isCommentLine(line))
+                if (isSectionLine(line))
                 {
-                    if (isSectionLine(line))
+                    String section = line.substring(1, line.length() - 1);
+                    sectionNode = getSectionNode(section);
+                }
+
+                else
+                {
+                    String key = "";
+                    String value = "";
+                    int index = findSeparator(line);
+                    if (index >= 0)
                     {
-                        String section = line.substring(1, line.length() - 1);
-                        sectionNode = getSectionNode(section);
+                        key = line.substring(0, index);
+                        value =
+                                parseValue(line.substring(index + 1),
+                                        bufferedReader);
                     }
-
                     else
                     {
-                        String key = "";
-                        String value = "";
-                        int index = findSeparator(line);
-                        if (index >= 0)
-                        {
-                            key = line.substring(0, index);
-                            value = parseValue(line.substring(index + 1), bufferedReader);
-                        }
-                        else
-                        {
-                            key = line;
-                        }
-                        key = key.trim();
-                        if (key.length() < 1)
-                        {
-                            // use space for properties with no key
-                            key = " ";
-                        }
-                        createValueNodes(sectionNode, key, value);
+                        key = line;
                     }
+                    key = key.trim();
+                    if (key.length() < 1)
+                    {
+                        // use space for properties with no key
+                        key = " ";
+                    }
+                    createValueNodes(sectionNode, key, value);
                 }
-
-                line = bufferedReader.readLine();
             }
-        }
-        catch (IOException e)
-        {
-            throw new ConfigurationException(
-                    "Unable to load the configuration", e);
-        }
-    }
 
-    public void read(Reader in) throws ConfigurationException, IOException
-    {
-        load(in);
+            line = bufferedReader.readLine();
+        }
     }
 
     /**

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestHierarchicalINIConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestHierarchicalINIConfiguration.java?rev=1449403&r1=1449402&r2=1449403&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestHierarchicalINIConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestHierarchicalINIConfiguration.java Sat Feb 23 20:22:23 2013
@@ -33,6 +33,8 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.commons.configuration.builder.FileBasedBuilderParametersImpl;
+import org.apache.commons.configuration.builder.FileBasedConfigurationBuilder;
 import org.junit.After;
 import org.junit.Test;
 
@@ -140,7 +142,14 @@ public class TestHierarchicalINIConfigur
             throws ConfigurationException
     {
         StringReader reader = new StringReader(data);
-        instance.load(reader);
+        try
+        {
+            instance.read(reader);
+        }
+        catch (IOException e)
+        {
+            throw new ConfigurationException(e);
+        }
         reader.close();
     }
 
@@ -179,7 +188,7 @@ public class TestHierarchicalINIConfigur
         instance.addProperty("section3.interpolated", "${section3.var1}");
         instance.addProperty("section3.multi", "foo");
         instance.addProperty("section3.multi", "bar");
-        instance.save(writer);
+        instance.write(writer);
 
         assertEquals("Wrong content of ini file", INI_DATA, writer.toString());
     }
@@ -196,7 +205,14 @@ public class TestHierarchicalINIConfigur
     {
         HierarchicalINIConfiguration config = setUpConfig(content);
         StringWriter writer = new StringWriter();
-        config.save(writer);
+        try
+        {
+            config.write(writer);
+        }
+        catch (IOException e)
+        {
+            throw new ConfigurationException(e);
+        }
         assertEquals("Wrong content of ini file", content, writer.toString());
     }
 
@@ -239,38 +255,19 @@ public class TestHierarchicalINIConfigur
     }
 
     /**
-     * Tests loading a configuration from a File.
-     */
-    @Test
-    public void testLoadFile() throws ConfigurationException, IOException
-    {
-        writeTestFile(INI_DATA);
-        HierarchicalINIConfiguration config = new HierarchicalINIConfiguration(
-                TEST_FILE);
-        checkContent(config);
-    }
-
-    /**
-     * Tests loading a configuration from a file name.
-     */
-    @Test
-    public void testLoadFileName() throws ConfigurationException, IOException
-    {
-        writeTestFile(INI_DATA);
-        HierarchicalINIConfiguration config = new HierarchicalINIConfiguration(
-                TEST_FILE.getAbsolutePath());
-        checkContent(config);
-    }
-
-    /**
-     * Tests loading a configuration from a URL.
+     * Tests whether an instance can be created using a file-based builder.
      */
     @Test
-    public void testLoadURL() throws ConfigurationException, IOException
+    public void testLoadFromBuilder() throws ConfigurationException,
+            IOException
     {
         writeTestFile(INI_DATA);
-        HierarchicalINIConfiguration config = new HierarchicalINIConfiguration(
-                TEST_FILE.toURI().toURL());
+        FileBasedConfigurationBuilder<HierarchicalINIConfiguration> builder =
+                new FileBasedConfigurationBuilder<HierarchicalINIConfiguration>(
+                        HierarchicalINIConfiguration.class);
+        builder.configure(new FileBasedBuilderParametersImpl()
+                .setFile(TEST_FILE));
+        HierarchicalINIConfiguration config = builder.getConfiguration();
         checkContent(config);
     }
 
@@ -390,10 +387,10 @@ public class TestHierarchicalINIConfigur
         config.setProperty("section.key1", "1;2;3");
 
         StringWriter writer = new StringWriter();
-        config.save(writer);
+        config.write(writer);
 
         HierarchicalINIConfiguration config2 = new HierarchicalINIConfiguration();
-        config2.load(new StringReader(writer.toString()));
+        config2.read(new StringReader(writer.toString()));
 
         assertEquals("value", "1;2;3", config2.getString("section.key1"));
     }
@@ -740,15 +737,16 @@ public class TestHierarchicalINIConfigur
      * with delimiter characters. This test is related to CONFIGURATION-409.
      */
     @Test
-    public void testSaveKeysWithDelimiters() throws ConfigurationException
+    public void testSaveKeysWithDelimiters() throws ConfigurationException, IOException
     {
         HierarchicalINIConfiguration conf = new HierarchicalINIConfiguration();
         final String section = "Section..with..dots";
         conf.addProperty(section + ".test1", "test1");
         conf.addProperty(section + ".test2", "test2");
-        conf.save(TEST_FILE);
+        StringWriter writer = new StringWriter();
+        conf.write(writer);
         conf = new HierarchicalINIConfiguration();
-        conf.load(TEST_FILE);
+        conf.read(new StringReader(writer.toString()));
         assertEquals("Wrong value (1)", "test1", conf.getString(section + ".test1"));
         assertEquals("Wrong value (2)", "test2", conf.getString(section + ".test2"));
     }
@@ -821,7 +819,7 @@ public class TestHierarchicalINIConfigur
      * saved later.
      */
     @Test
-    public void testSaveClearedSection() throws ConfigurationException
+    public void testSaveClearedSection() throws ConfigurationException, IOException
     {
         final String data = "[section]\ntest = failed\n";
         HierarchicalINIConfiguration config = setUpConfig(data);
@@ -830,7 +828,7 @@ public class TestHierarchicalINIConfigur
         sub.clear();
         sub.setProperty("test", "success");
         StringWriter writer = new StringWriter();
-        config.save(writer);
+        config.write(writer);
         HierarchicalConfiguration config2 = setUpConfig(writer.toString());
         assertEquals("Wrong value", "success",
                 config2.getString("section.test"));
@@ -840,7 +838,7 @@ public class TestHierarchicalINIConfigur
      * Tests whether a duplicate session is merged.
      */
     @Test
-    public void testMergeDuplicateSection() throws ConfigurationException
+    public void testMergeDuplicateSection() throws ConfigurationException, IOException
     {
         final String data =
                 "[section]\nvar1 = sec1\n\n" + "[section]\nvar2 = sec2\n";
@@ -851,7 +849,7 @@ public class TestHierarchicalINIConfigur
         assertEquals("Wrong sub value 1", "sec1", sub.getString("var1"));
         assertEquals("Wrong sub value 2", "sec2", sub.getString("var2"));
         StringWriter writer = new StringWriter();
-        config.save(writer);
+        config.write(writer);
         String content = writer.toString();
         int pos = content.indexOf("[section]");
         assertTrue("Section not found: " + content, pos >= 0);
@@ -865,7 +863,7 @@ public class TestHierarchicalINIConfigur
      */
     @Test
     public void testGetSectionNonExistingManipulate()
-            throws ConfigurationException
+            throws ConfigurationException, IOException
     {
         HierarchicalINIConfiguration config = setUpConfig(INI_DATA);
         SubnodeConfiguration section = config.getSection("newSection");
@@ -873,7 +871,7 @@ public class TestHierarchicalINIConfigur
         assertEquals("Main config not updated", "success",
                 config.getString("newSection.test"));
         StringWriter writer = new StringWriter();
-        config.save(writer);
+        config.write(writer);
         HierarchicalINIConfiguration config2 = setUpConfig(writer.toString());
         section = config2.getSection("newSection");
         assertEquals("Wrong value", "success", section.getString("test"));