Put Eclipse and JCR components in subdirs in order to clarify indirect
[lgpl/argeo-commons.git] / jcr / org.argeo.cms.jcr / src / org / argeo / cms / jcr / internal / osgi / CmsJcrActivator.java
diff --git a/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/osgi/CmsJcrActivator.java b/jcr/org.argeo.cms.jcr/src/org/argeo/cms/jcr/internal/osgi/CmsJcrActivator.java
new file mode 100644 (file)
index 0000000..57860d8
--- /dev/null
@@ -0,0 +1,91 @@
+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<Runnable> 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<FileSystemProvider> 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 <T> void registerService(Class<T> clss, T service, Dictionary<String, ?> properties) {
+               if (bundleContext != null) {
+                       bundleContext.registerService(clss, service, properties);
+               }
+
+       }
+
+       @Deprecated
+       public static BundleContext getBundleContext() {
+               return bundleContext;
+       }
+
+       @Deprecated
+       public static <T> T getService(Class<T> clss) {
+               if (bundleContext != null) {
+                       return bundleContext.getService(bundleContext.getServiceReference(clss));
+               } else {
+                       return null;
+               }
+       }
+
+}