DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=34441>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=34441

           Summary: Setting Configuration Reloading Strategy to
                    FileChangedReloadingStrategy erases entire configuration
           Product: Commons
           Version: 1.1 Final
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: critical
          Priority: P2
         Component: Configuration
        AssignedTo: commons-dev@jakarta.apache.org
        ReportedBy: [EMAIL PROTECTED]


When setting a PropertiesConfiguration reloading strategy to
FileChangedReloadingStrategy - the entire configuration is erased.

The problem is that when the FileChangedReloadingStrategy is set, the
configuration file is erased and then reloaded and then written out.

The file is erased in AbstractFileConfiguration.save(File) when a new
FileOutputStream is created.  Then in the PropertiesConfiguration.save(Writer)
the call to getKeys() causes a reaload() to occur (which the strategy says needs
to be reloaded because it has been modified).  But the saved config file is now
zeroed out by the new file stream, and it is read in as an empty config.


Here is a testcase that exposed this defect:

    public void
testPropertiesConfigurationWithFileChangedReloadingStrategyDefect() throws
ConfigurationException, FileNotFoundException, IOException {
        FileWriter file = new FileWriter("testfile.properties");
        file.write("a=1");
        file.close();
        FileConfiguration config = new
PropertiesConfiguration("testfile.properties");
        config.setAutoSave(true);
        config.setReloadingStrategy(new FileChangedReloadingStrategy());

        assertEquals("1", config.getString("a"));
        config.setProperty("2", "b");
        assertEquals("1", config.getString("a"));                        
    }

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

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

Reply via email to