]> git.argeo.org Git - lgpl/argeo-commons.git/blob - OsgiJackrabbitRepositoryFactory.java
d837a40266610dfba4d314d0df98b799f5137f8e
[lgpl/argeo-commons.git] / OsgiJackrabbitRepositoryFactory.java
1 package org.argeo.jackrabbit;
2
3 import java.util.Properties;
4
5 import javax.jcr.Repository;
6
7 import org.apache.commons.logging.Log;
8 import org.apache.commons.logging.LogFactory;
9 import org.osgi.framework.BundleContext;
10
11 /**
12 * OSGi-aware Jackrabbit repository factory which can retrieve/publish
13 * {@link Repository} as OSGi services.
14 */
15 public class OsgiJackrabbitRepositoryFactory extends
16 JackrabbitRepositoryFactory {
17 private final static Log log = LogFactory
18 .getLog(OsgiJackrabbitRepositoryFactory.class);
19 private BundleContext bundleContext;
20
21 protected void publish(String alias, Repository repository,
22 Properties properties) {
23 if (bundleContext != null) {
24 // do not modify reference
25 Properties props = new Properties(properties);
26 props.setProperty(JCR_REPOSITORY_ALIAS, alias);
27 bundleContext.registerService(Repository.class.getName(),
28 repository, props);
29 }
30 }
31
32 public void setBundleContext(BundleContext bundleContext) {
33 this.bundleContext = bundleContext;
34 }
35
36 }