diff options
Diffstat (limited to 'base/server/cmscore/src/com/netscape/cmscore/selftests/SelfTestService.java')
-rw-r--r-- | base/server/cmscore/src/com/netscape/cmscore/selftests/SelfTestService.java | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/base/server/cmscore/src/com/netscape/cmscore/selftests/SelfTestService.java b/base/server/cmscore/src/com/netscape/cmscore/selftests/SelfTestService.java index da7708e49..4fcddb7e4 100644 --- a/base/server/cmscore/src/com/netscape/cmscore/selftests/SelfTestService.java +++ b/base/server/cmscore/src/com/netscape/cmscore/selftests/SelfTestService.java @@ -21,6 +21,8 @@ package com.netscape.cmscore.selftests; import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URLEncoder; +import java.util.Arrays; +import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.core.Context; @@ -96,14 +98,38 @@ public class SelfTestService extends PKIService implements SelfTestResource { CMS.debug("SelfTestService.findSelfTests()"); try { - SelfTestCollection response = new SelfTestCollection(); + start = start == null ? 0 : start; + size = size == null ? DEFAULT_SIZE : size; ISelfTestSubsystem subsystem = (ISelfTestSubsystem)CMS.getSubsystem(ISelfTestSubsystem.ID); - for (String name : subsystem.listSelfTestsEnabledOnDemand()) { - SelfTestData data = createSelfTestData(subsystem, name); + Iterator<String> entries = Arrays.asList(subsystem.listSelfTestsEnabledOnDemand()).iterator(); + + SelfTestCollection response = new SelfTestCollection(); + int i = 0; + + // skip to the start of the page + for ( ; i<start && entries.hasNext(); i++) entries.next(); + + // return entries up to the page size + for ( ; i<start+size && entries.hasNext(); i++) { + SelfTestData data = createSelfTestData(subsystem, entries.next()); response.addEntry(data); } + // count the total entries + for ( ; entries.hasNext(); i++) entries.next(); + response.setTotal(i); + + if (start > 0) { + URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", Math.max(start-size, 0)).build(); + response.addLink(new Link("prev", uri)); + } + + if (start+size < i) { + URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", start+size).build(); + response.addLink(new Link("next", uri)); + } + return response; } catch (Exception e) { |