Clean userAdmin related classes
authorBruno Sinou <bsinou@argeo.org>
Fri, 7 Oct 2016 20:43:20 +0000 (20:43 +0000)
committerBruno Sinou <bsinou@argeo.org>
Fri, 7 Oct 2016 20:43:20 +0000 (20:43 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@9259 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

17 files changed:
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/UserAdminWrapper.java
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/UsersUtils.java
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/NewGroup.java
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/NewUser.java
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupMainPage.java
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupsView.java
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserBatchUpdateWizard.java
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserEditor.java
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserMainPage.java
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UsersView.java
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/CommonNameLP.java
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/MailLP.java
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/UserFilter.java
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/useradmin/PickUpUserDialog.java
org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/useradmin/UserLP.java
org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminUtils.java
org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminWrapper.java [deleted file]

index 2f59e8642f2e8e90c669a265f389551761fd5848..63d8f4180f0469df50f3a1451692fa7a5aa3b077 100644 (file)
@@ -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<UserAdmin> 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,45 @@ public class UserAdminWrapper extends
                for (UserAdminListener listener : listeners)
                        listener.roleChanged(event);
        }
+
+       public Map<String, String> getKnownBaseDns(boolean onlyWritable) {
+               Map<String, String> dns = new HashMap<String, String>();
+               for (String uri : userAdminServiceReference.getPropertyKeys()) {
+                       if (!uri.startsWith("/"))
+                               continue;
+                       Dictionary<String, ?> 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<UserAdmin> userAdminServiceReference) {
+               this.userAdminServiceReference = userAdminServiceReference;
+       }
+
 }
\ No newline at end of file
index 7edfb8118cf439cec1efc31afdd1267867814477..55db40e0353368789371b0f537eb671b5299ec6e 100644 (file)
@@ -10,17 +10,21 @@ import javax.security.auth.Subject;
 import javax.security.auth.x500.X500Principal;
 
 import org.argeo.eclipse.ui.EclipseUiException;
-import org.argeo.osgi.useradmin.LdifName;
+import org.argeo.naming.LdapAttrs;
+import org.argeo.node.NodeConstants;
 import org.osgi.service.useradmin.Role;
 import org.osgi.service.useradmin.User;
 
-/** Utility methods to manage user concepts in the ui.workbench bundle */
+/**
+ * Utility methods to manage user concepts in the ui.workbench bundle 
+ * 
+ * FIXME refactor amd centralise userAdminUtils
+ */
+@Deprecated
 public class UsersUtils {
-       // TODO this constant is defined in the CMS
-       public final static String ROLES_BASEDN = "ou=roles,ou=node";
 
        public final static boolean isCurrentUser(User user) {
-               String userName = getProperty(user, LdifName.dn.name());
+               String userName = getProperty(user, LdapAttrs.DN);
                try {
                        LdapName selfUserName = getLdapName();
                        LdapName userLdapName = new LdapName(userName);
@@ -29,8 +33,8 @@ public class UsersUtils {
                        else
                                return false;
                } catch (InvalidNameException e) {
-                       throw new EclipseUiException("User " + user + " has an unvalid dn: "
-                                       + userName, e);
+                       throw new EclipseUiException("User " + user
+                                       + " has an unvalid dn: " + userName, e);
                }
        }
 
@@ -48,13 +52,13 @@ public class UsersUtils {
        }
 
        public final static String getCommonName(User user) {
-               return getProperty(user, LdifName.cn.name());
+               return getProperty(user, LdapAttrs.cn.name());
        }
 
        /** Simply retrieves a display name of the relevant domain */
        public final static String getDomainName(User user) {
-               String dn = (String) user.getProperties().get(LdifName.dn.name());
-               if (dn.endsWith(ROLES_BASEDN))
+               String dn = (String) user.getProperties().get(LdapAttrs.DN);
+               if (dn.endsWith(NodeConstants.ROLES_BASEDN))
                        return "System roles";
                try {
                        LdapName name;
@@ -74,7 +78,8 @@ public class UsersUtils {
                        }
                        return dname;
                } catch (InvalidNameException e) {
-                       throw new EclipseUiException("Unable to get domain name for " + dn, e);
+                       throw new EclipseUiException("Unable to get domain name for " + dn,
+                                       e);
                }
        }
 
@@ -85,16 +90,4 @@ public class UsersUtils {
                else
                        return "";
        }
-
-       /*
-        * INTERNAL METHODS: Below methods are meant to stay here and are not part
-        * of a potential generic backend to manage the useradmin
-        */
-       public final static boolean notNull(String string) {
-               if (string == null)
-                       return false;
-               else
-                       return !"".equals(string.trim());
-       }
-
-}
\ No newline at end of file
+}
index 48f0016e38e8b69abbfb84f40bd7601d6482a314..5013bbbdcc9787b885d140e20c6080b400b3557d 100644 (file)
@@ -23,8 +23,8 @@ import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
 import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.dialogs.ErrorFeedback;
+import org.argeo.naming.LdapAttrs;
 import org.argeo.node.ArgeoNames;
-import org.argeo.osgi.useradmin.LdifName;
 import org.argeo.osgi.useradmin.UserAdminConf;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
@@ -94,7 +94,7 @@ public class NewGroup extends AbstractHandler {
                                Dictionary props = group.getProperties();
                                String descStr = descriptionTxt.getText();
                                if (EclipseUiUtils.notEmpty(descStr))
-                                       props.put(LdifName.description.name(), descStr);
+                                       props.put(LdapAttrs.description.name(), descStr);
                                userAdminWrapper.commitOrNotifyTransactionStateChange();
                                userAdminWrapper.notifyListeners(new UserAdminEvent(null,
                                                UserAdminEvent.ROLE_CREATED, group));
@@ -206,7 +206,7 @@ public class NewGroup extends AbstractHandler {
                        if (EclipseUiUtils.notEmpty(bdn)) {
                                Dictionary<String, ?> props = UserAdminConf.uriAsProperties(dns
                                                .get(bdn));
-                               String dn = LdifName.cn.name() + "=" + cn + ","
+                               String dn = LdapAttrs.cn.name() + "=" + cn + ","
                                                + UserAdminConf.groupBase.getValue(props) + "," + bdn;
                                return dn;
                        }
index c259153f6f243bed2655a9e597dfe089b461b473..c786608eb07a956c1f5efb5de48a793b68877872 100644 (file)
@@ -29,8 +29,8 @@ import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
 import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.dialogs.ErrorFeedback;
+import org.argeo.naming.LdapAttrs;
 import org.argeo.node.ArgeoNames;
-import org.argeo.osgi.useradmin.LdifName;
 import org.argeo.osgi.useradmin.UserAdminConf;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
@@ -115,20 +115,20 @@ public class NewUser extends AbstractHandler {
 
                                String lastNameStr = lastNameTxt.getText();
                                if (EclipseUiUtils.notEmpty(lastNameStr))
-                                       props.put(LdifName.sn.name(), lastNameStr);
+                                       props.put(LdapAttrs.sn.name(), lastNameStr);
 
                                String firstNameStr = firstNameTxt.getText();
                                if (EclipseUiUtils.notEmpty(firstNameStr))
-                                       props.put(LdifName.givenName.name(), firstNameStr);
+                                       props.put(LdapAttrs.givenName.name(), firstNameStr);
 
                                String cn = UserAdminUtils.buildDefaultCn(firstNameStr,
                                                lastNameStr);
                                if (EclipseUiUtils.notEmpty(cn))
-                                       props.put(LdifName.cn.name(), cn);
+                                       props.put(LdapAttrs.cn.name(), cn);
 
                                String mailStr = primaryMailTxt.getText();
                                if (EclipseUiUtils.notEmpty(mailStr))
-                                       props.put(LdifName.mail.name(), mailStr);
+                                       props.put(LdapAttrs.mail.name(), mailStr);
 
                                char[] password = mainUserInfo.getPassword();
                                user.getCredentials().put(null, password);
@@ -279,7 +279,7 @@ public class NewUser extends AbstractHandler {
                        if (EclipseUiUtils.notEmpty(bdn)) {
                                Dictionary<String, ?> props = UserAdminConf.uriAsProperties(dns
                                                .get(bdn));
-                               String dn = LdifName.uid.name() + "=" + uid + ","
+                               String dn = LdapAttrs.uid.name() + "=" + uid + ","
                                                + UserAdminConf.userBase.getValue(props) + "," + bdn;
                                return dn;
                        }
index 0c8e55593b8cb04e7cb2e10d58ce9e765a723600..2f5ae20556ec4095dc94f22976c7209f6495524f 100644 (file)
@@ -36,8 +36,8 @@ import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
+import org.argeo.naming.LdapAttrs;
 import org.argeo.node.ArgeoNames;
-import org.argeo.osgi.useradmin.LdifName;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.ToolBarManager;
 import org.eclipse.jface.dialogs.MessageDialog;
@@ -114,7 +114,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames {
                dnTxt.setEnabled(false);
 
                final Text cnTxt = createLT(body, "Common Name",
-                               UserAdminUtils.getProperty(group, LdifName.cn.name()));
+                               UserAdminUtils.getProperty(group, LdapAttrs.cn.name()));
                cnTxt.setEnabled(false);
 
                Label descLbl = new Label(body, SWT.LEAD);
@@ -147,7 +147,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames {
 
                        @SuppressWarnings("unchecked")
                        public void commit(boolean onSave) {
-                               group.getProperties().put(LdifName.description.name(),
+                               group.getProperties().put(LdapAttrs.description.name(),
                                                descTxt.getText());
                                // Enable common name ?
                                // editor.setProperty(UserAdminConstants.KEY_CN,
@@ -160,9 +160,9 @@ public class GroupMainPage extends FormPage implements ArgeoNames {
                                refreshFormTitle(group);
                                dnTxt.setText(group.getName());
                                cnTxt.setText(UserAdminUtils.getProperty(group,
-                                               LdifName.cn.name()));
+                                               LdapAttrs.cn.name()));
                                descTxt.setText(UserAdminUtils.getProperty(group,
-                                               LdifName.description.name()));
+                                               LdapAttrs.description.name()));
                                super.refresh();
                        }
                };
@@ -347,7 +347,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames {
                        getSection().setText(
                                        "Members of group "
                                                        + UserAdminUtils.getProperty(group,
-                                                                       LdifName.cn.name()));
+                                                                       LdapAttrs.cn.name()));
                        userViewer.refresh();
                        super.refresh();
                }
