Author: ebourg
Date: Tue May 22 16:09:45 2007
New Revision: 540786

URL: http://svn.apache.org/viewvc?view=rev&rev=540786
Log:
Fixed INIConfiguration.save() to handle collection values and interpolated 
variables (CONFIGURATION-270)

Modified:
    
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/INIConfiguration.java
    
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestINIConfiguration.java
    jakarta/commons/proper/configuration/trunk/xdocs/changes.xml

Modified: 
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/INIConfiguration.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/INIConfiguration.java?view=diff&rev=540786&r1=540785&r2=540786
==============================================================================
--- 
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/INIConfiguration.java
 (original)
+++ 
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/INIConfiguration.java
 Tue May 22 16:09:45 2007
@@ -24,6 +24,7 @@
 import java.io.Reader;
 import java.io.Writer;
 import java.net.URL;
+import java.util.Collection;
 import java.util.Iterator;
 import java.util.Set;
 import java.util.TreeSet;
@@ -57,7 +58,7 @@
  * </code>
  *
  * <p>
- * The format of ini files is fairly straight forward and is comosed of three
+ * The format of ini files is fairly straight forward and is composed of three
  * components:<br>
  * <ul>
  * <li><b>Sections:</b> Ini files are split into sections, each section
@@ -223,32 +224,44 @@
      */
     public void save(Writer writer) throws ConfigurationException
     {
-        PrintWriter pw = new PrintWriter(writer);
+        PrintWriter out = new PrintWriter(writer);
         Iterator it = getSections().iterator();
         while (it.hasNext())
         {
             String section = (String) it.next();
-            pw.print("[");
-            pw.print(section);
-            pw.print("]");
-            pw.println();
+            out.print("[");
+            out.print(section);
+            out.print("]");
+            out.println();
 
-            Configuration values = subset(section);
-            Iterator keys = values.getKeys();
+            Configuration subset = subset(section);
+            Iterator keys = subset.getKeys();
             while (keys.hasNext())
             {
                 String key = (String) keys.next();
-                String value = values.getString(key);
-                pw.print(key);
-                pw.print(" = ");
-                pw.print(formatValue(value));
-                pw.println();
+                Object value = subset.getProperty(key);
+                if (value instanceof Collection) {
+                    Iterator values = ((Collection) value).iterator();
+                    while (values.hasNext())
+                    {
+                        value = (Object) values.next();
+                        out.print(key);
+                        out.print(" = ");
+                        out.print(formatValue(value.toString()));
+                        out.println();
+                    }
+                } else {
+                    out.print(key);
+                    out.print(" = ");
+                    out.print(formatValue(value.toString()));
+                    out.println();
+                }
             }
 
-            pw.println();
+            out.println();
         }
 
-        pw.flush();
+        out.flush();
     }
 
     /**

Modified: 
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestINIConfiguration.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestINIConfiguration.java?view=diff&rev=540786&r1=540785&r2=540786
==============================================================================
--- 
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestINIConfiguration.java
 (original)
+++ 
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestINIConfiguration.java
 Tue May 22 16:09:45 2007
@@ -42,14 +42,17 @@
             "[section1]" + LINE_SEPARATOR
             + "var1 = foo" + LINE_SEPARATOR
             + "var2 = 451" + LINE_SEPARATOR
-             + LINE_SEPARATOR
+            + LINE_SEPARATOR
             + "[section2]" + LINE_SEPARATOR
             + "var1 = 123.45" + LINE_SEPARATOR
             + "var2 = bar" + LINE_SEPARATOR
-             + LINE_SEPARATOR
+            + LINE_SEPARATOR
             + "[section3]" + LINE_SEPARATOR
             + "var1 = true" + LINE_SEPARATOR
-             + LINE_SEPARATOR;
+            + "interpolated = ${section3.var1}" + LINE_SEPARATOR
+            + "multi = foo" + LINE_SEPARATOR
+            + "multi = bar" + LINE_SEPARATOR
+            + LINE_SEPARATOR;
 
        private static final String INI_DATA2 =
             "[section4]" + LINE_SEPARATOR
@@ -71,6 +74,9 @@
                instance.addProperty("section2.var1", "123.45");
                instance.addProperty("section2.var2", "bar");
                instance.addProperty("section3.var1", "true");
+               instance.addProperty("section3.interpolated", 
"${section3.var1}");
+               instance.addProperty("section3.multi", "foo");
+               instance.addProperty("section3.multi", "bar");
                instance.save(writer);
         
         assertEquals("Wrong content of ini file", INI_DATA, writer.toString());

Modified: jakarta/commons/proper/configuration/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/xdocs/changes.xml?view=diff&rev=540786&r1=540785&r2=540786
==============================================================================
--- jakarta/commons/proper/configuration/trunk/xdocs/changes.xml (original)
+++ jakarta/commons/proper/configuration/trunk/xdocs/changes.xml Tue May 22 
16:09:45 2007
@@ -23,6 +23,10 @@
 
   <body>
     <release version="1.5-SNAPSHOT" date="in SVN" description="">
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-270">
+        List properties and properties containing interpolated variables
+        are now properly saved by INIConfiguration.
+      </action>
       <action dev="oheger" type="update" issue="CONFIGURATION-268">
         When delimiter parsing was disabled for XMLConfiguration, saving and
         loading the configuration accidently added escape characters to 
properties



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to