diff options
Diffstat (limited to 'base/ca/src')
-rw-r--r-- | base/ca/src/org/dogtagpki/server/ca/rest/CertService.java | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/base/ca/src/org/dogtagpki/server/ca/rest/CertService.java b/base/ca/src/org/dogtagpki/server/ca/rest/CertService.java index e43909bbb..440f756de 100644 --- a/base/ca/src/org/dogtagpki/server/ca/rest/CertService.java +++ b/base/ca/src/org/dogtagpki/server/ca/rest/CertService.java @@ -70,6 +70,7 @@ import com.netscape.certsrv.cert.CertSearchRequest; import com.netscape.certsrv.dbs.EDBRecordNotFoundException; import com.netscape.certsrv.dbs.certdb.CertId; import com.netscape.certsrv.dbs.certdb.ICertRecord; +import com.netscape.certsrv.dbs.certdb.ICertRecordList; import com.netscape.certsrv.dbs.certdb.ICertificateRepository; import com.netscape.certsrv.logging.AuditFormat; import com.netscape.certsrv.logging.ILogger; @@ -442,47 +443,44 @@ public class CertService extends PKIService implements CertResource { @Override public Response searchCerts(CertSearchRequest data, Integer start, Integer size) { + CMS.debug("CertService.searchCerts()"); + if (data == null) { - throw new BadRequestException("Search request is null."); + throw new BadRequestException("Search request is null"); } start = start == null ? 0 : start; size = size == null ? DEFAULT_SIZE : size; String filter = createSearchFilter(data); - CMS.debug("CertService.searchCerts: filter: " + filter); + CMS.debug("CertService: filter: " + filter); CertDataInfos infos = new CertDataInfos(); try { - Enumeration<ICertRecord> e = repo.findCertRecords(filter); - if (e == null) { - throw new EBaseException("search results are null"); - } + ICertRecordList list = repo.findCertRecordsInList(filter, null, "serialno", size); + int total = list.getSize(); + CMS.debug("CertService: total: " + total); - int i = 0; + // return entries in the requested page + for (int i = start; i < start + size && i < total; i++) { + ICertRecord record = list.getCertRecord(i); - // skip to the start of the page - for (; i < start && e.hasMoreElements(); i++) - e.nextElement(); + if (record == null) { + CMS.debug("CertService: Certificate record not found"); + throw new PKIException("Certificate record not found"); + } - // return entries up to the page size - for (; i < start + size && e.hasMoreElements(); i++) { - ICertRecord user = e.nextElement(); - infos.addEntry(createCertDataInfo(user)); + infos.addEntry(createCertDataInfo(record)); } - // count the total entries - for (; e.hasMoreElements(); i++) - e.nextElement(); - - infos.setTotal(i); + infos.setTotal(total); 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) { + if (start + size < total) { URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", start + size).build(); infos.addLink(new Link("next", uri)); } |