@@ -450,7 +450,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames {
        // LOCAL HELPERS
        private void refreshFormTitle(Group group) {
                getManagedForm().getForm().setText(
-                               UserAdminUtils.getProperty(group, LdifName.cn.name()));
+                               UserAdminUtils.getProperty(group, LdapAttrs.cn.name()));
        }
 
        private Composite addSection(FormToolkit tk, Composite parent, String title) {
index ec20a04e7d8e60829047a9ee99382ead81a25947..8cb284134b8189b6e5879bb15e65c15c9c735414 100644 (file)
@@ -34,9 +34,10 @@ import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
+import org.argeo.naming.LdapAttrs;
+import org.argeo.naming.LdapObjs;
 import org.argeo.node.ArgeoNames;
 import org.argeo.node.NodeConstants;
-import org.argeo.osgi.useradmin.LdifName;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.dnd.DND;
@@ -145,8 +146,8 @@ public class GroupsView extends ViewPart implements ArgeoNames {
 
                private boolean showSystemRoles = false;
 
-               private final String[] knownProps = { LdifName.uid.name(),
-                               LdifName.cn.name(), LdifName.dn.name() };
+               private final String[] knownProps = { LdapAttrs.uid.name(),
+                               LdapAttrs.cn.name(), LdapAttrs.DN };
 
                public MyUserTableViewer(Composite parent, int style) {
                        super(parent, style);
@@ -184,12 +185,11 @@ public class GroupsView extends ViewPart implements ArgeoNames {
                                                tmpBuilder.append("*)");
                                        }
                                if (tmpBuilder.length() > 1) {
-                                       builder.append("(&(").append(LdifName.objectClass.name())
-                                                       .append("=").append(LdifName.groupOfNames.name())
+                                       builder.append("(&(").append(LdapAttrs.objectClass.name())
+                                                       .append("=").append(LdapObjs.groupOfNames.name())
                                                        .append(")");
                                        if (!showSystemRoles)
-                                               builder.append("(!(").append(LdifName.dn.name())
-                                                               .append("=*")
+                                               builder.append("(!(").append(LdapAttrs.DN).append("=*")
                                                                .append(NodeConstants.ROLES_BASEDN)
                                                                .append("))");
                                        builder.append("(|");
@@ -198,17 +198,18 @@ public class GroupsView extends ViewPart implements ArgeoNames {
                                } else {
                                        if (!showSystemRoles)
                                                builder.append("(&(")
-                                                               .append(LdifName.objectClass.name())
+                                                               .append(LdapAttrs.objectClass.name())
                                                                .append("=")
-                                                               .append(LdifName.groupOfNames.name())
-                                                               .append(")(!(").append(LdifName.dn.name())
+                                                               .append(LdapObjs.groupOfNames.name())
+                                                               .append(")(!(").append(LdapAttrs.DN)
                                                                .append("=*")
                                                                .append(NodeConstants.ROLES_BASEDN)
                                                                .append(")))");
                                        else
-                                               builder.append("(").append(LdifName.objectClass.name())
+                                               builder.append("(")
+                                                               .append(LdapAttrs.objectClass.name())
                                                                .append("=")
-                                                               .append(LdifName.groupOfNames.name())
+                                                               .append(LdapObjs.groupOfNames.name())
                                                                .append(")");
 
                                }
@@ -249,4 +250,4 @@ public class GroupsView extends ViewPart implements ArgeoNames {
        public void setUserAdminWrapper(UserAdminWrapper userAdminWrapper) {
                this.userAdminWrapper = userAdminWrapper;
        }
-}
\ No newline at end of file
+}
index ff113d1dd0a41f583df8bcedf2435250d60db840..fb2c3a365b16bc03606de1ac9f0e01f60cab6191 100644 (file)
@@ -20,9 +20,9 @@ import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
-import org.argeo.node.ArgeoNames;
+import org.argeo.naming.LdapAttrs;
+import org.argeo.naming.LdapObjs;
 import org.argeo.node.NodeConstants;
-import org.argeo.osgi.useradmin.LdifName;
 import org.eclipse.jface.dialogs.IPageChangeProvider;
 import org.eclipse.jface.dialogs.IPageChangedListener;
 import org.eclipse.jface.dialogs.MessageDialog;
@@ -451,10 +451,10 @@ public class UserBatchUpdateWizard extends Wizard {
 
                private class ChooseUserTableViewer extends LdifUsersTable {
                        private static final long serialVersionUID = 5080437561015853124L;
-                       private final String[] knownProps = { LdifName.uid.name(),
-                                       LdifName.dn.name(), LdifName.cn.name(),
-                                       LdifName.givenName.name(), LdifName.sn.name(),
-                                       LdifName.mail.name() };
+                       private final String[] knownProps = { LdapAttrs.uid.name(),
+                                       LdapAttrs.DN, LdapAttrs.cn.name(),
+                                       LdapAttrs.givenName.name(), LdapAttrs.sn.name(),
+                                       LdapAttrs.mail.name() };
 
                        public ChooseUserTableViewer(Composite parent, int style) {
                                super(parent, style);
@@ -478,16 +478,17 @@ public class UserBatchUpdateWizard extends Wizard {
                                                }
                                        if (tmpBuilder.length() > 1) {
                                                builder.append("(&(")
-                                                               .append(LdifName.objectClass.name())
+                                                               .append(LdapAttrs.objectClass.name())
                                                                .append("=")
-                                                               .append(LdifName.inetOrgPerson.name())
+                                                               .append(LdapObjs.inetOrgPerson.name())
                                                                .append(")(|");
                                                builder.append(tmpBuilder.toString());
                                                builder.append("))");
                                        } else
-                                               builder.append("(").append(LdifName.objectClass.name())
+                                               builder.append("(")
+                                                               .append(LdapAttrs.objectClass.name())
                                                                .append("=")
-                                                               .append(LdifName.inetOrgPerson.name())
+                                                               .append(LdapObjs.inetOrgPerson.name())
                                                                .append(")");
                                        roles = userAdminWrapper.getUserAdmin().getRoles(
                                                        builder.toString());
index 85ed08160c41df8be0b5b0a46e05d94ecfc22a44..6e90339c664a848ef5a21269763893515b772c8d 100644 (file)
@@ -23,7 +23,7 @@ import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
 import org.argeo.cms.ui.workbench.internal.useradmin.UiUserAdminListener;
 import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
 import org.argeo.cms.util.useradmin.UserAdminUtils;
-import org.argeo.osgi.useradmin.LdifName;
+import org.argeo.naming.LdapAttrs;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
@@ -100,7 +100,7 @@ public class UserEditor extends FormEditor {
        void updateEditorTitle(String title) {
                if (title == null) {
                        String commonName = UserAdminUtils.getProperty(user,
-                                       LdifName.cn.name());
+                                       LdapAttrs.cn.name());
                        title = "".equals(commonName) ? user.getName() : commonName;
                }
                setPartName(title);
index d96dfbc90e5a052932552d0a5cac904d6dbc8dc9..2ff5f510fdda475ea6bb1df0570cc1918eac6b46 100644 (file)
@@ -34,9 +34,9 @@ import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
+import org.argeo.naming.LdapAttrs;
 import org.argeo.node.ArgeoNames;
 import org.argeo.node.NodeConstants;
-import org.argeo.osgi.useradmin.LdifName;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.ToolBarManager;
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -119,21 +119,21 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                body.setLayout(new GridLayout(2, false));
 
                final Text distinguishedName = createLT(tk, body, "User Name",
-                               UserAdminUtils.getProperty(user, LdifName.uid.name()));
+                               UserAdminUtils.getProperty(user, LdapAttrs.uid.name()));
                distinguishedName.setEnabled(false);
 
                final Text commonName = createLT(tk, body, "Common Name",
-                               UserAdminUtils.getProperty(user, LdifName.cn.name()));
+                               UserAdminUtils.getProperty(user, LdapAttrs.cn.name()));
                commonName.setEnabled(false);
 
                final Text firstName = createLT(tk, body, "First name",
-                               UserAdminUtils.getProperty(user, LdifName.givenName.name()));
+                               UserAdminUtils.getProperty(user, LdapAttrs.givenName.name()));
 
                final Text lastName = createLT(tk, body, "Last name",
-                               UserAdminUtils.getProperty(user, LdifName.sn.name()));
+                               UserAdminUtils.getProperty(user, LdapAttrs.sn.name()));
 
                final Text email = createLT(tk, body, "Email",
-                               UserAdminUtils.getProperty(user, LdifName.mail.name()));
+                               UserAdminUtils.getProperty(user, LdapAttrs.mail.name()));
 
                // create form part (controller)
                AbstractFormPart part = new SectionPart((Section) body.getParent()) {
@@ -156,28 +156,29 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                        @SuppressWarnings("unchecked")
                        public void commit(boolean onSave) {
                                // TODO Sanity checks (mail validity...)
-                               user.getProperties().put(LdifName.givenName.name(),
+                               user.getProperties().put(LdapAttrs.givenName.name(),
                                                firstName.getText());
-                               user.getProperties()
-                                               .put(LdifName.sn.name(), lastName.getText());
-                               user.getProperties().put(LdifName.cn.name(),
+                               user.getProperties().put(LdapAttrs.sn.name(),
+                                               lastName.getText());
+                               user.getProperties().put(LdapAttrs.cn.name(),
                                                commonName.getText());
-                               user.getProperties().put(LdifName.mail.name(), email.getText());
+                               user.getProperties()
+                                               .put(LdapAttrs.mail.name(), email.getText());
                                super.commit(onSave);
                        }
 
                        @Override
                        public void refresh() {
                                distinguishedName.setText(UserAdminUtils.getProperty(user,
-                                               LdifName.uid.name()));
+                                               LdapAttrs.uid.name()));
                                commonName.setText(UserAdminUtils.getProperty(user,
-                                               LdifName.cn.name()));
+                                               LdapAttrs.cn.name()));
                                firstName.setText(UserAdminUtils.getProperty(user,
-                                               LdifName.givenName.name()));
+                                               LdapAttrs.givenName.name()));
                                lastName.setText(UserAdminUtils.getProperty(user,
-                                               LdifName.sn.name()));
+                                               LdapAttrs.sn.name()));
                                email.setText(UserAdminUtils.getProperty(user,
-                                               LdifName.mail.name()));
+                                               LdapAttrs.mail.name()));
                                refreshFormTitle(user);
                                super.refresh();
                        }
