X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Finternal%2FUserAdminWrapper.java;fp=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Finternal%2FUserAdminWrapper.java;h=43ce58da9fba74bb7f06c0ea9bb7a3b5f8acd551;hb=f295f8e7a43efc1839416158f4e0f268506c88b5;hp=cfad78007914d6b24f363aaf5ad7a0150a1770c5;hpb=5a128a3f0b2fa3a78a64c3caa8c93b03b387dff8;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UserAdminWrapper.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UserAdminWrapper.java index cfad78007..43ce58da9 100644 --- a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UserAdminWrapper.java +++ b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UserAdminWrapper.java @@ -1,42 +1,30 @@ package org.argeo.security.ui.admin.internal; 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.ArgeoException; -import org.argeo.cms.auth.AuthConstants; -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; /** Centralize interaction with the UserAdmin in this bundle */ -public class UserAdminWrapper { +public class UserAdminWrapper extends + org.argeo.cms.util.useradmin.UserAdminWrapper { // private Log log = LogFactory.getLog(UserAdminWrapper.class); - private UserAdmin userAdmin; - private ServiceReference userAdminServiceReference; - private UserTransaction userTransaction; - // Registered listeners List listeners = new ArrayList(); - // TODO implement safer mechanism - public void addListener(UserAdminListener userAdminListener) { - if (!listeners.contains(userAdminListener)) - listeners.add(userAdminListener); - } - - /** Must be called from the UI Thread. */ + /** + * Overwrite the normal begin transaction behaviour to also notify the UI. + * Must be called from the UI Thread. + */ public UserTransaction beginTransactionIfNeeded() { try { + UserTransaction userTransaction = getUserTransaction(); if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) { userTransaction.begin(); UiAdminUtils.notifyTransactionStateChange(userTransaction); @@ -47,6 +35,12 @@ public class UserAdminWrapper { } } + // TODO implement safer mechanism + public void addListener(UserAdminListener userAdminListener) { + if (!listeners.contains(userAdminListener)) + listeners.add(userAdminListener); + } + // Expose this? public void removeListener(UserAdminListener userAdminListener) { if (listeners.contains(userAdminListener)) @@ -57,44 +51,4 @@ public class UserAdminWrapper { for (UserAdminListener listener : listeners) listener.roleChanged(event); } - - public UserAdmin getUserAdmin() { - return userAdmin; - } - - public UserTransaction getUserTransaction() { - return userTransaction; - } - - public void setUserAdminServiceReference( - ServiceReference userAdminServiceReference) { - this.userAdminServiceReference = userAdminServiceReference; - } - - 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(AuthConstants.ROLES_BASEDN)) - continue; - dns.put(baseDn, uri); - } - return dns; - } - - /* DEPENDENCY INJECTION */ - public void setUserAdmin(UserAdmin userAdmin) { - this.userAdmin = userAdmin; - } - - public void setUserTransaction(UserTransaction userTransaction) { - this.userTransaction = userTransaction; - } } \ No newline at end of file