Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Equinox » Multiple Dependencies - serviceChanged
Multiple Dependencies - serviceChanged [message #83524] Mon, 19 February 2007 18:56 Go to next message
Eclipse UserFriend
Originally posted by: dieter.schulten.d-velop.de

If you want to create a osgi bundle that dependes on e.g four other
services.
How do you manage those dependencies?

Do you register a serviceListener like context.addServiceListener(this)
and listen for all services you need in the public void
serviceChanged(ServiceEvent event)
method? And only if all services you need are available your bundle get the
state
"ready to work"?

public void serviceChanged(ServiceEvent event) {

String[] objectClass =
(String[])event.getServiceReference().getProperty("objectClass ");

if (event.getType() == ServiceEvent.REGISTERED) {

if (objectClass[0].compareTo(LogService.class.getName()) != 0)
registerLogger();


else if (objectClass[0].compareTo(OtherService.class.getName()) !=
0) registerOtherService();

else if (objectClass[0].compareTo(OtherService.class.getName()) !=
0) .....

}

}


Or is there a more elegant (other,better) way?
Re: Multiple Dependencies - serviceChanged [message #83540 is a reply to message #83524] Tue, 20 February 2007 07:34 Go to previous message
Eclipse UserFriend
Originally posted by: tonimenzel.gmx.de

Hi Dieter,

ServiceTracker is probably what you are looking for:
http://www2.osgi.org/javadoc/r4/org/osgi/util/tracker/Servic eTracker.html

Using Declarative Services is another (probably more elegant):
possibility: see official osgi papers and
- http://www.eclipsezone.com/articles/extensions-vs-services/
for more.
or just ask here;-)

regards, Toni


Dieter schrieb:
> If you want to create a osgi bundle that dependes on e.g four other
> services.
> How do you manage those dependencies?
>
> Do you register a serviceListener like context.addServiceListener(this)
> and listen for all services you need in the public void
> serviceChanged(ServiceEvent event)
> method? And only if all services you need are available your bundle
get the
> state
> "ready to work"?
>
> public void serviceChanged(ServiceEvent event) {
>
> String[] objectClass =
> (String[])event.getServiceReference().getProperty("objectClass ");
>
> if (event.getType() == ServiceEvent.REGISTERED) {
>
> if (objectClass[0].compareTo(LogService.class.getName()) != 0)
> registerLogger();
>
>
> else if
(objectClass[0].compareTo(OtherService.class.getName()) !=
> 0) registerOtherService();
>
> else if
(objectClass[0].compareTo(OtherService.class.getName()) !=
> 0) .....
>
> }
>
> }
>
>
> Or is there a more elegant (other,better) way?
>
>
Previous Topic:A DS service is available as soon as the host bundle is RESOLVED?
Next Topic:Equinox documents
Goto Forum:
  


Current Time: Fri Apr 26 15:12:22 GMT 2024

Powered by FUDForum. Page generated in 0.03008 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top