Improve tokens
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / CmsState.java
index 0990181f2e1a2e43132030cd7a26e24f4f2184f0..6c97fa14132c6628129e63affccac7c1adb10faa 100644 (file)
@@ -1,42 +1,31 @@
 package org.argeo.cms.internal.kernel;
 
-import static bitronix.tm.TransactionManagerServices.getTransactionManager;
-import static bitronix.tm.TransactionManagerServices.getTransactionSynchronizationRegistry;
 import static java.util.Locale.ENGLISH;
 
-import java.io.File;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.nio.file.spi.FileSystemProvider;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
-import java.util.UUID;
 
 import javax.jcr.RepositoryFactory;
 import javax.transaction.TransactionManager;
-import javax.transaction.TransactionSynchronizationRegistry;
 import javax.transaction.UserTransaction;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.argeo.cms.CmsException;
-import org.argeo.cms.i18n.LocaleUtils;
+import org.argeo.cms.LocaleUtils;
 import org.argeo.node.NodeConstants;
 import org.argeo.node.NodeState;
 import org.argeo.transaction.simple.SimpleTransactionManager;
 import org.argeo.util.LangUtils;
-import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
 import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.ServiceReference;
 import org.osgi.service.cm.ManagedServiceFactory;
 
-import bitronix.tm.BitronixTransactionManager;
-import bitronix.tm.BitronixTransactionSynchronizationRegistry;
-import bitronix.tm.TransactionManagerServices;
-
 public class CmsState implements NodeState {
        private final static Log log = LogFactory.getLog(CmsState.class);
        private final BundleContext bc = FrameworkUtil.getBundle(CmsState.class).getBundleContext();
@@ -93,11 +82,27 @@ public class CmsState implements NodeState {
                if (NodeConstants.TRANSACTION_MANAGER_SIMPLE.equals(tmType)) {
                        initSimpleTransactionManager();
                } else if (NodeConstants.TRANSACTION_MANAGER_BITRONIX.equals(tmType)) {
-                       initBitronixTransactionManager();
+//                     initBitronixTransactionManager();
+                       throw new UnsupportedOperationException(
+                                       "Bitronix is not supported anymore, but could be again if there is enough interest.");
                } else {
                        throw new CmsException("Usupported transaction manager type " + tmType);
                }
 
+               // POI
+//             POIXMLTypeLoader.setClassLoader(CTConnection.class.getClassLoader());
+
+               // Tika
+//             OpenDocumentParser odfParser = new OpenDocumentParser();
+//             bc.registerService(Parser.class, odfParser, new Hashtable());
+//             PDFParser pdfParser = new PDFParser();
+//             bc.registerService(Parser.class, pdfParser, new Hashtable());
+//             OOXMLParser ooxmlParser = new OOXMLParser();
+//             bc.registerService(Parser.class, ooxmlParser, new Hashtable());
+//             TesseractOCRParser ocrParser = new TesseractOCRParser();
+//             ocrParser.setLanguage("ara");
+//             bc.registerService(Parser.class, ocrParser, new Hashtable());
+
                // JCR
                RepositoryServiceFactory repositoryServiceFactory = new RepositoryServiceFactory();
                stopHooks.add(() -> repositoryServiceFactory.shutdown());
@@ -108,13 +113,23 @@ public class CmsState implements NodeState {
                bc.registerService(RepositoryFactory.class, repositoryFactory, null);
 
                // Security
-               NodeUserAdmin userAdmin = new NodeUserAdmin(NodeConstants.ROLES_BASEDN);
+               NodeUserAdmin userAdmin = new NodeUserAdmin(NodeConstants.ROLES_BASEDN, NodeConstants.TOKENS_BASEDN);
                stopHooks.add(() -> userAdmin.destroy());
                bc.registerService(ManagedServiceFactory.class, userAdmin,
                                LangUtils.dico(Constants.SERVICE_PID, NodeConstants.NODE_USER_ADMIN_PID));
 
                // File System
                CmsFsProvider cmsFsProvider = new CmsFsProvider();
+//             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);
+//             }
                bc.registerService(FileSystemProvider.class, cmsFsProvider,
                                LangUtils.dico(Constants.SERVICE_PID, NodeConstants.NODE_FS_PROVIDER_PID));
        }
@@ -126,38 +141,38 @@ public class CmsState implements NodeState {
                // TODO TransactionSynchronizationRegistry
        }
 
-       private void initBitronixTransactionManager() {
-               // TODO manage it in a managed service, as startup could be long
-               ServiceReference<TransactionManager> existingTm = bc.getServiceReference(TransactionManager.class);
-               if (existingTm != null) {
-                       if (log.isDebugEnabled())
-                               log.debug("Using provided transaction manager " + existingTm);
-                       return;
-               }
-
-               if (!TransactionManagerServices.isTransactionManagerRunning()) {
-                       bitronix.tm.Configuration tmConf = TransactionManagerServices.getConfiguration();
-                       tmConf.setServerId(UUID.randomUUID().toString());
-
-                       Bundle bitronixBundle = FrameworkUtil.getBundle(bitronix.tm.Configuration.class);
-                       File tmBaseDir = bitronixBundle.getDataFile(KernelConstants.DIR_TRANSACTIONS);
-                       File tmDir1 = new File(tmBaseDir, "btm1");
-                       tmDir1.mkdirs();
-                       tmConf.setLogPart1Filename(new File(tmDir1, tmDir1.getName() + ".tlog").getAbsolutePath());
-                       File tmDir2 = new File(tmBaseDir, "btm2");
-                       tmDir2.mkdirs();
-                       tmConf.setLogPart2Filename(new File(tmDir2, tmDir2.getName() + ".tlog").getAbsolutePath());
-               }
-               BitronixTransactionManager transactionManager = getTransactionManager();
-               stopHooks.add(() -> transactionManager.shutdown());
-               BitronixTransactionSynchronizationRegistry transactionSynchronizationRegistry = getTransactionSynchronizationRegistry();
-               // register
-               bc.registerService(TransactionManager.class, transactionManager, null);
-               bc.registerService(UserTransaction.class, transactionManager, null);
-               bc.registerService(TransactionSynchronizationRegistry.class, transactionSynchronizationRegistry, null);
-               if (log.isDebugEnabled())
-                       log.debug("Initialised default Bitronix transaction manager");
-       }
+//     private void initBitronixTransactionManager() {
+//             // TODO manage it in a managed service, as startup could be long
+//             ServiceReference<TransactionManager> existingTm = bc.getServiceReference(TransactionManager.class);
+//             if (existingTm != null) {
+//                     if (log.isDebugEnabled())
+//                             log.debug("Using provided transaction manager " + existingTm);
+//                     return;
+//             }
+//
+//             if (!TransactionManagerServices.isTransactionManagerRunning()) {
+//                     bitronix.tm.Configuration tmConf = TransactionManagerServices.getConfiguration();
+//                     tmConf.setServerId(UUID.randomUUID().toString());
+//
+//                     Bundle bitronixBundle = FrameworkUtil.getBundle(bitronix.tm.Configuration.class);
+//                     File tmBaseDir = bitronixBundle.getDataFile(KernelConstants.DIR_TRANSACTIONS);
+//                     File tmDir1 = new File(tmBaseDir, "btm1");
+//                     tmDir1.mkdirs();
+//                     tmConf.setLogPart1Filename(new File(tmDir1, tmDir1.getName() + ".tlog").getAbsolutePath());
+//                     File tmDir2 = new File(tmBaseDir, "btm2");
+//                     tmDir2.mkdirs();
+//                     tmConf.setLogPart2Filename(new File(tmDir2, tmDir2.getName() + ".tlog").getAbsolutePath());
+//             }
+//             BitronixTransactionManager transactionManager = getTransactionManager();
+//             stopHooks.add(() -> transactionManager.shutdown());
+//             BitronixTransactionSynchronizationRegistry transactionSynchronizationRegistry = getTransactionSynchronizationRegistry();
+//             // register
+//             bc.registerService(TransactionManager.class, transactionManager, null);
+//             bc.registerService(UserTransaction.class, transactionManager, null);
+//             bc.registerService(TransactionSynchronizationRegistry.class, transactionSynchronizationRegistry, null);
+//             if (log.isDebugEnabled())
+//                     log.debug("Initialised default Bitronix transaction manager");
+//     }
 
        void shutdown() {
                if (log.isDebugEnabled())