X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui.workbench%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Fworkbench%2Finternal%2Fuseradmin%2FUserAdminWrapper.java;h=e4efcc72a205e261941781abcc55e9e3bfd02162;hb=5b444174cd13680f99944026877f6cac2e1faba1;hp=2f59e8642f2e8e90c669a265f389551761fd5848;hpb=23b7a170cae60b500e9d45551f26b5075eba73a4;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/UserAdminWrapper.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/UserAdminWrapper.java index 2f59e8642..e4efcc72a 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/UserAdminWrapper.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/UserAdminWrapper.java @@ -1,18 +1,28 @@ package org.argeo.cms.ui.workbench.internal.useradmin; import java.util.ArrayList; +import java.util.Dictionary; +import java.util.HashMap; import java.util.List; +import java.util.Map; import javax.transaction.Status; import javax.transaction.UserTransaction; import org.argeo.cms.CmsException; +import org.argeo.node.NodeConstants; +import org.argeo.osgi.useradmin.UserAdminConf; +import org.osgi.framework.ServiceReference; +import org.osgi.service.useradmin.UserAdmin; import org.osgi.service.useradmin.UserAdminEvent; import org.osgi.service.useradmin.UserAdminListener; /** Centralise interaction with the UserAdmin in this bundle */ -public class UserAdminWrapper extends - org.argeo.cms.util.useradmin.UserAdminWrapper { +public class UserAdminWrapper { + + private UserAdmin userAdmin; + private ServiceReference userAdminServiceReference; + private UserTransaction userTransaction; // First effort to simplify UX while managing users and groups public final static boolean COMMIT_ON_SAVE = true; @@ -27,7 +37,7 @@ public class UserAdminWrapper extends */ public UserTransaction beginTransactionIfNeeded() { try { - UserTransaction userTransaction = getUserTransaction(); + // UserTransaction userTransaction = getUserTransaction(); if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) { userTransaction.begin(); // UiAdminUtils.notifyTransactionStateChange(userTransaction); @@ -46,7 +56,7 @@ public class UserAdminWrapper extends */ public void commitOrNotifyTransactionStateChange() { try { - UserTransaction userTransaction = getUserTransaction(); + // UserTransaction userTransaction = getUserTransaction(); if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) return; @@ -74,4 +84,44 @@ public class UserAdminWrapper extends for (UserAdminListener listener : listeners) listener.roleChanged(event); } -} \ No newline at end of file + + public Map getKnownBaseDns(boolean onlyWritable) { + Map dns = new HashMap(); + for (String uri : userAdminServiceReference.getPropertyKeys()) { + if (!uri.startsWith("/")) + continue; + Dictionary props = UserAdminConf.uriAsProperties(uri); + String readOnly = UserAdminConf.readOnly.getValue(props); + String baseDn = UserAdminConf.baseDn.getValue(props); + + if (onlyWritable && "true".equals(readOnly)) + continue; + if (baseDn.equalsIgnoreCase(NodeConstants.ROLES_BASEDN)) + continue; + dns.put(baseDn, uri); + } + return dns; + } + + public UserAdmin getUserAdmin() { + return userAdmin; + } + + public UserTransaction getUserTransaction() { + return userTransaction; + } + + /* DEPENDENCY INJECTION */ + public void setUserAdmin(UserAdmin userAdmin) { + this.userAdmin = userAdmin; + } + + public void setUserTransaction(UserTransaction userTransaction) { + this.userTransaction = userTransaction; + } + + public void setUserAdminServiceReference( + ServiceReference userAdminServiceReference) { + this.userAdminServiceReference = userAdminServiceReference; + } +}