You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Bulat Nigmatullin (JIRA)" <ji...@apache.org> on 2009/09/16 10:43:57 UTC
[jira] Updated: (FELIX-1603) Allow configuration dictionary complex
values
[ https://issues.apache.org/jira/browse/FELIX-1603?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bulat Nigmatullin updated FELIX-1603:
-------------------------------------
Summary: Allow configuration dictionary complex values (was: Make CM allow hierarchical values)
> Allow configuration dictionary complex values
> ---------------------------------------------
>
> Key: FELIX-1603
> URL: https://issues.apache.org/jira/browse/FELIX-1603
> Project: Felix
> Issue Type: Wish
> Components: Configuration Admin
> Reporter: Bulat Nigmatullin
> Priority: Minor
>
> We need some extended features in ConfigurationAdmin: submaps in configuration dictionaries, which will be read by my PersistenceManager. I have idea, how to do it:
> Create an interface:
> interface ConfigurationDictionary extends Dictionary {
> public ConfigurationDictionary copy(boolean deepCopy);
> }
> Lets CaseInsenstiveDictionary implements it:
> public ConfigurationDictionary copy(boolean deepCopy) {
> return new CaseInsensitveDictionary(this, deepCopy);
> }
> And rewrite some members ConfigurationImpl:
> private volatile ConfigurationDictionary properties;
> ...
> public Dictionary getProperties( boolean deepCopy )
> {
> // no properties yet
> if ( properties == null )
> {
> return null;
> }
> ConfigurationDictionary props = properties.copy( deepCopy );
> // fix special properties (pid, factory PID, bundle location)
> setAutoProperties( props, false );
> return props;
> }
> ...
> private void configure( final Dictionary properties )
> {
> final ConfigurationDictionary newProperties;
> if ( properties == null )
> {
> newProperties = null;
> }
> else
> {
> // remove predefined properties
> clearAutoProperties( properties );
> // ensure ConfigurationDictionary
> if ( properties instanceof ConfigurationDictionary )
> {
> newProperties = ( ConfigurationDictionary ) properties;
> }
> else
> {
> newProperties = new CaseInsensitiveDictionary( properties );
> }
> }
> synchronized ( this )
> {
> this.properties = newProperties;
> this.lastModificationTime = System.currentTimeMillis();
> }
> }
> After this changes we will have possibility to create complex structures of properties. For example, nested maps or somesing else - depends on developer's wishes.
> Or, if it is not possible, just add nested maps in CaseInsensitiveDictionary implementation. But it will involve much more code changes.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.