1 package org
.argeo
.cms
.e4
.monitoring
;
3 import java
.io
.IOException
;
4 import java
.util
.ArrayList
;
5 import java
.util
.Arrays
;
6 import java
.util
.Comparator
;
7 import java
.util
.Dictionary
;
10 import javax
.annotation
.PostConstruct
;
12 import org
.argeo
.cms
.CmsException
;
13 import org
.argeo
.util
.LangUtils
;
14 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
15 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
16 import org
.eclipse
.jface
.viewers
.TreeViewer
;
17 import org
.eclipse
.jface
.viewers
.TreeViewerColumn
;
18 import org
.eclipse
.jface
.viewers
.Viewer
;
19 import org
.eclipse
.swt
.SWT
;
20 import org
.eclipse
.swt
.graphics
.Image
;
21 import org
.eclipse
.swt
.widgets
.Composite
;
22 import org
.osgi
.framework
.BundleContext
;
23 import org
.osgi
.framework
.Constants
;
24 import org
.osgi
.framework
.FrameworkUtil
;
25 import org
.osgi
.framework
.InvalidSyntaxException
;
26 import org
.osgi
.service
.cm
.Configuration
;
27 import org
.osgi
.service
.cm
.ConfigurationAdmin
;
29 public class OsgiConfigurationsView
{
30 private final static BundleContext bc
= FrameworkUtil
.getBundle(OsgiConfigurationsView
.class).getBundleContext();
33 public void createPartControl(Composite parent
) {
34 ConfigurationAdmin configurationAdmin
= bc
.getService(bc
.getServiceReference(ConfigurationAdmin
.class));
36 TreeViewer viewer
= new TreeViewer(parent
);
37 // viewer.getTree().setHeaderVisible(true);
39 TreeViewerColumn tvc
= new TreeViewerColumn(viewer
, SWT
.NONE
);
40 tvc
.getColumn().setWidth(400);
41 tvc
.setLabelProvider(new ColumnLabelProvider() {
42 private static final long serialVersionUID
= 835407996597566763L;
45 public String
getText(Object element
) {
46 if (element
instanceof Configuration
) {
47 return ((Configuration
) element
).getPid();
48 } else if (element
instanceof Prop
) {
49 return ((Prop
) element
).key
;
51 return super.getText(element
);
55 public Image
getImage(Object element
) {
56 if (element
instanceof Configuration
)
57 return OsgiExplorerImages
.CONFIGURATION
;
63 tvc
= new TreeViewerColumn(viewer
, SWT
.NONE
);
64 tvc
.getColumn().setWidth(400);
65 tvc
.setLabelProvider(new ColumnLabelProvider() {
66 private static final long serialVersionUID
= 6999659261190014687L;
69 public String
getText(Object element
) {
70 if (element
instanceof Configuration
) {
71 // return ((Configuration) element).getFactoryPid();
73 } else if (element
instanceof Prop
) {
74 return ((Prop
) element
).value
.toString();
76 return super.getText(element
);
80 viewer
.setContentProvider(new ConfigurationsContentProvider());
81 viewer
.setInput(configurationAdmin
);
84 static class ConfigurationsContentProvider
implements ITreeContentProvider
{
85 private static final long serialVersionUID
= -4892768279440981042L;
86 private ConfigurationComparator configurationComparator
= new ConfigurationComparator();
89 public void dispose() {
93 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
97 public Object
[] getElements(Object inputElement
) {
98 ConfigurationAdmin configurationAdmin
= (ConfigurationAdmin
) inputElement
;
100 Configuration
[] configurations
= configurationAdmin
.listConfigurations(null);
101 Arrays
.sort(configurations
, configurationComparator
);
102 return configurations
;
103 } catch (IOException
| InvalidSyntaxException e
) {
104 throw new CmsException("Cannot list configurations", e
);
109 public Object
[] getChildren(Object parentElement
) {
110 if (parentElement
instanceof Configuration
) {
111 List
<Prop
> res
= new ArrayList
<>();
112 Configuration configuration
= (Configuration
) parentElement
;
113 Dictionary
<String
, Object
> props
= configuration
.getProperties();
114 keys
: for (String key
: LangUtils
.keys(props
)) {
115 if (Constants
.SERVICE_PID
.equals(key
))
117 if (ConfigurationAdmin
.SERVICE_FACTORYPID
.equals(key
))
119 res
.add(new Prop(configuration
, key
, props
.get(key
)));
121 return res
.toArray(new Prop
[res
.size()]);
127 public Object
getParent(Object element
) {
128 if (element
instanceof Prop
)
129 return ((Prop
) element
).configuration
;
134 public boolean hasChildren(Object element
) {
135 if (element
instanceof Configuration
)
143 final Configuration configuration
;
147 public Prop(Configuration configuration
, String key
, Object value
) {
148 this.configuration
= configuration
;
155 static class ConfigurationComparator
implements Comparator
<Configuration
> {
158 public int compare(Configuration o1
, Configuration o2
) {
159 return o1
.getPid().compareTo(o2
.getPid());