diff --git a/source/java/org/alfresco/repo/security/person/PersonServiceImpl.java b/source/java/org/alfresco/repo/security/person/PersonServiceImpl.java index 10bb5844f7..2859aad541 100644 --- a/source/java/org/alfresco/repo/security/person/PersonServiceImpl.java +++ b/source/java/org/alfresco/repo/security/person/PersonServiceImpl.java @@ -1195,7 +1195,20 @@ public class PersonServiceImpl extends TransactionListenerAdapter implements Per filterProps = new ArrayList(stringPropFilters.size()); for (Pair filterProp : stringPropFilters) { - filterProps.add(new FilterPropString(filterProp.getFirst(), filterProp.getSecond(), (filterIgnoreCase ? FilterTypeString.STARTSWITH_IGNORECASE : FilterTypeString.STARTSWITH))); + String filterStr = filterProp.getSecond(); + if("*".equals(filterStr)) + { + // The wildcard means no filtering is needed on this property + continue; + } + else if(filterStr.endsWith("*")) + { + // The trailing * is implicit + filterStr = filterStr.substring(0, filterStr.length()-1); + } + + // Turn this into a canned query filter + filterProps.add(new FilterPropString(filterProp.getFirst(), filterStr, (filterIgnoreCase ? FilterTypeString.STARTSWITH_IGNORECASE : FilterTypeString.STARTSWITH))); } } diff --git a/source/java/org/alfresco/repo/security/person/PersonTest.java b/source/java/org/alfresco/repo/security/person/PersonTest.java index 4102554dae..ea937e4085 100644 --- a/source/java/org/alfresco/repo/security/person/PersonTest.java +++ b/source/java/org/alfresco/repo/security/person/PersonTest.java @@ -598,6 +598,17 @@ public class PersonTest extends TestCase filters.clear(); filters.add(new Pair(ContentModel.PROP_USERNAME, "a")); assertEquals(1, personService.getPeople(filters, true, null, pr).getPage().size()); // includes "admin" + + // a* is the same as a + filters.clear(); + filters.add(new Pair(ContentModel.PROP_USERNAME, "a*")); + assertEquals(1, personService.getPeople(filters, true, null, pr).getPage().size()); // includes "admin" + + // * means everyone + filters.clear(); + filters.add(new Pair(ContentModel.PROP_USERNAME, "*")); + assertEquals(5, getPeopleCount()); + assertEquals(5, personService.getPeople(filters, true, null, pr).getPage().size()); } public void testPeopleSortingPaging()