View Javadoc
1   package org.argeo.cms.e4.monitoring;
2   
3   import org.argeo.eclipse.ui.TreeParent;
4   import org.osgi.framework.Bundle;
5   import org.osgi.framework.ServiceReference;
6   
7   /** A tree element representing a {@link ServiceReference} */
8   @SuppressWarnings({ "rawtypes" })
9   class ServiceReferenceNode extends TreeParent {
10  	private final ServiceReference serviceReference;
11  	private final boolean published;
12  
13  	public ServiceReferenceNode(ServiceReference serviceReference,
14  			boolean published) {
15  		super(serviceReference.toString());
16  		this.serviceReference = serviceReference;
17  		this.published = published;
18  
19  		if (isPublished()) {
20  			Bundle[] usedBundles = serviceReference.getUsingBundles();
21  			if (usedBundles != null) {
22  				for (Bundle b : usedBundles) {
23  					if (b != null)
24  						addChild(new BundleNode(b));
25  				}
26  			}
27  		} else {
28  			Bundle provider = serviceReference.getBundle();
29  			addChild(new BundleNode(provider));
30  		}
31  
32  		for (String key : serviceReference.getPropertyKeys()) {
33  			addChild(new TreeParent(key + "="
34  					+ serviceReference.getProperty(key)));
35  		}
36  
37  	}
38  
39  	public ServiceReference getServiceReference() {
40  		return serviceReference;
41  	}
42  
43  	public boolean isPublished() {
44  		return published;
45  	}
46  }