HierachicalINIConfiguration has problems with configurations only containing a 
global section
---------------------------------------------------------------------------------------------

                 Key: CONFIGURATION-424
                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-424
             Project: Commons Configuration
          Issue Type: Bug
          Components: Format
            Reporter: André Weihe
            Priority: Critical


HierachicalINIConfiguration#getSections() does not correctly deal with 
configurations containing only a globalSection() leading for example to a 
configuration containing only a global section to be saved as a zero length 
file.

The current code only acknowledges a global section when at least one other 
named section is present, if none is present it just returns an empty set.
Since HierachicalINIConfiguration#save() saves only the contents of the set 
returned by getSections() this leads to an ini file being loaded and saved 
again to be saved as a zero length file resulting in the loss of all data in 
the file (thus the critical priority).

Workaround:
Create at least one named section

Proposed fix (sourcecode): 
Set sections = new ListOrderedSet();

for (Iterator it = getRootNode().getChildren().iterator(); it.hasNext();)
{
    ConfigurationNode node = (ConfigurationNode) it.next();
    if (isSectionNode(node))
    {
        sections.add(node.getName());
    }
    else
    {
        sections.add(null);
    }
}

return sections;


Beware:
I have NOT tested this (at all).
It's just the way I would write this method instead of the way it was written 
before. But since I don't know the big picture maybe there was a (good) reason 
to write the current version the way it is now so my seemingly easy fix could 
not work correctly.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to