felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Felix Meschberger <fmesc...@adobe.com>
Subject Re: [DS] [lifecycle methods returning service properties] How should this work?
Date Mon, 04 Jun 2012 18:13:10 GMT
Hi,

Am 04.06.2012 um 19:16 schrieb David Jencks:

> cf FELIX-3506, 3377.
> 
> Right now we have it set up so that a lifecycle method can return the exact set of service
properties it wants the service registration to have.  I'm not at all sure this is a plausible
way to operate since usually you'd use this feature to set or unset a flag in the service
properties based on some aspect of the component state.  I could be missing something, but
I don't see an easy way to get the existing set of service properties so you can modify them
with your flag.  I did something like this:
> 
>        serviceProperties.clear();
>        for (String key : cc.getServiceReference().getPropertyKeys()) {
>            serviceProperties.put(key, cc.getServiceReference().getProperty(key));
>        }
> //now actually add/remove my flag
> 
> 
> I think it would be a lot more usable to have the lifecycle methods return a map of changes,
where a null value for a key means "remove the key".
> 
> Have I missed an easy way to use the current implementation?

Basically the service registration by default are all ComponentContext.getProperties() with
the exception of the properties with a leading dot (considering them private properties).

So the idea of returning the complete map is to give the component full and simple control.
And because the properties are fully available in all activator methods (activate, modify,
deactivate) through either the ComponentContext or the configuration Map this is really straight-forward
IMHO.

So I would prefer to keep those as is.

Regards
Felix
Mime
View raw message