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 2017/08/31 16:03:06 UTC

svn commit: r1806819 - in /commons/proper/configuration/trunk/src: main/java/org/apache/commons/configuration2/INIConfiguration.java test/java/org/apache/commons/configuration2/TestINIConfiguration.java

Author: oheger
Date: Thu Aug 31 16:03:06 2017
New Revision: 1806819

URL: http://svn.apache.org/viewvc?rev=1806819&view=rev
Log:
[CONFIGURATION-671] Fixed handling of empty sections in INIConfiguration.

Saving of an INIConfiguration with an empty section caused a NPE. The
cause was that nodes without children were not detected as section
nodes. Now a different criterion is used.

Modified:
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/INIConfiguration.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestINIConfiguration.java

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/INIConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/INIConfiguration.java?rev=1806819&r1=1806818&r2=1806819&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/INIConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/INIConfiguration.java Thu Aug 31 16:03:06 2017
@@ -212,6 +212,10 @@ import org.apache.commons.configuration2
  * <a href="http://commons.apache.org/proper/commons-configuration/userguide/howto_basicfeatures.html">
  * Basic features and AbstractConfiguration</a> of the user's guide.
  * </p>
+ * <p>
+ * Note that this configuration does not support properties with null values.
+ * Such properties are considered to be section nodes.
+ * </p>
  *
  * @author <a
  *         href="http://commons.apache.org/configuration/team-list.html">Commons
@@ -942,7 +946,7 @@ public class INIConfiguration extends Ba
      */
     private static boolean isSectionNode(ImmutableNode node)
     {
-        return !node.getChildren().isEmpty();
+        return node.getValue() == null;
     }
 
     /**

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestINIConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestINIConfiguration.java?rev=1806819&r1=1806818&r2=1806819&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestINIConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/TestINIConfiguration.java Thu Aug 31 16:03:06 2017
@@ -1224,6 +1224,27 @@ public class TestINIConfiguration
     }
 
     /**
+     * Tests whether an empty section can be saved. This is related to
+     * CONFIGURATION-671.
+     */
+    @Test
+    public void testWriteEmptySection()
+            throws ConfigurationException, IOException
+    {
+        final String section = "[EmptySection]";
+        INIConfiguration config = setUpConfig(section);
+        assertEquals("Wrong number of sections", 1,
+                config.getSections().size());
+        assertTrue("Section not found",
+                config.getSections().contains("EmptySection"));
+
+        StringWriter writer = new StringWriter();
+        config.write(writer);
+        assertEquals("Wrong saved configuration",
+                section + LINE_SEPARATOR + LINE_SEPARATOR, writer.toString());
+    }
+
+    /**
      * A thread class for testing concurrent access to the global section.
      */
     private static class GlobalSectionTestThread extends Thread