X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FCmsDeployment.java;h=3d8a389efd13bbe1b3c56765bc3e0aa192bc0db2;hb=57e34e0482e03cea9a6a34326c22c7c969ad07c8;hp=c4dee903fb4513946a6dee37ce0fb07d67808330;hpb=8e9b429428549d18c14e6ccfab31d9c88fca68bc;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java index c4dee903f..3d8a389ef 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java @@ -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() {