On Jun 4, 2012, at 11:13 AM, Felix Meschberger wrote:
> 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.
I'm OK with this as long as we strip out the private . properties... see
FELIX-3533.
david jencks
>
> Regards
> Felix