felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Felix Meschberger <fmesc...@gmail.com>
Subject Re: [jira] Created: (FELIX-1603) Make CM allow hierarchical values
Date Wed, 16 Sep 2009 11:31:18 GMT
Hi,

What's the community opinion on this wish ?

It breaks specification compliance but in some cases it is useful.

It may cause users for Felix configadmin to not work as expected with
other implementations of the Configuration Admin spec.

It will not work together with MetaType because MetaType does not
support nested structures and Map.

WDYT ?

Regards
Felix

Bulat Nigmatullin (JIRA) schrieb:
> Make CM allow hierarchical 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.
> 
> 

Mime
View raw message