Cosmetic improvements
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 21 Sep 2022 05:52:09 +0000 (07:52 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 21 Sep 2022 05:52:09 +0000 (07:52 +0200)
org.argeo.api.uuid/src/org/argeo/api/uuid/RandomUuid.java
org.argeo.cms/src/org/argeo/cms/CmsUserManager.java
org.argeo.cms/src/org/argeo/cms/acr/directory/AbstractDirectoryContent.java
org.argeo.cms/src/org/argeo/cms/internal/auth/CmsUserManagerImpl.java
org.argeo.util/src/org/argeo/util/directory/ldap/LdapEntry.java

index b65772e9b234dbcf565fb5e8217f5526076f92d9..79b2b7032620ffcb5f8441546c727b7b31ab6dec 100644 (file)
@@ -14,8 +14,7 @@ public final class RandomUuid extends TypedUuid {
        }
 
        /**
-        * Always returns <code>true</code> since random UUIDs are by definition not
-        * opaque.
+        * Always returns <code>true</code> since random UUIDs are by definition opaque.
         */
        @Override
        public final boolean isOpaque() {
index 4017c7ebf3b56a18f8bffca4ec0888cb9ffa9734..c013feed67d88cffbcaf000501d9328c603ed174 100644 (file)
@@ -54,6 +54,13 @@ public interface CmsUserManager {
        /** Search among groups including system roles and users if needed */
        List<User> listGroups(String filter, boolean includeUsers, boolean includeSystemRoles);
 
+//     /**
+//      * Lists functional accounts, that is users with regular access to the system
+//      * under this functional hierarchy unit (which probably have technical direct
+//      * sub hierarchy units), excluding groups which are not explicitly users.
+//      */
+//     Set<User> listAccounts(HierarchyUnit hierarchyUnit, boolean deep);
+
        /*
         * EDITION
         */
index a14ada79a4ec218bd5516972f31719012752b6d4..42b0a08044370a8bc57dfe0adcd5c6e275850f73 100644 (file)
@@ -34,6 +34,8 @@ abstract class AbstractDirectoryContent extends AbstractContent {
        public <A> Optional<A> get(QName key, Class<A> clss) {
                String attrName = key.getLocalPart();
                Object value = doGetProperties().get(attrName);
+               if (Long.class.isAssignableFrom(clss))
+                       return Optional.of((A) (Long) Long.parseLong(value.toString()));
                if (value == null)
                        return Optional.empty();
                // TODO deal with type and multiple
@@ -92,5 +94,4 @@ abstract class AbstractDirectoryContent extends AbstractContent {
                return provider;
        }
 
-
 }
index a1bc1efc85b67e6ec422d54c8e7bee1699919ac4..c8e137ee9180242d8832d9533820f43981268181 100644 (file)
@@ -139,6 +139,24 @@ public class CmsUserManagerImpl implements CmsUserManager {
                addUsers(users, group, filter);
                return users;
        }
+       
+       
+
+//     @Override
+//     public Set<User> listAccounts(HierarchyUnit hierarchyUnit, boolean deep) {
+//             if(!hierarchyUnit.isFunctional())
+//                     throw new IllegalArgumentException("Hierarchy unit "+hierarchyUnit.getBase()+" is not functional");
+//             UserDirectory directory = (UserDirectory)hierarchyUnit.getDirectory();
+//             Set<User> res = new HashSet<>();
+//             for(HierarchyUnit technicalHu:hierarchyUnit.getDirectHierarchyUnits(false)) {
+//                     if(technicalHu.isFunctional())
+//                             continue;
+//                     for(Role role:directory.getHierarchyUnitRoles(technicalHu, null, false)) {
+//                             if(role)
+//                     }
+//             }
+//             return res;
+//     }
 
        /** Recursively add users to list */
        private void addUsers(Set<User> users, Group group, String filter) {
index cf293cee2e94aa2ec6eda2312ae4aef2209a19ab..f34de7eb5022f5ed6b7f7603b801c3cca30898c2 100644 (file)
@@ -1,6 +1,7 @@
 package org.argeo.util.directory.ldap;
 
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Dictionary;
 import java.util.List;
 import java.util.Set;
@@ -29,7 +30,11 @@ public interface LdapEntry {
        /*
         * UTILITIES
         */
-       public static void addObjectClasses(Dictionary<String, Object> properties, Set<String> objectClasses) {
+       /**
+        * Convert a collection of object classes to the format expected by an LDAP
+        * backend.
+        */
+       public static void addObjectClasses(Dictionary<String, Object> properties, Collection<String> objectClasses) {
                String value = properties.get(LdapAttrs.objectClasses.name()).toString();
                Set<String> currentObjectClasses = new TreeSet<>(Arrays.asList(value.toString().split("\n")));
                currentObjectClasses.addAll(objectClasses);