Rename packages in order to make future stable documentation clearer.
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / Activator.java
index 62c140efd5a5f167405380c45c2cb3dcd9b9614e..d2d7d25b7cae3602728a03771af0872269bd0e41 100644 (file)
@@ -8,18 +8,20 @@ import java.security.AllPermission;
 import java.util.Dictionary;
 import java.util.List;
 import java.util.Locale;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 import javax.security.auth.login.Configuration;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.argeo.api.ArgeoLogger;
+import org.argeo.api.NodeConstants;
+import org.argeo.api.NodeDeployment;
+import org.argeo.api.NodeInstance;
+import org.argeo.api.NodeState;
 import org.argeo.cms.CmsException;
 import org.argeo.ident.IdentClient;
-import org.argeo.node.ArgeoLogger;
-import org.argeo.node.NodeConstants;
-import org.argeo.node.NodeDeployment;
-import org.argeo.node.NodeInstance;
-import org.argeo.node.NodeState;
 import org.argeo.util.LangUtils;
 import org.ietf.jgss.GSSCredential;
 import org.osgi.framework.BundleActivator;
@@ -58,6 +60,7 @@ public class Activator implements BundleActivator {
        private CmsInstance nodeInstance;
 
        private ServiceTracker<UserAdmin, NodeUserAdmin> userAdminSt;
+       private ExecutorService internalExecutorService;
 
        @Override
        public void start(BundleContext bundleContext) throws Exception {
@@ -65,6 +68,7 @@ public class Activator implements BundleActivator {
                instance = this;
                this.bc = bundleContext;
                this.logReaderService = getService(LogReaderService.class);
+               this.internalExecutorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
 
                try {
                        initSecurity();
@@ -105,6 +109,18 @@ public class Activator implements BundleActivator {
                                                                new ConditionInfo(BundleLocationCondition.class.getName(), new String[] { "*" }) },
                                                new PermissionInfo[] { new PermissionInfo(AllPermission.class.getName(), null, null) },
                                                ConditionalPermissionInfo.ALLOW));
+                               // TODO data admin permission
+//                             PermissionInfo dataAdminPerm = new PermissionInfo(AuthPermission.class.getName(),
+//                                             "createLoginContext." + NodeConstants.LOGIN_CONTEXT_DATA_ADMIN, null);
+//                             update.getConditionalPermissionInfos().add(permissionAdmin.newConditionalPermissionInfo(null,
+//                                             new ConditionInfo[] {
+//                                                             new ConditionInfo(BundleLocationCondition.class.getName(), new String[] { "*" }) },
+//                                             new PermissionInfo[] { dataAdminPerm }, ConditionalPermissionInfo.DENY));
+//                             update.getConditionalPermissionInfos().add(permissionAdmin.newConditionalPermissionInfo(null,
+//                                             new ConditionInfo[] {
+//                                                             new ConditionInfo(BundleSignerCondition.class.getName(), new String[] { "CN=\"Eclipse.org Foundation, Inc.\", OU=IT, O=\"Eclipse.org Foundation, Inc.\", L=Nepean, ST=Ontario, C=CA" }) },
+//                                             new PermissionInfo[] { dataAdminPerm }, ConditionalPermissionInfo.ALLOW));
+                               update.commit();
                        } else {
                                SecurityProfile securityProfile = new SecurityProfile() {
                                };
@@ -156,6 +172,7 @@ public class Activator implements BundleActivator {
                        if (userAdminSt != null)
                                userAdminSt.close();
 
+                       internalExecutorService.shutdown();
                        instance = null;
                        this.bc = null;
                        this.logReaderService = null;
@@ -217,6 +234,10 @@ public class Activator implements BundleActivator {
 
        }
 
+       static ExecutorService getInternalExecutorService() {
+               return instance.internalExecutorService;
+       }
+
        // static CmsSecurity getCmsSecurity() {
        // return instance.nodeSecurity;
        // }