felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Felix Meschberger (JIRA)" <j...@apache.org>
Subject [jira] Commented: (FELIX-1488) Configuration binding is broken
Date Wed, 19 Aug 2009 06:00:16 GMT

    [ https://issues.apache.org/jira/browse/FELIX-1488?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12744907#action_12744907
] 

Felix Meschberger commented on FELIX-1488:
------------------------------------------

We have  another failure with configuration binding:

   1. create configuration pid with non-null location
   2. register ManagedService with pid from the bundle with said location
   3. Call Configuration.setBundleLocation(null) on the configuration
   ==> configuration must still be dynamically bound to location

The current implementation (before Rev. 805667)  didn't handle this use case correctly and
did not leave the dynamic binding of the configuration thus completely unbinding the configuration.

In Rev. 805667 I have applied a refactoring for this use case: bindings are now kept in two
fields, one for dynamic binding and one for static binding. If the dynamic binding field is
set, it takes precedence. If the dynamic field is set it is equal to the static binding field
value unless the static binding field is null.

In Rev. 805668 the ConfigurationManager class has been adapted to the new binding field management
API.

Testcases for this have already been commited with Rev. 805666.

> Configuration binding is broken
> -------------------------------
>
>                 Key: FELIX-1488
>                 URL: https://issues.apache.org/jira/browse/FELIX-1488
>             Project: Felix
>          Issue Type: Bug
>          Components: Configuration Admin
>    Affects Versions: configadmin-1.0.10
>            Reporter: Felix Meschberger
>            Assignee: Felix Meschberger
>             Fix For: configadmin-1.0.12
>
>
> Configuration can be statically or dynamically bound:
>  * A configuration is statically bound by explicitly calling the Configuration.setBundleLocation
method or
>     by creating the configuration object with a non-null bundle location. Static binding
must be persisted and
>     is only reset by explicitly calling the setBundleLocation with a null argument.
>  * A configuration may dynamically bound if the configuration has been created with a
null bundle location and
>     the setBundleLocation has not been called (or called with a null argument). If such
an unbound configuration
>     is provided to a ManagedService[Factory] it is dynamically bound to the service's
bundle. Such bundle
>     binding is not persisted.
> The reason why dynamic binding need not be persisted is actually an implementation detail
because we keep used configurations in an internal cache. Entries in the cache are only removed
if the configuration is deleted or if the configuration admin service is stopped. In the first
case, bundle binding is lost anyway. In the second case dynamic bundle bindings will be recreated
on configuration admin service restart when the configurations are supplied to ManagedService[Factory]
services again.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message