diff --git a/spring-ldap/src/main/java/org/springframework/ldap/control/PagedResultsRequestControl.java b/spring-ldap/src/main/java/org/springframework/ldap/control/PagedResultsRequestControl.java index 193dc2c9..15d1853d 100644 --- a/spring-ldap/src/main/java/org/springframework/ldap/control/PagedResultsRequestControl.java +++ b/spring-ldap/src/main/java/org/springframework/ldap/control/PagedResultsRequestControl.java @@ -116,6 +116,9 @@ public class PagedResultsRequestControl extends LdapContext ldapContext = (LdapContext) ctx; Control[] responseControls = ldapContext.getResponseControls(); + if (responseControls == null) { + responseControls = new Control[0]; + } // Go through response controls and get info, regardless of class for (int i = 0; i < responseControls.length; i++) { diff --git a/spring-ldap/src/test/java/org/springframework/ldap/control/PagedResultsRequestControlTest.java b/spring-ldap/src/test/java/org/springframework/ldap/control/PagedResultsRequestControlTest.java index 647f00f8..0b72e5a1 100644 --- a/spring-ldap/src/test/java/org/springframework/ldap/control/PagedResultsRequestControlTest.java +++ b/spring-ldap/src/test/java/org/springframework/ldap/control/PagedResultsRequestControlTest.java @@ -137,6 +137,23 @@ public class PagedResultsRequestControlTest extends TestCase { assertEquals(0, tested.getResultSize()); } + public void testPostProcess_NoResponseControls() throws Exception { + ldapContextControl.expectAndDefaultReturn(ldapContextMock + .getResponseControls(), null); + + PagedResultsRequestControl tested = new PagedResultsRequestControl(20); + + replay(); + + tested.postProcess(ldapContextMock); + + verify(); + + assertNull(tested.getCookie()); + assertEquals(20, tested.getPageSize()); + assertEquals(0, tested.getResultSize()); + } + public void testBerDecoding() throws Exception { byte[] value = new byte[1]; value[0] = 8;