Adapt to changes in Argeo TP
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / CmsDeployment.java
index c4dee903fb4513946a6dee37ce0fb07d67808330..3d8a389efd13bbe1b3c56765bc3e0aa192bc0db2 100644 (file)
@@ -45,6 +45,7 @@ import org.osgi.framework.wiring.BundleWiring;
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.service.cm.ManagedService;
+import org.osgi.service.useradmin.Group;
 import org.osgi.service.useradmin.Role;
 import org.osgi.service.useradmin.UserAdmin;
 import org.osgi.util.tracker.ServiceTracker;
@@ -160,10 +161,14 @@ public class CmsDeployment implements NodeDeployment {
                UserTransaction userTransaction = bc.getService(bc.getServiceReference(UserTransaction.class));
                try {
                        userTransaction.begin();
-                       if (userAdmin.getRole(NodeConstants.ROLE_ADMIN) == null)
-                               userAdmin.createRole(NodeConstants.ROLE_ADMIN, Role.GROUP);
-                       if (userAdmin.getRole(NodeConstants.ROLE_USER_ADMIN) == null)
-                               userAdmin.createRole(NodeConstants.ROLE_USER_ADMIN, Role.GROUP);
+                       Role adminRole = userAdmin.getRole(NodeConstants.ROLE_ADMIN);
+                       if (adminRole == null) {
+                               adminRole = userAdmin.createRole(NodeConstants.ROLE_ADMIN, Role.GROUP);
+                       }
+                       if (userAdmin.getRole(NodeConstants.ROLE_USER_ADMIN) == null) {
+                               Group userAdminRole = (Group) userAdmin.createRole(NodeConstants.ROLE_USER_ADMIN, Role.GROUP);
+                               userAdminRole.addMember(adminRole);
+                       }
                        userTransaction.commit();
                } catch (Exception e) {
                        try {
@@ -187,8 +192,9 @@ public class CmsDeployment implements NodeDeployment {
        public void shutdown() {
                if (nodeHttp != null)
                        nodeHttp.destroy();
-               if (deployConfig != null)
-                       deployConfig.save();
+               if (deployConfig != null) {
+                       new Thread(() -> deployConfig.save(), "Save Argeo Deploy Config").start();
+               }
        }
 
        private void checkReadiness() {