From ed210cd3362c7f337e7db237856195196acaffcd Mon Sep 17 00:00:00 2001 From: Tom Page Date: Fri, 12 Jun 2015 10:09:21 +0000 Subject: [PATCH] RM-2217 Filtering with special characters - fix backslash. +review RM git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@106011 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../classification/UserQueryParams.java | 20 ++++++++++++------- .../UserSecurityClearanceGetUnitTest.java | 5 ++--- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/UserQueryParams.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/UserQueryParams.java index 0396d0f8d4..3ff226eee5 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/UserQueryParams.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/UserQueryParams.java @@ -23,14 +23,14 @@ import static org.alfresco.model.ContentModel.PROP_FIRSTNAME; import static org.alfresco.model.ContentModel.PROP_LASTNAME; import static org.alfresco.model.ContentModel.PROP_USERNAME; -import org.alfresco.service.namespace.QName; -import org.alfresco.util.Pair; -import org.alfresco.util.ParameterCheck; - import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.alfresco.service.namespace.QName; +import org.alfresco.util.Pair; +import org.alfresco.util.ParameterCheck; + /** * Configurable options to be used when querying for users by {@link SecurityClearance}. * @@ -39,7 +39,7 @@ import java.util.List; */ public final class UserQueryParams { - // Required parameter. No default value. This is the username fragment. + /** Required parameter. No default value. This is the username fragment. */ private final String searchTerm; // These configurable parameters have default values. @@ -48,10 +48,16 @@ public final class UserQueryParams private int skipCount = 0; private int maxItems = 10; + /** + * Create a new object for searching for people. + * + * @param searchTerm The unescaped string to search for in the people service. + */ public UserQueryParams(final String searchTerm) { - // A 'null' value here is allowed. - this.searchTerm = searchTerm; + ParameterCheck.mandatory("searchTerm", searchTerm); + // Escape backslashes before using in the query. (The person service does not do this for us) + this.searchTerm = searchTerm.replace("\\", "\\\\"); } /** Sets the skip count required for the query. */ diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearanceGetUnitTest.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearanceGetUnitTest.java index 769412e3e2..b91d34fe5a 100644 --- a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearanceGetUnitTest.java +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/script/classification/UserSecurityClearanceGetUnitTest.java @@ -25,7 +25,6 @@ import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doReturn; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import com.fasterxml.jackson.databind.JsonNode; @@ -119,7 +118,7 @@ public class UserSecurityClearanceGetUnitTest extends BaseWebScriptUnitTest } }).when(mockedSecurityClearanceService).getUsersSecurityClearance(any(UserQueryParams.class)); - JSONObject response = executeJSONWebScript(new HashMap()); + JSONObject response = executeJSONWebScript(buildParameters("nameFilter", "userName")); assertNotNull(response); JSONObject data = response.getJSONObject("data"); @@ -188,7 +187,7 @@ public class UserSecurityClearanceGetUnitTest extends BaseWebScriptUnitTest } }).when(mockedSecurityClearanceService).getUsersSecurityClearance(any(UserQueryParams.class)); - JSONObject response = executeJSONWebScript(buildParameters("pageSize", Integer.toString(pageSize), "startIndex", Integer.toString(startIndex))); + JSONObject response = executeJSONWebScript(buildParameters("nameFilter", "userName", "pageSize", Integer.toString(pageSize), "startIndex", Integer.toString(startIndex))); assertNotNull(response); ObjectMapper mapper = new ObjectMapper();