Uploaded image for project: 'Commons Configuration'
  1. Commons Configuration
  2. CONFIGURATION-89

[configuration] Setting the reloading strategy to FileChangedReloadingStrategy erases entire configuration

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Fixed
    • 1.1
    • 1.2
    • None
    • None
    • Operating System: Windows XP
      Platform: PC

    • 34441

    Description

      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")); }

      Attachments

        Activity

          People

            Unassigned Unassigned
            bsoutham@gmail.com Blaine R Southam
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: