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.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.