Naveen
Naveen

Reputation: 11

LDAP not returning results over 1500

We are using LDAP with Spring, and the below code is yielding results < 1500 easily, but for more than 1500, its throwing an exception.

IncrementalAttributesMapper incrementalAttributeMapper = 
           new DefaultIncrementalAttributesMapper(new String[]{"member"});
IncrementalAttributesMapper incrementalAttributeMapper = new 
            DefaultIncrementalAttributesMapper(new String[]{"member"});   
while (incrementalAttributeMapper.hasMore()) { 
    ldapTemplate.search(query().where("CN").is(unit),incrementalAttributeMapper);    
    List values = incrementalAttributeMapper.getValues("member");
    System.out.println("inside getUserDetailsForOuc tester if memberValues "+    
            memberValues);      
}

Error:

java.lang.IllegalStateException: Ranges cannot be compared, range-initial not the same: Range=1500-* vs Range=0-1499

at org.springframework.ldap.core.support.RangeOption.compareTo(RangeOption.java:131)

at org.springframework.ldap.core.support.DefaultIncrementalAttributesMapper$DefaultIncrementalAttributeState.calculateNextRange(DefaultIncrementalAttributesMapper.java:378)

at org.springframework.ldap.core.support.DefaultIncrementalAttributesMapper.mapFromAttributes(DefaultIncrementalAttributesMapper.java:188)

at org.springframework.ldap.core.support.DefaultIncrementalAttributesMapper.mapFromAttributes(DefaultIncrementalAttributesMapper.java:73)

at org.springframework.ldap.core.AttributesMapperCallbackHandler.getObjectFromNameClassPair(AttributesMapperCallbackHandler.java:62)

at org.springframework.ldap.core.CollectingNameClassPairCallbackHandler.handleNameClassPair(CollectingNameClassPairCallbackHandler.java:50)

Upvotes: 1

Views: 592

Answers (1)

TacheDeChoco
TacheDeChoco

Reputation: 3913

You probably have to use paging:

PagedResultsDirContextProcessor processor = new PagedResultsDirContextProcessor(20, cookie);
EqualsFilter equalsFilter = new EqualsFilter("objectClass","inetOrgPerson");                
List<String> lastNames = ldapTemplate.search("", equalsFilter.encode(), searchControls, new LastNameMapper(), processor);

Upvotes: 1

Related Questions