summaryrefslogtreecommitdiffstats
path: root/base/server/cmscore
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2013-11-08 12:36:33 -0500
committerEndi S. Dewata <edewata@redhat.com>2013-11-08 19:28:52 -0500
commitf74c644b09dd1e18289c4a543a211c3ff8cd02d9 (patch)
tree296fe00e281225bd825c41b319c8435a4219855d /base/server/cmscore
parent9d3090378bf4e5152df2c02d48ca8f9beeac2057 (diff)
downloadpki-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.java32
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) {