summaryrefslogtreecommitdiffstats
path: root/base/server/cms
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2014-05-04 18:22:37 -0400
committerEndi S. Dewata <edewata@redhat.com>2014-05-08 22:59:20 -0400
commit47724f3c91e124f1856e4b4f3bbd0068d6ca6ff6 (patch)
treecaa8e7fc6ca3e9ffb9341d3679c15803bb5cf685 /base/server/cms
parent45c80df9cfcc26d251be2eb50d787dcecd40f388 (diff)
Added filter to GroupService.findGroupMembers().
The GroupService.findGroupMembers() has been modified to accept an additional parameter to filter the group members to be returned. The CLI has been modified accordingly. Ticket #920
Diffstat (limited to 'base/server/cms')
-rw-r--r--base/server/cms/src/com/netscape/cms/servlet/admin/GroupMemberProcessor.java28
-rw-r--r--base/server/cms/src/org/dogtagpki/server/rest/GroupService.java6
2 files changed, 20 insertions, 14 deletions
diff --git a/base/server/cms/src/com/netscape/cms/servlet/admin/GroupMemberProcessor.java b/base/server/cms/src/com/netscape/cms/servlet/admin/GroupMemberProcessor.java
index 78f602acd..24b242174 100644
--- a/base/server/cms/src/com/netscape/cms/servlet/admin/GroupMemberProcessor.java
+++ b/base/server/cms/src/com/netscape/cms/servlet/admin/GroupMemberProcessor.java
@@ -19,7 +19,9 @@ package com.netscape.cms.servlet.admin;
import java.net.URI;
import java.net.URLEncoder;
+import java.util.ArrayList;
import java.util.Enumeration;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -94,7 +96,8 @@ public class GroupMemberProcessor extends Processor {
return groupMemberData;
}
- public GroupMemberCollection findGroupMembers(String groupID, Integer start, Integer size) {
+ public GroupMemberCollection findGroupMembers(String groupID, String filter, Integer start, Integer size) {
+
try {
start = start == null ? 0 : start;
size = size == null ? DEFAULT_SIZE : size;
@@ -113,28 +116,29 @@ public class GroupMemberProcessor extends Processor {
GroupMemberCollection response = new GroupMemberCollection();
Enumeration<String> members = group.getMemberNames();
+ List<String> results = new ArrayList<String>();
- int i = 0;
-
- // skip to the start of the page
- for ( ; i<start && members.hasMoreElements(); i++) members.nextElement();
-
- // return entries up to the page size
- for ( ; i<start+size && members.hasMoreElements(); i++) {
+ // filter members
+ while (members.hasMoreElements()) {
String memberID = members.nextElement();
+ if (filter == null || memberID.contains(filter)) results.add(memberID);
+ }
+
+ // return entries in the page
+ for (int i = start; i < start+size && i < results.size(); i++) {
+ String memberID = results.get(i);
response.addEntry(createGroupMemberData(groupID, memberID));
}
- // count the total entries
- for ( ; members.hasMoreElements(); i++) members.nextElement();
- response.setTotal(i);
+ // return the total entries
+ response.setTotal(results.size());
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) {
+ if (start+size < results.size()) {
URI uri = uriInfo.getRequestUriBuilder().replaceQueryParam("start", start+size).build();
response.addLink(new Link("next", uri));
}
diff --git a/base/server/cms/src/org/dogtagpki/server/rest/GroupService.java b/base/server/cms/src/org/dogtagpki/server/rest/GroupService.java
index fdfbbd966..3e98d3940 100644
--- a/base/server/cms/src/org/dogtagpki/server/rest/GroupService.java
+++ b/base/server/cms/src/org/dogtagpki/server/rest/GroupService.java
@@ -336,14 +336,16 @@ public class GroupService extends PKIService implements GroupResource {
}
@Override
- public Response findGroupMembers(String groupID, Integer start, Integer size) {
+ public Response findGroupMembers(String groupID, String filter, Integer start, Integer size) {
+
+ CMS.debug("GroupService.findGroupMembers(" + groupID + ", " + filter + ")");
if (groupID == null) throw new BadRequestException("Group ID is null.");
try {
GroupMemberProcessor processor = new GroupMemberProcessor(getLocale(headers));
processor.setUriInfo(uriInfo);
- return createOKResponse(processor.findGroupMembers(groupID, start, size));
+ return createOKResponse(processor.findGroupMembers(groupID, filter, start, size));
} catch (PKIException e) {
throw e;