summaryrefslogtreecommitdiffstats
path: root/base/server/cms/src/com/netscape/cms/servlet/profile/ProfileService.java
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2013-11-13 12:00:06 -0500
committerEndi S. Dewata <edewata@redhat.com>2013-11-14 16:54:39 -0500
commit4d1ec71c790e467ecae184df01abf825f94d1dc3 (patch)
tree8f821411a4ec5d275b4ee0702e438cafc3e92c60 /base/server/cms/src/com/netscape/cms/servlet/profile/ProfileService.java
parent17a52b686bd81cda1bce76b454b3127d6575de62 (diff)
downloadpki-4d1ec71c790e467ecae184df01abf825f94d1dc3.tar.gz
pki-4d1ec71c790e467ecae184df01abf825f94d1dc3.tar.xz
pki-4d1ec71c790e467ecae184df01abf825f94d1dc3.zip
Added paging on all find commands.
The find commands in some REST services have been modified to support paging to be consistent with others. The other find commands have been cleaned up as well.
Diffstat (limited to 'base/server/cms/src/com/netscape/cms/servlet/profile/ProfileService.java')
-rw-r--r--base/server/cms/src/com/netscape/cms/servlet/profile/ProfileService.java54
1 files changed, 38 insertions, 16 deletions
diff --git a/base/server/cms/src/com/netscape/cms/servlet/profile/ProfileService.java b/base/server/cms/src/com/netscape/cms/servlet/profile/ProfileService.java
index 1ee810769..02840451c 100644
--- a/base/server/cms/src/com/netscape/cms/servlet/profile/ProfileService.java
+++ b/base/server/cms/src/com/netscape/cms/servlet/profile/ProfileService.java
@@ -96,6 +96,8 @@ public class ProfileService extends PKIService implements ProfileResource {
@Context
private HttpServletRequest servletRequest;
+ public final static int DEFAULT_SIZE = 20;
+
private IProfileSubsystem ps = (IProfileSubsystem) CMS.getSubsystem(IProfileSubsystem.ID);
private IPluginRegistry registry = (IPluginRegistry) CMS.getSubsystem(CMS.SUBSYSTEM_REGISTRY);
private IConfigStore cs = CMS.getConfigStore().getSubStore("profile");
@@ -106,8 +108,11 @@ public class ProfileService extends PKIService implements ProfileResource {
"LOGGING_SIGNED_AUDIT_CONFIG_CERT_PROFILE_3";
@Override
- public ProfileDataInfos listProfiles() {
- List<ProfileDataInfo> list = new ArrayList<ProfileDataInfo>();
+ public ProfileDataInfos listProfiles(Integer start, Integer size) {
+
+ start = start == null ? 0 : start;
+ size = size == null ? DEFAULT_SIZE : size;
+
ProfileDataInfos infos = new ProfileDataInfos();
boolean visibleOnly = true;
@@ -122,24 +127,41 @@ public class ProfileService extends PKIService implements ProfileResource {
principal.hasRole("Certificate Manager Administrators"))) {
visibleOnly = false;
}
- Enumeration<String> profileIds = ps.getProfileIds();
- if (profileIds != null) {
- while (profileIds.hasMoreElements()) {
- String id = profileIds.nextElement();
- ProfileDataInfo info = null;
- try {
- info = createProfileDataInfo(id, visibleOnly, uriInfo, getLocale(headers));
- } catch (EBaseException e) {
- continue;
- }
- if (info != null) {
- list.add(info);
- }
+ Enumeration<String> e = ps.getProfileIds();
+ if (e == null) return infos;
+
+ // store non-null results in a list
+ List<ProfileDataInfo> results = new ArrayList<ProfileDataInfo>();
+ while (e.hasMoreElements()) {
+ try {
+ String id = e.nextElement();
+ ProfileDataInfo info = createProfileDataInfo(id, visibleOnly, uriInfo, getLocale(headers));
+ if (info == null) continue;
+ results.add(info);
+ } catch (EBaseException ex) {
+ continue;
}
}
- infos.setProfileInfos(list);
+ int total = results.size();
+ infos.setTotal(total);
+
+ // return entries in the requested page
+ for (int i = start; i < start + size && i < total; i++) {
+ infos.addEntry(results.get(i));
+ }
+
+ if (start > 0) {
+ URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", Math.max(start-size, 0)).build();
+ infos.addLink(new Link("prev", uri));
+ }
+
+ if (start + size < total) {
+ URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", start+size).build();
+ infos.addLink(new Link("next", uri));
+ }
+
return infos;
}