Author: oheger
Date: Sat Nov  5 10:58:40 2005
New Revision: 331016

URL: http://svn.apache.org/viewcvs?rev=331016&view=rev
Log:
Updated PropertiesConfiguration to use the platform specific line separator 
when writing files. Thanks to Kay Doebl for the patch.

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

Modified: 
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/PropertiesConfiguration.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/PropertiesConfiguration.java?rev=331016&r1=331015&r2=331016&view=diff
==============================================================================
--- 
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/PropertiesConfiguration.java
 (original)
+++ 
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/PropertiesConfiguration.java
 Sat Nov  5 10:58:40 2005
@@ -159,6 +159,9 @@
      */
     private static final String DEFAULT_ENCODING = "ISO-8859-1";
 
+    /** Constant for the platform specific line separator.*/
+    private static final String LINE_SEPARATOR = 
System.getProperty("line.separator");
+
     /** Constant for the radix of hex numbers.*/
     private static final int HEX_RADIX = 16;
 
@@ -383,12 +386,12 @@
                 {
                     out.writeComment(line);
                 }
-                out.write("\n");
+                out.writeln(null);
             }
 
             out.writeComment("written by PropertiesConfiguration");
             out.writeComment(new Date().toString());
-            out.write("\n");
+            out.writeln(null);
 
             Iterator keys = getKeys();
             while (keys.hasNext())
@@ -549,7 +552,7 @@
                 write(v);
             }
 
-            write('\n');
+            writeln(null);
         }
 
         /**
@@ -574,7 +577,7 @@
          */
         public void writeComment(String comment) throws IOException
         {
-            write("# " + comment + "\n");
+            writeln("# " + comment);
         }
 
         /**
@@ -605,6 +608,22 @@
             }
 
             return newkey.toString();
+        }
+
+        /**
+         * Helper method for writing a line with the platform specific line
+         * ending.
+         *
+         * @param s the content of the line (may be <b>null</b>)
+         * @throws IOException if an error occurs
+         */
+        private void writeln(String s) throws IOException
+        {
+            if (s != null)
+            {
+                write(s);
+            }
+            write(LINE_SEPARATOR);
         }
 
     } // class PropertiesWriter

Modified: 
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestPropertiesConfiguration.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestPropertiesConfiguration.java?rev=331016&r1=331015&r2=331016&view=diff
==============================================================================
--- 
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestPropertiesConfiguration.java
 (original)
+++ 
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestPropertiesConfiguration.java
 Sat Nov  5 10:58:40 2005
@@ -20,6 +20,7 @@
 import java.io.FileWriter;
 import java.io.PrintWriter;
 import java.io.StringReader;
+import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -397,5 +398,24 @@
         assertEquals(true, config.getBoolean("deeptest"));
         assertEquals(true, config.getBoolean("deepinclude"));
         assertFalse(config.containsKey("deeptestinvalid"));
+    }
+
+    /**
+     * Tests whether the correct line separator is used.
+     */
+    public void testLineSeparator() throws ConfigurationException
+    {
+        final String EOL = System.getProperty("line.separator");
+        conf = new PropertiesConfiguration();
+        conf.setHeader("My header");
+        conf.setProperty("prop", "value");
+
+        StringWriter out = new StringWriter();
+        conf.save(out);
+        String content = out.toString();
+        assertTrue("Header could not be found", content.indexOf("# My header"
+                + EOL + EOL) == 0);
+        assertTrue("Property could not be found", content
+                .indexOf("prop = value" + EOL) > 0);
     }
 }

Modified: jakarta/commons/proper/configuration/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/xdocs/changes.xml?rev=331016&r1=331015&r2=331016&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/xdocs/changes.xml (original)
+++ jakarta/commons/proper/configuration/trunk/xdocs/changes.xml Sat Nov  5 
10:58:40 2005
@@ -31,7 +31,8 @@
       <action dev="oheger" type="update" due-to="Kay Doebl" issue="37293">
         XMLConfiguration now prints the used encoding in the xml declaration of
         generated files. In earlier versions always the default encoding was
-        written.
+        written. PropertiesConfiguration now always uses the platform specific
+        line separator when saving files.
       </action>
       <action dev="ebourg" type="update" issue="36991">
         PropertiesConfiguration now translates properly the escaped unicode



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

Reply via email to