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.