]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/osgi/ServiceReferenceNode.java
0da5287f3e846e89adbe99ce7c8a48e867f821f6
[lgpl/argeo-commons.git] / org.argeo.eclipse.ui.workbench / src / org / argeo / eclipse / ui / workbench / osgi / ServiceReferenceNode.java
1 package org.argeo.eclipse.ui.workbench.osgi;
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 }