commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alec Swan <alecs...@gmail.com>
Subject Re: [configuration] Merging overrides with defaults
Date Wed, 17 Jun 2009 20:29:17 GMT
Can the following be done with Commons Configurations?

1. Load defaults into a PropertyConfiguration object.
2. Load overrides into a Java Properties object. (Note that I do not need to
preserve the formatting of overrides.)
3. Iterate over the overrides properties and set values on corresponding
default properties by calling PropertyConfiguration.setXXX methods.
4. Save the resulting PropertyConfiguration object.

How  can I make sure that the resulting PropertyConfiguration object
preserves comments from the original defaults?

Thanks.

Alec


On Wed, Jun 17, 2009 at 1:54 PM, Oliver Heger
<oliver.heger@oliver-heger.de>wrote:

> Alec Swan schrieb:
>
>> I wrote the code following the example on
>>
>> http://commons.apache.org/configuration/userguide-1.2/howto_compositeconfiguration.html
>>
>> There is no save() method in CompositeConfiguration. How can I save it?
>>
>> Thanks.
>>
>
> The merged configuration produced by CompositeConfiguration is only
> virtual, i.e. there is no physical PropertiesConfiguration containing the
> merged properties. It lives only in memory and cannot be saved.
>
> I am afraid, Commons Configuration does not provide an easy solution for
> your problem. You can copy the content of the composite configuration into a
> properties configuration, e.g.:
>
> PropertiesConfiguration propConfig = new PropertiesConfiguration();
> propConfig.copy(compositeConfig);
> propConfig.save(someFile);
>
> But this will copy only the properties and not the comments or the overall
> layout.
>
> Oliver
>
>
>
>>
>> On Wed, Jun 17, 2009 at 11:23 AM, Jörg Schaible <joerg.schaible@gmx.de
>> >wrote:
>>
>>  Alec Swan wrote at Mittwoch, 17. Juni 2009 18:39:
>>>
>>>  Thank you for updating the subject, Jörg.
>>>>
>>>> I changed the order in which I add defaults and overrides. The following
>>>> is the new code:
>>>>
>>>>                    // merge overrides with defaults
>>>>                    CompositeConfiguration compositeConfig = new
>>>> CompositeConfiguration(overridingConfig);
>>>>                    compositeConfig.addConfiguration(defaultConfig);
>>>>
>>>>                    // convert merged properties to string
>>>>                    StringWriter writer = new StringWriter();
>>>>                    overridingConfig.save(writer);
>>>>
>>>> defaultConfig contains the following properties:
>>>> # A property
>>>> A = 1
>>>> # B property
>>>> B = 2
>>>>
>>>> overridingConfig contains the following properties:
>>>> B = 3
>>>>
>>>> I expected the merged content written to the writer to contain these
>>>> properties:
>>>> # A property
>>>> A = 1
>>>> # B property
>>>> B = 3
>>>>
>>>> Instead, the merged content written to the writer is the same as the
>>>> overridingConfig:
>>>> B = 3
>>>>
>>>> Could anybody tell me what's wrong with my code?
>>>>
>>> You saved the overridingConfiguration and not the compositeConfig.
>>>
>>> - Jörg
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
>>> For additional commands, e-mail: dev-help@commons.apache.org
>>>
>>>
>>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message