Thanks for clearing that up, Simon! Sounds to me like this is a use
case best not solved with DS.
Greetings, Marcel
On Sep 29, 2009, at 1:19 , Simon J Archer wrote:
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
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev