1   package com.atlassian.user.search.page;
2   
3   import com.atlassian.user.EntityException;
4   import com.atlassian.user.Entity;
5   import com.atlassian.user.impl.RepositoryException;
6   import com.atlassian.user.impl.ldap.LDAPEntityFactory;
7   import com.atlassian.user.impl.ldap.search.page.AbstractLDAPPager;
8   
9   import javax.naming.NamingEnumeration;
10  import javax.naming.NamingException;
11  import javax.naming.directory.*;
12  import java.util.ArrayList;
13  import java.util.Iterator;
14  import java.util.List;
15  
16  import net.sf.ldaptemplate.support.filter.Filter;
17  
18  class MockLDAPPager extends AbstractLDAPPager
19  {
20      private List<SearchResult> dummyList;
21      private LDAPEntityFactory<Entity> entityFactory;
22  
23      public MockLDAPPager(List<?> list)
24      {
25          dummyList = new ArrayList<SearchResult>();
26  
27          for (Iterator iterator = list.iterator(); iterator.hasNext();)
28          {
29              Object o = iterator.next();
30              if (!(o instanceof MockSearchResult))
31                  dummyList.add(new MockSearchResult(o.toString()));
32              else
33                  dummyList.add((MockSearchResult) o);
34          }
35  
36          this.enume = new MockNamingEnumeration<SearchResult>(dummyList);
37          this.repository = new MockLdapContextFactory(dummyList);
38          originalQuery = new MockFilter();
39      }
40  
41      protected List preloadSearchResult(SearchResult result, List prefetched) throws EntityException
42      {
43          Object entity = result;
44  
45          if (entityFactory != null)
46              entity = entityFactory.getEntity(result.getAttributes(), result.getName());
47  
48          prefetched.add(entity);
49          return prefetched;
50      }
51  
52      public void setEntityFactory(LDAPEntityFactory<Entity> entityFactory)
53      {
54          this.entityFactory = entityFactory;
55      }
56  
57      private class MockFilter implements Filter
58      {
59          public String encode()
60          {
61              return null;
62          }
63  
64          public StringBuffer encode(StringBuffer stringBuffer)
65          {
66              return null;
67          }
68      }
69  }