[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| Re: [ecf-dev] IContainerManager or OSGi service tracker? | 
Hi Remy,
Remy Chi Jian Suen wrote:
Are we supposed to be using IContainerManager to keep track of
created/connected IContainers or are we supposed to use
ServiceTracker? 
I'm a little confused by your question.  IContainerManager is published 
as an OSGi service, so you can get at it/use it via calls like:
ServiceReference ref = 
bundleContext.getServiceReference(IContainerManager.class.getName());
IContainerManager containerManager = (IContainerManager) 
bundleContext.getService(ref);
or you can use a ServiceTracker to get the IContainerManager service as 
well:
ServiceTracker serviceTracker = new 
ServiceTracker(bundleContext,IContainerManager.class.getName(),null);
serviceTracker.open();
IContainerManager containerManager = (IContainerManager) 
serviceTracker.getService();
I prefer and have been using ServiceTrackers for accessing the 
IContainerManager services and others, as they are much more helpful in 
doing appropriate cleanup, etc for the use of a service.  I think 
ServiceTrackers are also considered cooler these days for OSGi service 
access as well :).
In general, though, 'yes' we should be using the IContainerManager 
service to keep track of IContainer instances (connected or not).
The current UI of having to manually attach listeners
for xmpp collaboration is rather crude. It'd be better if they were
just attached when an IContainer is created/connected.
  
Yes...it would probably be better to use the IContainerManager service 
to get the associated container and add listeners (either to the 
IContainerManager for synchronous notification upon container creation 
or to the relevant IContainer for synchronous notification upon 
container connect/disconnect).  Then other listeners can be 
added/removed upon notification of the relevant events (IContainer 
creation or IContainer connection).
Scott