package org.argeo.cms.jcr.internal.osgi; import java.util.Dictionary; import org.argeo.cms.jcr.internal.StatisticsThread; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; public class CmsJcrActivator implements BundleActivator { private static BundleContext bundleContext; // private List stopHooks = new ArrayList<>(); private StatisticsThread kernelThread; // private JackrabbitRepositoryContextsFactory repositoryServiceFactory; // private CmsJcrDeployment jcrDeployment; @Override public void start(BundleContext context) throws Exception { bundleContext = context; // kernel thread kernelThread = new StatisticsThread("Kernel Thread"); kernelThread.setContextClassLoader(getClass().getClassLoader()); kernelThread.start(); // JCR // repositoryServiceFactory = new JackrabbitRepositoryContextsFactory(); //// stopHooks.add(() -> repositoryServiceFactory.shutdown()); // registerService(ManagedServiceFactory.class, repositoryServiceFactory, // LangUtils.dict(Constants.SERVICE_PID, CmsConstants.NODE_REPOS_FACTORY_PID)); // JcrRepositoryFactory repositoryFactory = new JcrRepositoryFactory(); // registerService(RepositoryFactory.class, repositoryFactory, null); // File System // CmsJcrFsProvider cmsFsProvider = new CmsJcrFsProvider(); // ServiceLoader fspSl = ServiceLoader.load(FileSystemProvider.class); // for (FileSystemProvider fsp : fspSl) { // log.debug("FileSystemProvider " + fsp); // if (fsp instanceof CmsFsProvider) { // cmsFsProvider = (CmsFsProvider) fsp; // } // } // for (FileSystemProvider fsp : FileSystemProvider.installedProviders()) { // log.debug("Installed FileSystemProvider " + fsp); // } // registerService(FileSystemProvider.class, cmsFsProvider, // LangUtils.dict(Constants.SERVICE_PID, CmsConstants.NODE_FS_PROVIDER_PID)); // jcrDeployment = new CmsJcrDeployment(); // jcrDeployment.init(); } @Override public void stop(BundleContext context) throws Exception { // if (jcrDeployment != null) // jcrDeployment.destroy(); // if (repositoryServiceFactory != null) // repositoryServiceFactory.shutdown(); if (kernelThread != null) kernelThread.destroyAndJoin(); bundleContext = null; } @Deprecated public static void registerService(Class clss, T service, Dictionary properties) { if (bundleContext != null) { bundleContext.registerService(clss, service, properties); } } @Deprecated public static BundleContext getBundleContext() { return bundleContext; } @Deprecated public static T getService(Class clss) { if (bundleContext != null) { return bundleContext.getService(bundleContext.getServiceReference(clss)); } else { return null; } } }