[ 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.