You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by eb...@apache.org on 2009/06/21 15:23:25 UTC

svn commit: r787009 - in /commons/proper/configuration/trunk: conf/ src/java/org/apache/commons/configuration/plist/ src/test/org/apache/commons/configuration/plist/ xdocs/

Author: ebourg
Date: Sun Jun 21 13:23:24 2009
New Revision: 787009

URL: http://svn.apache.org/viewvc?rev=787009&view=rev
Log:
Fixed empty dictionaries <dict/> (CONFIGURATION-362)

Modified:
    commons/proper/configuration/trunk/conf/test.plist.xml
    commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/XMLPropertyListConfiguration.java
    commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestXMLPropertyListConfiguration.java
    commons/proper/configuration/trunk/xdocs/changes.xml

Modified: commons/proper/configuration/trunk/conf/test.plist.xml
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/conf/test.plist.xml?rev=787009&r1=787008&r2=787009&view=diff
==============================================================================
--- commons/proper/configuration/trunk/conf/test.plist.xml (original)
+++ commons/proper/configuration/trunk/conf/test.plist.xml Sun Jun 21 13:23:24 2009
@@ -80,5 +80,8 @@
             </dict>
         </dict>
 
+        <key>empty-dictionary</key>
+        <dict/>
+
     </dict>
 </plist>

Modified: commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/XMLPropertyListConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/XMLPropertyListConfiguration.java?rev=787009&r1=787008&r2=787009&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/XMLPropertyListConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/XMLPropertyListConfiguration.java Sun Jun 21 13:23:24 2009
@@ -304,6 +304,10 @@
 
             out.println(padding + "</dict>");
         }
+        else if (node.getValue() == null)
+        {
+            out.println(padding + "<dict/>");
+        }
         else
         {
             Object value = node.getValue();
@@ -400,10 +404,14 @@
             String base64 = new String(Base64.encodeBase64((byte[]) value));
             out.println(padding + "<data>" + StringEscapeUtils.escapeXml(base64) + "</data>");
         }
-        else
+        else if (value != null)
         {
             out.println(padding + "<string>" + StringEscapeUtils.escapeXml(String.valueOf(value)) + "</string>");
         }
+        else
+        {
+            out.println(padding + "<string/>");
+        }
     }
 
     /**

Modified: commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestXMLPropertyListConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestXMLPropertyListConfiguration.java?rev=787009&r1=787008&r2=787009&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestXMLPropertyListConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestXMLPropertyListConfiguration.java Sun Jun 21 13:23:24 2009
@@ -270,6 +270,29 @@
         }
     }
 
+    public void testSaveEmptyDictionary() throws Exception
+    {
+        File savedFile = new File("target/testsave.plist.xml");
+
+        // remove the file previously saved if necessary
+        if (savedFile.exists())
+        {
+            assertTrue(savedFile.delete());
+        }
+        
+        // save the configuration
+        String filename = savedFile.getAbsolutePath();
+        config.save(filename);
+
+        assertTrue("The saved file doesn't exist", savedFile.exists());
+
+        // read the configuration and compare the properties
+        Configuration checkConfig = new XMLPropertyListConfiguration(new File(filename));
+        
+        assertEquals(null, config.getProperty("empty-dictionary"));
+        assertEquals(null, checkConfig.getProperty("empty-dictionary"));
+    }
+
     /**
      * Ensure that setProperty doesn't alter an array of byte
      * since it's a first class type in plist file

Modified: commons/proper/configuration/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/xdocs/changes.xml?rev=787009&r1=787008&r2=787009&view=diff
==============================================================================
--- commons/proper/configuration/trunk/xdocs/changes.xml (original)
+++ commons/proper/configuration/trunk/xdocs/changes.xml Sun Jun 21 13:23:24 2009
@@ -23,6 +23,10 @@
 
   <body>
     <release version="1.7" date="in SVN" description="">
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-362">
+        Empty dictionary elements in an XML PropertyList are now preserved and no longer
+        turned into a string when the configuration is saved.
+      </action>
       <action dev="oheger" type="fix" issue="CONFIGURATION-385">
         DatabaseConfiguration now generates correct events for the clear() and
         clearProperty() methods.