Marcel

While DS supports component properties that are registered with every 
provided service, changing the value of such a property programmatically 
is not supported directly, as it would be via a ServiceRegistration.  In 
fact, I don't think there's a way to get to the ServiceRegistration that 
DS creates for registering a component's provided services. The only way I 
know to change a property of a DS component is using ConfigurationAdmin, 
but that's likely more complicated than anyone needs.

Also see:
        [ds] Add support for changing a service's registered properties 
        https://www.osgi.org/members/bugzilla/show_bug.cgi?id=596 

It appears that there might be some support for this feature request, 
despite it being RESOLVED/WONTFIX.

Regards

Simon



From:
Marcel Offermans <[email protected]>
To:
OSGi Developer Mail List <[email protected]>
Date:
09/28/2009 05:28 PM
Subject:
Re: [osgi-dev] Activate component only after another component's state is 
set
Sent by:
[email protected]



I would add a service property "isConnected" to the Network service 
and make a dependency from your Login service to a Network service 
with a property isConnected = true.

I'm not sure if DS allows this. If not, either manually track it using 
a ServiceTracker or use (for example) the Apache Felix Dependency 
Manager. Probably iPOJO (also part of Apache Felix) would work too.

Greetings, Marcel


On Sep 25, 2009, at 21:30 , Luciana Alvite wrote:

> Hello dear fellow OSGi devs,
>
> I have the following simplified scenario in my Declarative Services 
> based project:
>
> 2 Components: Network and Login
> Login depends on 1..1 Network component. Network takes care of 
> connecting and disconnecting from a given network.
>
> I would like to make the Login component dependency on Network 
> satisfied only when the Network is actually connected, meaning the 
> component would only be activated after the "network.connect()" 
> method is successfully executed.
>
> Approaches I have tried:
>  - ConfigAdmin > Setting a property "isConnected" for the Network 
> component using the ConfigAdmin when the "connect" method is 
> successfully executed
> Result: Does not work, since changing the properties will require a 
> reactivation of the Network component, therefore recreating the 
> component and losing the connection.
>
> - Events > Make login implement EventHandler and listen to Network 
> events. When event is "connected", react accordingly. the problem 
> here is that the component must be enabled to be able to actually 
> receive events. and this goes against the goal of only activating 
> the component AFTER the network is connected..
>
> I have tried google, read the specs several times but could not yet 
> think of any suitable implementation , any ideas of how I could 
> solve this?
>
> Thanks in advance for any help or pointers!
>
> -- 
> Best Regards
>
> Luciana Alvite _______________________________________________
> OSGi Developer Mail List
> [email protected]
> https://mail.osgi.org/mailman/listinfo/osgi-dev

_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev


_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to