]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ui/src/org/argeo/cms/ui/jcr/OsgiRepositoryRegister.java
Move RCP support to Argeo SLC
[lgpl/argeo-commons.git] / org.argeo.cms.ui / src / org / argeo / cms / ui / jcr / OsgiRepositoryRegister.java
1 package org.argeo.cms.ui.jcr;
2
3 import java.util.HashMap;
4 import java.util.Map;
5
6 import javax.jcr.Repository;
7
8 import org.osgi.framework.BundleContext;
9 import org.osgi.framework.FrameworkUtil;
10 import org.osgi.framework.ServiceReference;
11 import org.osgi.util.tracker.ServiceTracker;
12
13 public class OsgiRepositoryRegister extends DefaultRepositoryRegister {
14 private final static BundleContext bc = FrameworkUtil.getBundle(OsgiRepositoryRegister.class).getBundleContext();
15 private final ServiceTracker<Repository, Repository> repositoryTracker;
16
17 public OsgiRepositoryRegister() {
18 repositoryTracker = new ServiceTracker<Repository, Repository>(bc, Repository.class, null) {
19
20 @Override
21 public Repository addingService(ServiceReference<Repository> reference) {
22
23 Repository repository = super.addingService(reference);
24 Map<String, Object> props = new HashMap<>();
25 for (String key : reference.getPropertyKeys()) {
26 props.put(key, reference.getProperty(key));
27 }
28 register(repository, props);
29 return repository;
30 }
31
32 @Override
33 public void removedService(ServiceReference<Repository> reference, Repository service) {
34 Map<String, Object> props = new HashMap<>();
35 for (String key : reference.getPropertyKeys()) {
36 props.put(key, reference.getProperty(key));
37 }
38 unregister(service, props);
39 super.removedService(reference, service);
40 }
41
42 };
43 }
44
45 public void init() {
46 repositoryTracker.open();
47 }
48
49 public void destroy() {
50 repositoryTracker.close();
51 }
52 }