summaryrefslogtreecommitdiffstats
path: root/base/common/src/com/netscape/cms/servlet/cert/CertResourceService.java
diff options
context:
space:
mode:
Diffstat (limited to 'base/common/src/com/netscape/cms/servlet/cert/CertResourceService.java')
-rw-r--r--base/common/src/com/netscape/cms/servlet/cert/CertResourceService.java43
1 files changed, 37 insertions, 6 deletions
diff --git a/base/common/src/com/netscape/cms/servlet/cert/CertResourceService.java b/base/common/src/com/netscape/cms/servlet/cert/CertResourceService.java
index 395907b53..6a3f0d79a 100644
--- a/base/common/src/com/netscape/cms/servlet/cert/CertResourceService.java
+++ b/base/common/src/com/netscape/cms/servlet/cert/CertResourceService.java
@@ -79,6 +79,7 @@ public class CertResourceService extends CMSResourceService implements CertResou
ICertificateAuthority authority;
ICertificateRepository repo;
+ public final static int DEFAULT_SIZE = 20;
public CertResourceService() {
authority = (ICertificateAuthority) CMS.getSubsystem("ca");
@@ -330,18 +331,48 @@ public class CertResourceService extends CMSResourceService implements CertResou
}
@Override
- public CertDataInfos searchCerts(CertSearchData data, int maxResults, int maxTime) {
+ public CertDataInfos searchCerts(CertSearchData data, Integer start, Integer size) {
if (data == null) {
throw new WebApplicationException(Response.Status.BAD_REQUEST);
}
+ start = start == null ? 0 : start;
+ size = size == null ? DEFAULT_SIZE : size;
String filter = createSearchFilter(data);
- CertDataInfos infos;
+ CertDataInfos infos = new CertDataInfos();
+
+ Enumeration<ICertRecord> e = null;
try {
- infos = getCertList(filter, maxResults, maxTime);
- } catch (EBaseException e) {
- e.printStackTrace();
- throw new CMSException("Error listing certs in CertsResourceService.listCerts!");
+
+ e = repo.findCertRecords(filter);
+
+ int i = 0;
+
+ // skip to the start of the page
+ for (; i < start && e.hasMoreElements(); i++)
+ e.nextElement();
+
+ // return entries up to the page size
+ for (; i < start + size && e.hasMoreElements(); i++) {
+ ICertRecord user = e.nextElement();
+ infos.addCertData(createCertDataInfo(user));
+ }
+
+ // count the total entries
+ for (; e.hasMoreElements(); i++)
+ e.nextElement();
+
+ if (start > 0) {
+ URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", Math.max(start - size, 0)).build();
+ infos.addLink(new Link("prev", uri));
+ }
+
+ if (start + size < i) {
+ URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", start + size).build();
+ infos.addLink(new Link("next", uri));
+ }
+ } catch (EBaseException e1) {
+ throw new CMSException("Error listing certs in CertsResourceService.listCerts!" + e.toString());
}
return infos;