From 021911fad0f8098e4f71348aa3a3fdaa7ddb399f Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Fri, 11 Mar 2016 17:30:06 +0000 Subject: [PATCH] Merged 5.1.N (5.1.1) to HEAD (5.1) 118424 cturlica: Merged 5.0.N (5.0.4) to 5.1.N (5.1.1) 118394 amukha: Merged 5.0.1 (5.0.1.14) to 5.0.N (5.0.4) 117907 abalmus: MNT-14631 : REST Processes and Tasks API for parameters/variables allowed MATCHES operator, operator is not case-insensitive - Fix on Alfresco side, test and updated pom.xml to use new Activiti jar git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@123593 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rest/workflow/api/impl/ProcessesImpl.java | 10 +++++- .../workflow/api/impl/ProcessesImplTest.java | 31 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/source/java/org/alfresco/rest/workflow/api/impl/ProcessesImpl.java b/source/java/org/alfresco/rest/workflow/api/impl/ProcessesImpl.java index ced247172b..aac4fe717f 100644 --- a/source/java/org/alfresco/rest/workflow/api/impl/ProcessesImpl.java +++ b/source/java/org/alfresco/rest/workflow/api/impl/ProcessesImpl.java @@ -377,7 +377,15 @@ public class ProcessesImpl extends WorkflowRestImpl implements Processes { throw new InvalidArgumentException("the matches operator can only be used with a String value for property " + queryVariableHolder.getPropertyName()); } - query.variableValueLike(queryVariableHolder.getPropertyName(), (String) queryVariableHolder.getPropertyValue()); + + if (((String) queryVariableHolder.getPropertyValue()).startsWith("(?i)")) + { + query.variableValueLikeIgnoreCase(queryVariableHolder.getPropertyName(), ((String) queryVariableHolder.getPropertyValue()).substring("(?i)".length()).toLowerCase()); + } + else + { + query.variableValueLike(queryVariableHolder.getPropertyName(), (String) queryVariableHolder.getPropertyValue()); + } } else if (queryVariableHolder.getOperator() == WhereClauseParser.NEGATION) { diff --git a/source/test-java/org/alfresco/rest/test/workflow/api/impl/ProcessesImplTest.java b/source/test-java/org/alfresco/rest/test/workflow/api/impl/ProcessesImplTest.java index 22c31a4049..cef4044d9b 100644 --- a/source/test-java/org/alfresco/rest/test/workflow/api/impl/ProcessesImplTest.java +++ b/source/test-java/org/alfresco/rest/test/workflow/api/impl/ProcessesImplTest.java @@ -79,6 +79,8 @@ public class ProcessesImplTest extends TestCase private static final String QUERY_STATUS_ACTIVE = "(status=active)"; + + private static final String QUERY_WORKFLOWDESCRIPTION_MATCHES = "(variables/bpm_workflowDescription MATCHES ('%s'))"; private ApplicationContext applicationContext = ApplicationContextHelper.getApplicationContext(CONFIG_LOCATIONS); @@ -122,6 +124,7 @@ public class ProcessesImplTest extends TestCase { Map parameters = new HashMap(); parameters.put(WorkflowModel.ASSOC_ASSIGNEE, (Serializable) Collections.singletonList(assignee)); + parameters.put(WorkflowModel.PROP_WORKFLOW_DESCRIPTION, "Test workflow api calls review and approve"); // MNT-14631 //parameters.put(WorkflowModel.ASSOC_PACKAGE, workflowService.createPackage(null)); workflowService.startWorkflow(neededDefinition.getId(), parameters); @@ -182,6 +185,34 @@ public class ProcessesImplTest extends TestCase assertFalse(actualProcesses.hasMoreItems()); } + @Test + public void testGetProcessesMatchesIgnoreCase() + { + CollectionWithPagingInfo result = queryMatchesProcesses("(?i)test workflow api calls review and approve"); + + assertNotNull(result); + assertNotNull(result.getCollection()); + assertTrue(result.getTotalItems() > 0 ); + } + + @Test + public void testGetProcessesMatchesIgnoreCaseNoResults() + { + CollectionWithPagingInfo result = queryMatchesProcesses("test workflow api calls review and approve"); + + assertNotNull(result); + assertNotNull(result.getCollection()); + assertTrue(result.getTotalItems() == 0 ); + } + + private CollectionWithPagingInfo queryMatchesProcesses(String matchesString) + { + Query query = ResourceWebScriptHelper.getWhereClause(String.format(QUERY_WORKFLOWDESCRIPTION_MATCHES, matchesString)); + Parameters parameters = Params.valueOf(new RecognizedParams(null, Paging.valueOf(0, ACTIVE_WORKFLOWS_INITIAL_AMOUNT), null, null, null, query, null), null, null); + + return processes.getProcesses(parameters); + } + private CollectionWithPagingInfo queryActiveProcessesAndAssertResult(int skipCount, int maxItems) { Query query = ResourceWebScriptHelper.getWhereClause(QUERY_STATUS_ACTIVE);