Oliver,

this is really strange. I promise that the behaviour of the Configuration 
package was exactly as I wrote. As you mentioned, I changed the code

PropertiesConfiguration c = new PropertiesConfiguration(PROPERTIESFILE);
c.clearProperty(entry);
c.save();

into

PropertiesConfiguration c = new PropertiesConfiguration(PROPERTIESFILE);
System.out.println("contains key before del: " + c.containsKey(entry));
c.clearProperty(entry);
System.out.println("contains key after del: " + c.containsKey(entry));
c.save();

The strange thing is, that this code did not only produce the correct output 
(i.e., "true" and "false") it also produced the correct result. I really don't 
know what happened. Anyway, it works! So, Oliver, thank you very much for your 
help and support.

Bye
        Christian

-----Original Message-----
From: Oliver Heger [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, August 08, 2006 10:35 PM
To: Jakarta Commons Users List
Subject: Re: AW: Commons Configuration: delete entry

Christian Koncilia wrote:
> Hi Oliver,
> 
> thats what I tried before but it doesn't work neither. Another strange thing, 
> if I use "config.clear()" to clear the whole properties file, everything 
> except(!) the last thing I read is deleted...
> 
> This looks to me like some internal bug. Or do you have another idea?
> 
> Bye
>     Christian

Christian,

I added the following test cases to the unit test class of 
PropertiesConfiguration [1]:


     public void testClearProperty() throws ConfigurationException
     {
         if (testSavePropertiesFile.exists())
         {
             assertTrue(testSavePropertiesFile.delete());
         }
         assertTrue("Property not found", 
conf.containsKey("configuration.loaded"));
         conf.clearProperty("configuration.loaded");
         conf.save(testSavePropertiesFile);

         PropertiesConfiguration conf2 = new 
PropertiesConfiguration(testSavePropertiesFile);
         assertFalse("Property still contained", 
conf2.containsKey("configuration.loaded"));
     }

     public void testClear() throws ConfigurationException
     {
         if (testSavePropertiesFile.exists())
         {
             assertTrue(testSavePropertiesFile.delete());
         }
         conf.clear();
         conf.save(testSavePropertiesFile);

         PropertiesConfiguration conf2 = new 
PropertiesConfiguration(testSavePropertiesFile);
         assertTrue("Configuration not empty", conf2.isEmpty());
     }

Here conf is an instance of PropertiesConfiguration that is initialized 
with a test properties file. testSavePropertiesFile is a File object, 
which points to the target file. Both test cases work for me, so I can't 
reproduce your problem.

Which version of Commons Configuration do you use?

After you have removed the property by calling clearProperty() can you 
check what containsKey() says? And does the isEmpty() method return true 
after you have called clear()?

Oliver

[1] 
http://svn.apache.org/repos/asf/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestPropertiesConfiguration.java

> 
> -----Ursprüngliche Nachricht-----
> Von: Oliver Heger [mailto:[EMAIL PROTECTED]
> Gesendet: Mo 07.08.2006 21:53
> An: Jakarta Commons Users List
> Betreff: Re: Commons Configuration: delete entry
>  
> Christian Koncilia wrote:
>> Hello everybody,
>>
>> I have a question regarding the Commons Configuration. Let's assume I
>> have a configuration file "myprops.properties" that looks like this:
>>
>>> -------------------------
>> # written by PropertiesConfiguration
>> # Mon Aug 07 08:29:12 CEST 2006
>>
>> group1.entry1 = value1
>> group1.entry2 = value2
>> group1.entry3 = value3
>>> -------------------------
>> Now I would like to simply delete an entry. For instance, I would like
>> to remove the whole line "group1.entry2 = value2" from my properties
>> file. How do I do this?
>>
>> Using
>>
>>   PropertiesConfiguration config = 
>>             new PropertiesConfiguration("myprops.properties");
>>   config.clearProperty("group1.entry2 = value2");
>>   config.save();
>>
>> doesn't work. 
>>
>> Thanks for your help!
>>
>> Bye
>>     Christian
>>
> You only need to pass in the key of the property you want to delete to 
> clearProperty(), so the line in question should run:
> 
> config.clearProperty("group1.entry2");
> 
> HTH
> Oliver
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 


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


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

Reply via email to