]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java
Introduce admin header and Reload App
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / Kernel.java
index 1002304007ff3e64d42a86834a8de8a64fa95f6a..a67900ca69873885e1bd551fbfcbd68c4444a0c5 100644 (file)
@@ -31,6 +31,7 @@ import javax.transaction.UserTransaction;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.jackrabbit.api.JackrabbitRepository;
 import org.apache.jackrabbit.util.TransientFileFactory;
 import org.argeo.ArgeoException;
 import org.argeo.ArgeoLogger;
@@ -40,6 +41,7 @@ import org.argeo.jcr.ArgeoJcrConstants;
 import org.eclipse.equinox.http.jetty.JettyConfigurator;
 import org.eclipse.equinox.http.jetty.JettyConstants;
 import org.eclipse.equinox.http.servlet.ExtendedHttpService;
+import org.eclipse.rap.rwt.application.ApplicationConfiguration;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceEvent;
 import org.osgi.framework.ServiceListener;
@@ -47,7 +49,9 @@ import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.service.log.LogReaderService;
 import org.osgi.service.useradmin.UserAdmin;
+import org.osgi.util.tracker.ServiceTracker;
 
 import bitronix.tm.BitronixTransactionManager;
 import bitronix.tm.BitronixTransactionSynchronizationRegistry;
@@ -76,7 +80,7 @@ final class Kernel implements KernelHeader, KernelConstants, ServiceListener {
        private ServiceRegistration<TransactionManager> tmReg;
        private ServiceRegistration<UserTransaction> utReg;
        private ServiceRegistration<TransactionSynchronizationRegistry> tsrReg;
-       private ServiceRegistration<Repository> repositoryReg;
+       private ServiceRegistration<? extends Repository> repositoryReg;
        private ServiceRegistration<RepositoryFactory> repositoryFactoryReg;
        private ServiceRegistration<UserAdmin> userAdminReg;
 
@@ -103,8 +107,6 @@ final class Kernel implements KernelHeader, KernelConstants, ServiceListener {
 
        public Kernel() {
                nodeSecurity = new NodeSecurity();
-               // log.debug(bc.getDataFile(""));
-               // log.debug(bc.getDataFile("test"));
        }
 
        final void init() {
@@ -133,7 +135,14 @@ final class Kernel implements KernelHeader, KernelConstants, ServiceListener {
                        defaultLocale = new Locale(getFrameworkProp(I18N_DEFAULT_LOCALE,
                                        ENGLISH.getLanguage()));
                        locales = asLocaleList(getFrameworkProp(I18N_LOCALES));
-                       logger = new NodeLogger();
+
+                       ServiceTracker<LogReaderService, LogReaderService> logReaderService = new ServiceTracker<LogReaderService, LogReaderService>(
+                                       bc, LogReaderService.class, null);
+                       logReaderService.open();
+                       logger = new NodeLogger(logReaderService.getService());
+                       logReaderService.close();
+
+                       // KernelUtils.logFrameworkProperties(log);
 
                        // Initialise services
                        initTransactionManager();
@@ -148,6 +157,11 @@ final class Kernel implements KernelHeader, KernelConstants, ServiceListener {
                        if (sr != null)
                                addHttpService(sr);
 
+                       UserUi userUi = new UserUi();
+                       Hashtable<String, String> props = new Hashtable<String, String>();
+                       props.put("contextName", "user");
+                       bc.registerService(ApplicationConfiguration.class, userUi, props);
+
                        // Kernel thread
                        kernelThread = new KernelThread(this);
                        kernelThread.setContextClassLoader(Kernel.class.getClassLoader());
@@ -268,6 +282,7 @@ final class Kernel implements KernelHeader, KernelConstants, ServiceListener {
                }
        }
 
+       @SuppressWarnings("unchecked")
        private void publish() {
                // Listen to service publication (also ours)
                bc.addServiceListener(Kernel.this);
@@ -287,8 +302,10 @@ final class Kernel implements KernelHeader, KernelConstants, ServiceListener {
                // JCR
                Hashtable<String, String> regProps = new Hashtable<String, String>();
                regProps.put(JCR_REPOSITORY_ALIAS, ALIAS_NODE);
-               repositoryReg = bc.registerService(Repository.class, repository,
-                               regProps);
+               repositoryReg = (ServiceRegistration<? extends Repository>) bc
+                               .registerService(new String[] { Repository.class.getName(),
+                                               JackrabbitRepository.class.getName() }, repository,
+                                               regProps);
                repositoryFactoryReg = bc.registerService(RepositoryFactory.class,
                                repositoryFactory, null);
        }