@@ -488,7 +489,7 @@ public class UserMainPage extends FormPage implements ArgeoNames {
        // LOCAL HELPERS
        private void refreshFormTitle(User group) {
                getManagedForm().getForm().setText(
-                               UserAdminUtils.getProperty(group, LdifName.cn.name()));
+                               UserAdminUtils.getProperty(group, LdapAttrs.cn.name()));
        }
 
        /** Appends a section with a title */
index 9e8f9d197d9741192c824a86cc63fd7977d8a147..e2b1c0eec04299d4b8d52528272b1fb02b86dd74 100644 (file)
@@ -32,9 +32,10 @@ import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
+import org.argeo.naming.LdapAttrs;
+import org.argeo.naming.LdapObjs;
 import org.argeo.node.ArgeoNames;
 import org.argeo.node.NodeConstants;
-import org.argeo.osgi.useradmin.LdifName;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.dnd.DND;
@@ -120,10 +121,10 @@ public class UsersView extends ViewPart implements ArgeoNames {
        private class MyUserTableViewer extends LdifUsersTable {
                private static final long serialVersionUID = 8467999509931900367L;
 
-               private final String[] knownProps = { LdifName.uid.name(),
-                               LdifName.dn.name(), LdifName.cn.name(),
-                               LdifName.givenName.name(), LdifName.sn.name(),
-                               LdifName.mail.name() };
+               private final String[] knownProps = { LdapAttrs.DN,
+                               LdapAttrs.uid.name(), LdapAttrs.cn.name(),
+                               LdapAttrs.givenName.name(), LdapAttrs.sn.name(),
+                               LdapAttrs.mail.name() };
 
                public MyUserTableViewer(Composite parent, int style) {
                        super(parent, style);
@@ -146,14 +147,14 @@ public class UsersView extends ViewPart implements ArgeoNames {
                                                tmpBuilder.append("*)");
                                        }
                                if (tmpBuilder.length() > 1) {
-                                       builder.append("(&(").append(LdifName.objectClass.name())
-                                                       .append("=").append(LdifName.inetOrgPerson.name())
+                                       builder.append("(&(").append(LdapAttrs.objectClass.name())
+                                                       .append("=").append(LdapObjs.inetOrgPerson.name())
                                                        .append(")(|");
                                        builder.append(tmpBuilder.toString());
                                        builder.append("))");
                                } else
-                                       builder.append("(").append(LdifName.objectClass.name())
-                                                       .append("=").append(LdifName.inetOrgPerson.name())
+                                       builder.append("(").append(LdapAttrs.objectClass.name())
+                                                       .append("=").append(LdapObjs.inetOrgPerson.name())
                                                        .append(")");
                                roles = userAdminWrapper.getUserAdmin().getRoles(
                                                builder.toString());
index 06e8ededa55b5d2f4952771b197a53a085a1671d..0874ee703eae5d9f9326c0cc18ad530b7e1d304b 100644 (file)
@@ -1,7 +1,7 @@
 package org.argeo.cms.ui.workbench.internal.useradmin.providers;
 
 import org.argeo.cms.util.useradmin.UserAdminUtils;
-import org.argeo.osgi.useradmin.LdifName;
+import org.argeo.naming.LdapAttrs;
 import org.osgi.service.useradmin.User;
 
 /** Simply declare a label provider that returns the common name of a user */
@@ -10,6 +10,6 @@ public class CommonNameLP extends UserAdminAbstractLP {
 
        @Override
        public String getText(User user) {
-               return UserAdminUtils.getProperty(user, LdifName.cn.name());
+               return UserAdminUtils.getProperty(user, LdapAttrs.cn.name());
        }
 }
\ No newline at end of file
index 4d52ca114afb8a1f058cadb81c037c81d707a994..944e8d12b3f002592852fad807c650a7c5b9ac87 100644 (file)
@@ -1,7 +1,7 @@
 package org.argeo.cms.ui.workbench.internal.useradmin.providers;
 
 import org.argeo.cms.util.useradmin.UserAdminUtils;
-import org.argeo.osgi.useradmin.LdifName;
+import org.argeo.naming.LdapAttrs;
 import org.osgi.service.useradmin.User;
 
 /** Simply declare a label provider that returns the Primary Mail of a user */
@@ -10,6 +10,6 @@ public class MailLP extends UserAdminAbstractLP {
 
        @Override
        public String getText(User user) {
-               return UserAdminUtils.getProperty(user, LdifName.mail.name());
+               return UserAdminUtils.getProperty(user, LdapAttrs.mail.name());
        }
 }
\ No newline at end of file
index 04c275647c62751dfe17213cb458ebb47f5df473..c19d57b2050756974d77826982068051953fa8b0 100644 (file)
@@ -3,8 +3,8 @@ package org.argeo.cms.ui.workbench.internal.useradmin.providers;
 import static org.argeo.eclipse.ui.EclipseUiUtils.notEmpty;
 
 import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.naming.LdapAttrs;
 import org.argeo.node.NodeConstants;
-import org.argeo.osgi.useradmin.LdifName;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.jface.viewers.ViewerFilter;
 import org.osgi.service.useradmin.User;
@@ -15,10 +15,10 @@ public class UserFilter extends ViewerFilter {
        private String searchString;
        private boolean showSystemRole = true;
 
-       private final String[] knownProps = { LdifName.dn.name(),
-                       LdifName.cn.name(), LdifName.givenName.name(), LdifName.sn.name(),
-                       LdifName.uid.name(), LdifName.description.name(),
-                       LdifName.mail.name() };
+       private final String[] knownProps = { LdapAttrs.DN, LdapAttrs.cn.name(),
+                       LdapAttrs.givenName.name(), LdapAttrs.sn.name(),
+                       LdapAttrs.uid.name(), LdapAttrs.description.name(),
+                       LdapAttrs.mail.name() };
 
        public void setSearchText(String s) {
                // ensure that the value can be used for matching
index aa2312829dae79ab870bf286790bc17114ce6dd0..22d75db7273e55802a610662cb2eb7cfc0cc6410 100644 (file)
@@ -18,12 +18,13 @@ package org.argeo.cms.ui.workbench.useradmin;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.argeo.cms.ui.workbench.internal.useradmin.UsersUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiException;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
-import org.argeo.osgi.useradmin.LdifName;
+import org.argeo.naming.LdapAttrs;
+import org.argeo.naming.LdapObjs;
+import org.argeo.node.NodeConstants;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.dialogs.TrayDialog;
 import org.eclipse.jface.viewers.DoubleClickEvent;
@@ -172,8 +173,8 @@ public class PickUpUserDialog extends TrayDialog {
        private class MyUserTableViewer extends LdifUsersTable {
                private static final long serialVersionUID = 8467999509931900367L;
 
-               private final String[] knownProps = { LdifName.uid.name(),
-                               LdifName.cn.name(), LdifName.dn.name() };
+               private final String[] knownProps = { LdapAttrs.uid.name(),
+                               LdapAttrs.cn.name(), LdapAttrs.DN };
 
                private Button showSystemRoleBtn;
                private Button showUserBtn;
@@ -219,16 +220,16 @@ public class PickUpUserDialog extends TrayDialog {
                                                filterBuilder.append("*)");
                                        }
 
-                               String typeStr = "(" + LdifName.objectClass.name() + "="
-                                               + LdifName.groupOfNames.name() + ")";
+                               String typeStr = "(" + LdapAttrs.objectClass.name() + "="
+                                               + LdapObjs.groupOfNames.name() + ")";
                                if ((showUserBtn.getSelection()))
-                                       typeStr = "(|(" + LdifName.objectClass.name() + "="
-                                                       + LdifName.inetOrgPerson.name() + ")" + typeStr
+                                       typeStr = "(|(" + LdapAttrs.objectClass.name() + "="
+                                                       + LdapObjs.inetOrgPerson.name() + ")" + typeStr
                                                        + ")";
 
                                if (!showSystemRoleBtn.getSelection())
-                                       typeStr = "(& " + typeStr + "(!(" + LdifName.dn.name()
-                                                       + "=*" + UsersUtils.ROLES_BASEDN + ")))";
+                                       typeStr = "(& " + typeStr + "(!(" + LdapAttrs.DN + "=*"
+                                                       + NodeConstants.ROLES_BASEDN + ")))";
 
                                if (filterBuilder.length() > 1) {
                                        builder.append("(&" + typeStr);
@@ -240,8 +241,8 @@ public class PickUpUserDialog extends TrayDialog {
                                }
                                roles = userAdmin.getRoles(builder.toString());
                        } catch (InvalidSyntaxException e) {
-                               throw new EclipseUiException("Unable to get roles with filter: "
-                                               + filter, e);
+                               throw new EclipseUiException(
+                                               "Unable to get roles with filter: " + filter, e);
                        }
                        List<User> users = new ArrayList<User>();
                        for (Role role : roles)
index 592af3cd595d867b5df1ad9d72750344eefa90b5..05e3756a5a87a1e651ae38f6f62a8cedc5b607c2 100644 (file)
@@ -6,6 +6,7 @@ import javax.naming.ldap.LdapName;
 import org.argeo.cms.ui.workbench.internal.useradmin.UsersImages;
 import org.argeo.cms.ui.workbench.internal.useradmin.UsersUtils;
 import org.argeo.eclipse.ui.EclipseUiException;
+import org.argeo.node.NodeConstants;
 import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.jface.viewers.ColumnLabelProvider;
 import org.eclipse.swt.SWT;
@@ -37,6 +38,7 @@ class UserLP extends ColumnLabelProvider {
        public Font getFont(Object element) {
                // Self as bold
                try {
+                       // LdapName selfUserName = new LdapName(CurrentUser.getUsername());
                        LdapName selfUserName = UsersUtils.getLdapName();
                        String userName = ((User) element).getName();
                        LdapName userLdapName = new LdapName(userName);
@@ -65,7 +67,7 @@ class UserLP extends ColumnLabelProvider {
                if (COL_ICON.equals(currType)) {
                        User user = (User) element;
                        String dn = user.getName();
-                       if (dn.endsWith(UsersUtils.ROLES_BASEDN))
+                       if (dn.endsWith(NodeConstants.ROLES_BASEDN))
                                return UsersImages.ICON_ROLE;
                        else if (user.getType() == Role.GROUP)
                                return UsersImages.ICON_GROUP;
index 01ec0d831bf56ef9e60048b676395a8286dd8e00..6684b261fb0d6dc6647eaabece5d82ee53b7104b 100644 (file)
@@ -16,8 +16,8 @@ import org.argeo.cms.ui.CmsView;
 import org.argeo.cms.util.CmsUtils;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.jcr.JcrUtils;
+import org.argeo.naming.LdapAttrs;
 import org.argeo.node.NodeConstants;
-import org.argeo.osgi.useradmin.LdifName;
 import org.osgi.service.useradmin.Group;
 import org.osgi.service.useradmin.Role;
 import org.osgi.service.useradmin.User;
@@ -36,9 +36,9 @@ public class UserAdminUtils {
        public final static String getUsername(User user) {
                String username = null;
                if (user instanceof Group)
-                       username = getProperty(user, LdifName.cn.name());
+                       username = getProperty(user, LdapAttrs.cn.name());
                else
-                       username = getProperty(user, LdifName.uid.name());
+                       username = getProperty(user, LdapAttrs.uid.name());
                return username;
        }
 
@@ -97,7 +97,7 @@ public class UserAdminUtils {
 
        /** Simply checks if current user is the same as the passed one */
        public static boolean isCurrentUser(User user) {
-               String userName = getProperty(user, LdifName.dn.name());
+               String userName = getProperty(user, LdapAttrs.DN);
                try {
                        LdapName selfUserName = getCurrentUserLdapName();
                        LdapName userLdapName = new LdapName(userName);
@@ -162,8 +162,8 @@ public class UserAdminUtils {
        public static String getUserUid(String dn) {
                LdapName ldapName = getLdapName(dn);
                Rdn last = ldapName.getRdn(ldapName.size() - 1);
-               if (last.getType().toLowerCase().equals(LdifName.uid.name())
-                               || last.getType().toLowerCase().equals(LdifName.cn.name()))
+               if (last.getType().toLowerCase().equals(LdapAttrs.uid.name())
+                               || last.getType().toLowerCase().equals(LdapAttrs.cn.name()))
                        return (String) last.getValue();
                else
                        throw new CmsException("Cannot retrieve user uid, "
@@ -178,9 +178,9 @@ public class UserAdminUtils {
                Role user = getRole(userAdmin, getLdapName(dn));
                if (user == null)
                        return getUserUid(dn);
-               String displayName = getProperty(user, LdifName.displayName.name());
+               String displayName = getProperty(user, LdapAttrs.displayName.name());
                if (EclipseUiUtils.isEmpty(displayName))
-                       displayName = getProperty(user, LdifName.cn.name());
+                       displayName = getProperty(user, LdapAttrs.cn.name());
                if (EclipseUiUtils.isEmpty(displayName))
                        return getUserUid(dn);
                else
@@ -196,7 +196,7 @@ public class UserAdminUtils {
                if (user == null)
                        return null;
                else
-                       return getProperty(user, LdifName.mail.name());
+                       return getProperty(user, LdapAttrs.mail.name());
        }
 
        // VARIOUS UI HELPERS
@@ -216,7 +216,7 @@ public class UserAdminUtils {
                        int i = 0;
                        loop: while (i < rdns.size()) {
                                Rdn currrRdn = rdns.get(i);
-                               if (!LdifName.dc.name().equals(currrRdn.getType()))
+                               if (!LdapAttrs.dc.name().equals(currrRdn.getType()))
                                        break loop;
                                else {
                                        String currVal = (String) currrRdn.getValue();
@@ -239,4 +239,4 @@ public class UserAdminUtils {
                        throw new CmsException("Cannot parse LDAP name " + dn, e);
                }
        }
-}
\ No newline at end of file
+}
diff --git a/org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminWrapper.java b/org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminWrapper.java
deleted file mode 100644 (file)
index d38e77e..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-package org.argeo.cms.util.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;
-
-/**
- * Base useradmin wrapper. Implementing application might extends to add
- * business specific behaviour
- */
-public abstract class UserAdminWrapper {
-       // private Log log = LogFactory.getLog(UserAdminWrapper.class);
-
-       private UserAdmin userAdmin;
-       private ServiceReference<UserAdmin> userAdminServiceReference;
-       private UserTransaction userTransaction;
-
-       /* USER ADMIN LISTENER MANAGEMENT */
-       List<UserAdminListener> listeners = new ArrayList<UserAdminListener>();
-
-       // TODO implement safer mechanism
-       public void addListener(UserAdminListener userAdminListener) {
-               if (!listeners.contains(userAdminListener))
-                       listeners.add(userAdminListener);
-       }
-
-       /**
-        * Starts a transaction if none already exists and notify the userAdmin
-        * listeners.Must be called from the UI Thread.
-        */
-       public UserTransaction beginTransactionIfNeeded() {
-               try {
-                       if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) {
-                               userTransaction.begin();
-                       }
-                       return userTransaction;
-               } catch (Exception e) {
-                       throw new CmsException("Unable to begin transaction", e);
-               }
-       }
-
-       // Expose this?
-       public void removeListener(UserAdminListener userAdminListener) {
-               if (listeners.contains(userAdminListener))
-                       listeners.remove(userAdminListener);
-       }
-
-       public void notifyListeners(UserAdminEvent event) {
-               for (UserAdminListener listener : listeners)
-                       listener.roleChanged(event);
-       }
-
-       public Map<String, String> getKnownBaseDns(boolean onlyWritable) {
-               Map<String, String> dns = new HashMap<String, String>();
-               for (String uri : userAdminServiceReference.getPropertyKeys()) {
-                       if (!uri.startsWith("/"))
-                               continue;
-                       Dictionary<String, ?> 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<UserAdmin> userAdminServiceReference) {
-               this.userAdminServiceReference = userAdminServiceReference;
-       }
-}
\ No newline at end of file