commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Oliver Heger <oliver.he...@oliver-heger.de>
Subject Re: [configuration] Character position of key in file
Date Tue, 15 Nov 2016 20:35:57 GMT
Hi Greg,

Am 14.11.2016 um 22:34 schrieb Greg Torrance:
> Thanks Oliver.
> 
> Regarding the Configuration API, is it possible to replace not just
> values but keys, too? For example, could I replace
> 
> <ReplaceMe id="4"/>
> 
> with
> 
> <NewKey>
>    <NewChildKey1>
>       <NewChildKey2>Some Value</NewChildKey2>
>    </NewChildKey1>
> </NewKey>
> 
> If so, can you suggest what class to look at first (for accomplishing
> this)?

This is indeed a tough one. There are multiple options, but I am not
sure whether they fully cover your use case; you will certainly need
some experiments:

- With the high-level API (offered by Configuration) you can delete the
key to be replaced and then use the addNodes() method to insert a nodes
structure as replacement. The tricky part is to get the key for
addNodes() right, so the replacement goes to the desired position. The
configuration's expression engine may help you here. It has methods to
query for keys (and receive matching node objects) and to obtain a
canonical key for a given node.

- You may also operate on the hierarchical configuration's node
structure directly. The root node can be queried via the node model
getNodeModel()). As this structure is immutable, you cannot directly
change it, but you have to create a copy which might not be that efficient.

- Unfortunately, XMLConfiguration has no direct hooks to manipulate the
node creation process. There are some helper methods, but these are private.

The use case is interesting. It would be good to offer some generic
support for configuration pre-processing, independent on a concrete
implementation. However, this is probably not easy to implement, and it
may still be insufficient for specific use cases.

Oliver

> 
> Thanks,
> Greg
> 
> On 11/14/2016 04:27 PM, Oliver Heger wrote:
>> Hi Greg,
>>
>> Am 14.11.2016 um 19:01 schrieb Greg Torrance:
>>> I hope I'm not asking too many questions...
>>>
>>> I wonder if it is possible to determine the character/byte position
>>> of a particular key in a configuration file?
>> No, the original position from where data is read is not stored in the
>> resulting configuration.
>>
>>> My intent is to do a pre-pass of an XML configuration file in which
>>> certain configuration keys/values are replaced by other keys/values.
>>> Once that is done the file will be reloaded. I realize this is
>>> possible outside of Commons Configuration, but I was wondering if
>>> there is a "hook" in the tool that might help simplify the process.
>>>
>> But wouldn't it be easier to do this with the Configuration API? Load
>> the configuration, iterate over its keys, replace data as appropriate
>> and save the result?
>>
>> Oliver
>>
>>> Thanks,
>>> Greg
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
>> For additional commands, e-mail: user-help@commons.apache.org
>>
>>
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message