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 Bundle} */
8   class BundleNode extends TreeParent {
9   	private final Bundle bundle;
10  
11  	public BundleNode(Bundle bundle) {
12  		this(bundle, false);
13  	}
14  
15  	@SuppressWarnings("rawtypes")
16  	public BundleNode(Bundle bundle, boolean hasChildren) {
17  		super(bundle.getSymbolicName());
18  		this.bundle = bundle;
19  
20  		if (hasChildren) {
21  			// REFERENCES
22  			ServiceReference[] usedServices = bundle.getServicesInUse();
23  			if (usedServices != null) {
24  				for (ServiceReference sr : usedServices) {
25  					if (sr != null)
26  						addChild(new ServiceReferenceNode(sr, false));
27  				}
28  			}
29  
30  			// SERVICES
31  			ServiceReference[] registeredServices = bundle
32  					.getRegisteredServices();
33  			if (registeredServices != null) {
34  				for (ServiceReference sr : registeredServices) {
35  					if (sr != null)
36  						addChild(new ServiceReferenceNode(sr, true));
37  				}
38  			}
39  		}
40  
41  	}
42  
43  	Bundle getBundle() {
44  		return bundle;
45  	}
46  }