]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UserAdminWrapper.java
- Make LDIF backend more robust
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / internal / UserAdminWrapper.java
index 41efefa650d50a1af2c38937d29660ed0ac2e4aa..2cd3eab213d620bb6527354216b3c6aa488a2736 100644 (file)
@@ -4,24 +4,20 @@ import java.util.ArrayList;
 import java.util.Dictionary;
 import java.util.List;
 
-import javax.naming.InvalidNameException;
-import javax.naming.ldap.LdapName;
-import javax.naming.ldap.Rdn;
 import javax.transaction.Status;
 import javax.transaction.UserTransaction;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 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;
 
-/** Simplifies the interaction with the UserAdmin in this bundle */
+/** Centralize interaction with the UserAdmin in this bundle */
 public class UserAdminWrapper {
-       private Log log = LogFactory.getLog(UserAdminWrapper.class);
+       // private Log log = LogFactory.getLog(UserAdminWrapper.class);
 
        private UserAdmin userAdmin;
        private ServiceReference<UserAdmin> userAdminServiceReference;
@@ -37,12 +33,13 @@ public class UserAdminWrapper {
        }
 
        /** Must be called from the UI Thread. */
-       public void beginTransactionIfNeeded() {
+       public UserTransaction beginTransactionIfNeeded() {
                try {
                        if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) {
                                userTransaction.begin();
                                UiAdminUtils.notifyTransactionStateChange(userTransaction);
                        }
+                       return userTransaction;
                } catch (Exception e) {
                        throw new ArgeoException("Unable to begin transaction", e);
                }
@@ -67,21 +64,9 @@ public class UserAdminWrapper {
                return userTransaction;
        }
 
-       /* DEPENDENCY INJECTION */
-       public void setUserAdmin(UserAdmin userAdmin) {
-               this.userAdmin = userAdmin;
-       }
-
        public void setUserAdminServiceReference(
                        ServiceReference<UserAdmin> userAdminServiceReference) {
                this.userAdminServiceReference = userAdminServiceReference;
-               // for (String uri : userAdminServiceReference.getPropertyKeys()) {
-               // if (!uri.startsWith("/"))
-               // continue;
-               // log.debug(uri);
-               // Dictionary<String, ?> props = UserAdminConf.uriAsProperties(uri);
-               // log.debug(props);
-               // }
        }
 
        public List<String> getKnownBaseDns(boolean onlyWritable) {
@@ -95,28 +80,17 @@ public class UserAdminWrapper {
 
                        if (onlyWritable && "true".equals(readOnly))
                                continue;
+                       if (baseDn.equalsIgnoreCase(AuthConstants.ROLES_BASEDN))
+                               continue;
                        dns.add(baseDn);
                }
                return dns;
        }
 
-//     // Returns the human friendly domain name give a dn.
-//     public String getDomainName(String dn) {
-//             if (dn.endsWith("ou=roles, ou=node"))
-//                     return "System roles";
-//             try {
-//
-//                     LdapName name;
-//                     name = new LdapName(dn);
-//                     List<Rdn> rdns = name.getRdns();
-//
-//                     String penultimate = (String) rdns.get(rdns.size() - 2).getValue();
-//                     String last = (String) rdns.get(rdns.size() - 1).getValue();
-//                     return (penultimate + '.' + last);
-//             } catch (InvalidNameException e) {
-//                     throw new ArgeoException("Unable to get domain name for " + dn, e);
-//             }
-//     }
+       /* DEPENDENCY INJECTION */
+       public void setUserAdmin(UserAdmin userAdmin) {
+               this.userAdmin = userAdmin;
+       }
 
        public void setUserTransaction(UserTransaction userTransaction) {
                this.userTransaction = userTransaction;