diff options
author | Endi S. Dewata <edewata@redhat.com> | 2013-11-08 12:36:33 -0500 |
---|---|---|
committer | Endi S. Dewata <edewata@redhat.com> | 2013-11-08 19:28:52 -0500 |
commit | f74c644b09dd1e18289c4a543a211c3ff8cd02d9 (patch) | |
tree | 296fe00e281225bd825c41b319c8435a4219855d /base/server/cmscore | |
parent | 9d3090378bf4e5152df2c02d48ca8f9beeac2057 (diff) | |
download | pki-f74c644b09dd1e18289c4a543a211c3ff8cd02d9.tar.gz pki-f74c644b09dd1e18289c4a543a211c3ff8cd02d9.tar.xz pki-f74c644b09dd1e18289c4a543a211c3ff8cd02d9.zip |
Fixed find commands.
Some of the REST services have been fixed to consistently return a
DataCollection which contains the total count, the requested subset
of results, and links to request other subsets of the results.
The TPSConnectorFindCLI has been split into separate find and show
commands.
Ticket #749
Diffstat (limited to 'base/server/cmscore')
-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) { |