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]