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"));