1 package com.atlassian.user.impl.ldap.search.page;
2
3 import com.atlassian.user.EntityException;
4 import com.atlassian.user.Group;
5 import com.atlassian.user.impl.ldap.LDAPEntityFactory;
6 import com.atlassian.user.impl.ldap.LDAPGroupFactory;
7 import com.atlassian.user.impl.ldap.properties.LdapSearchProperties;
8 import com.atlassian.user.impl.ldap.repository.LdapContextFactory;
9 import com.atlassian.user.impl.ldap.search.LDAPPagerInfo;
10 import org.apache.log4j.Category;
11
12 import javax.naming.NamingEnumeration;
13 import javax.naming.directory.Attribute;
14 import javax.naming.directory.Attributes;
15 import javax.naming.directory.SearchResult;
16 import java.util.List;
17
18 public class LDAPListOfGroupsPager extends LDAPEntityPager<Group>
19 {
20 public static final Category log = Category.getInstance(LDAPListOfGroupsPager.class);
21
22 public LDAPListOfGroupsPager(LdapSearchProperties searchProperties, LdapContextFactory contextFactory, LDAPEntityFactory<? extends Group> groupFactory, LDAPPagerInfo info)
23 {
24 super(searchProperties, contextFactory, groupFactory, info);
25 }
26
27 protected List<Group> preloadSearchResult(SearchResult result, List<Group> prefetched) throws EntityException
28 {
29 try
30 {
31 Attributes entityAttributes = result.getAttributes();
32 Attribute listOfEntitiesAttribute = entityAttributes.get(returningAttributes[0]);
33
34 NamingEnumeration listOfEntitiesEnumeration = listOfEntitiesAttribute.getAll();
35
36 while (listOfEntitiesEnumeration.hasMoreElements())
37 {
38 String groupDN = (String) listOfEntitiesEnumeration.nextElement();
39 log.debug("got group dn '" + groupDN + "' from pager");
40 try
41 {
42 Group group = ((LDAPGroupFactory) entityFactory).getGroup(groupDN);
43 prefetched.add(group);
44 }
45 catch (Exception e)
46 {
47 log.error("Error converting DN: " + groupDN + " into a group entity.", e);
48 }
49 }
50 }
51 catch (Throwable e)
52 {
53 log.error("Could not covnert search result: " + result + " into a list of groups.", e);
54 }
55
56 return prefetched;
57 }
58 }