From fbd1b96a35946b7ebf36afea3f3a2a50dcbf193f Mon Sep 17 00:00:00 2001 From: "Endi S. Dewata" Date: Mon, 17 Mar 2014 11:40:42 -0400 Subject: Added search filter for TPS resources. The TPS resources have been modified to accept a basic search filter for find operation. For resources based on LDAP database, the filtering is done using LDAP filter. For other resources, the filtering is done using string comparison. For now the filter is will only be matched against entry IDs. In the future the filter may be expanded to support other entry attributes. The CLI has been updated accordingly. The total attribute in DataCollection was changed from Integer into int because the total size of the collection cannot be null. The PKIException constructors have been consolidated into a single actual constructor. The other constructors have been modified to call the actual constructor with some default values. Ticket #847 --- .../cms/src/org/dogtagpki/server/rest/GroupService.java | 3 ++- .../src/org/dogtagpki/server/rest/SelfTestService.java | 14 +++++++++++--- .../cms/src/org/dogtagpki/server/rest/UserService.java | 16 ++++++++++++++-- 3 files changed, 27 insertions(+), 6 deletions(-) (limited to 'base/server/cms/src') 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 2c3c0011a..0f3d9b0db 100644 --- a/base/server/cms/src/org/dogtagpki/server/rest/GroupService.java +++ b/base/server/cms/src/org/dogtagpki/server/rest/GroupService.java @@ -139,7 +139,8 @@ public class GroupService extends PKIService implements GroupResource { return createOKResponse(response); } catch (Exception e) { - throw new PKIException(getUserMessage("CMS_INTERNAL_ERROR", headers)); + CMS.debug(e); + throw new PKIException(e); } } diff --git a/base/server/cms/src/org/dogtagpki/server/rest/SelfTestService.java b/base/server/cms/src/org/dogtagpki/server/rest/SelfTestService.java index 652875fe8..62993f68e 100644 --- a/base/server/cms/src/org/dogtagpki/server/rest/SelfTestService.java +++ b/base/server/cms/src/org/dogtagpki/server/rest/SelfTestService.java @@ -21,7 +21,8 @@ package org.dogtagpki.server.rest; import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URLEncoder; -import java.util.Arrays; +import java.util.ArrayList; +import java.util.Collection; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; @@ -94,7 +95,7 @@ public class SelfTestService extends PKIService implements SelfTestResource { } @Override - public Response findSelfTests(Integer start, Integer size) { + public Response findSelfTests(String filter, Integer start, Integer size) { CMS.debug("SelfTestService.findSelfTests()"); @@ -103,9 +104,16 @@ public class SelfTestService extends PKIService implements SelfTestResource { size = size == null ? DEFAULT_SIZE : size; ISelfTestSubsystem subsystem = (ISelfTestSubsystem)CMS.getSubsystem(ISelfTestSubsystem.ID); - Iterator entries = Arrays.asList(subsystem.listSelfTestsEnabledOnDemand()).iterator(); + + // filter self tests + Collection results = new ArrayList(); + for (String name : subsystem.listSelfTestsEnabledOnDemand()) { + if (filter != null && !name.contains(filter)) continue; + results.add(name); + } SelfTestCollection response = new SelfTestCollection(); + Iterator entries = results.iterator(); int i = 0; // skip to the start of the page diff --git a/base/server/cms/src/org/dogtagpki/server/rest/UserService.java b/base/server/cms/src/org/dogtagpki/server/rest/UserService.java index ac1f0617f..839b29291 100644 --- a/base/server/cms/src/org/dogtagpki/server/rest/UserService.java +++ b/base/server/cms/src/org/dogtagpki/server/rest/UserService.java @@ -133,6 +133,7 @@ public class UserService extends PKIService implements UserResource { */ @Override public Response findUsers(String filter, Integer start, Integer size) { + UserCollection response = new UserCollection(); try { filter = StringUtils.isEmpty(filter) ? "*" : "*"+LDAPUtil.escapeFilter(filter)+"*"; start = start == null ? 0 : start; @@ -140,7 +141,6 @@ public class UserService extends PKIService implements UserResource { Enumeration users = userGroupManager.findUsers(filter); - UserCollection response = new UserCollection(); int i = 0; // skip to the start of the page @@ -168,8 +168,20 @@ public class UserService extends PKIService implements UserResource { return createOKResponse(response); + } catch (EUsrGrpException e) { + // Workaround for ticket #914. + // If no users found, return empty result. + if (CMS.getUserMessage("CMS_USRGRP_USER_NOT_FOUND").equals(e.getMessage())) { + CMS.debug("UserService.findUsers(): " + e.getMessage()); + return createOKResponse(response); + } + + CMS.debug(e); + throw new PKIException(e); + } catch (Exception e) { - throw new PKIException(getUserMessage("CMS_INTERNAL_ERROR", headers)); + CMS.debug(e); + throw new PKIException(e); } } -- cgit