You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Felix Meschberger (JIRA)" <ji...@apache.org> on 2009/09/25 23:09:16 UTC
[jira] Commented: (FELIX-1603) Allow configuration dictionary
complex values
[ https://issues.apache.org/jira/browse/FELIX-1603?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12759746#action_12759746 ]
Felix Meschberger commented on FELIX-1603:
------------------------------------------
As has been pointed out on the dev list [1], we would have to define a special interface to clearly separate extended functionality, because the configuration admin specification explicitly limits the value types.
[1] http://markmail.org/message/63ccajmbwhhhztqg
> 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.