From ad96f8525151799e8fcc528752a11506f3dd9324 Mon Sep 17 00:00:00 2001 From: Tom Page Date: Fri, 7 Oct 2022 16:22:39 +0100 Subject: [PATCH] ACS-3615 Allow actions in rules without any params. --- .../org/alfresco/rest/rules/RulesTestsUtils.java | 4 +++- .../mapper/rules/RestRuleActionModelMapper.java | 6 +++++- .../rules/RestRuleActionModelMapperTest.java | 16 +++++++++++++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/RulesTestsUtils.java b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/RulesTestsUtils.java index 3e7d558c53..9e86d1cfc9 100644 --- a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/RulesTestsUtils.java +++ b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/RulesTestsUtils.java @@ -173,8 +173,10 @@ public class RulesTestsUtils final RestActionBodyExecTemplateModel checkOutAction = createCustomActionModel("check-out", checkOutParams); final Map scriptParams = Map.of("script-ref", "dummy-script-node-id"); final RestActionBodyExecTemplateModel scriptAction = createCustomActionModel("script", scriptParams); + // The counter action takes no parameters, so check we can omit the "params" entry. + final RestActionBodyExecTemplateModel counterAction = createCustomActionModel("counter", null); final RestRuleModel ruleModel = createRuleModelWithDefaultValues(); - ruleModel.setActions(Arrays.asList(copyAction, checkOutAction, scriptAction)); + ruleModel.setActions(Arrays.asList(copyAction, checkOutAction, scriptAction, counterAction)); return ruleModel; } diff --git a/remote-api/src/main/java/org/alfresco/rest/api/impl/mapper/rules/RestRuleActionModelMapper.java b/remote-api/src/main/java/org/alfresco/rest/api/impl/mapper/rules/RestRuleActionModelMapper.java index 404a4528b1..9946f80a28 100644 --- a/remote-api/src/main/java/org/alfresco/rest/api/impl/mapper/rules/RestRuleActionModelMapper.java +++ b/remote-api/src/main/java/org/alfresco/rest/api/impl/mapper/rules/RestRuleActionModelMapper.java @@ -26,11 +26,14 @@ package org.alfresco.rest.api.impl.mapper.rules; +import static java.util.Collections.emptyMap; + import static org.alfresco.repo.action.access.ActionAccessRestriction.ACTION_CONTEXT_PARAM_NAME; import java.io.Serializable; import java.util.Collection; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; import org.alfresco.repo.action.ActionImpl; @@ -100,8 +103,9 @@ public class RestRuleActionModelMapper implements RestModelMapper params = Optional.ofNullable(action.getParams()).orElse(emptyMap()); final Map convertedParams = - parameterConverter.getConvertedParams(action.getParams(), action.getActionDefinitionId()); + parameterConverter.getConvertedParams(params, action.getActionDefinitionId()); return new ActionImpl(null, GUID.generate(), action.getActionDefinitionId(), convertedParams); } } diff --git a/remote-api/src/test/java/org/alfresco/rest/api/impl/mapper/rules/RestRuleActionModelMapperTest.java b/remote-api/src/test/java/org/alfresco/rest/api/impl/mapper/rules/RestRuleActionModelMapperTest.java index 46d1bf4aa3..abf23874a0 100644 --- a/remote-api/src/test/java/org/alfresco/rest/api/impl/mapper/rules/RestRuleActionModelMapperTest.java +++ b/remote-api/src/test/java/org/alfresco/rest/api/impl/mapper/rules/RestRuleActionModelMapperTest.java @@ -26,6 +26,8 @@ package org.alfresco.rest.api.impl.mapper.rules; +import static java.util.Collections.emptyMap; + import static org.alfresco.repo.action.access.ActionAccessRestriction.ACTION_CONTEXT_PARAM_NAME; import static org.alfresco.repo.action.executer.SetPropertyValueActionExecuter.PARAM_PROPERTY; import static org.alfresco.repo.action.executer.SetPropertyValueActionExecuter.PARAM_VALUE; @@ -89,7 +91,7 @@ public class RestRuleActionModelMapperTest public void testToRestModelWithNullValues() { final org.alfresco.service.cmr.action.Action actionServiceModel = new ActionImpl(null, null, null); - final Action expectedAction = Action.builder().params(Collections.emptyMap()).create(); + final Action expectedAction = Action.builder().params(emptyMap()).create(); //when final Action actualAction = objectUnderTest.toRestModel(actionServiceModel); @@ -122,4 +124,16 @@ public class RestRuleActionModelMapperTest assertThat(serviceModelAction).isNull(); } + @Test + public void testToServiceModelWithNullParams() + { + final Action action = Action.builder().actionDefinitionId(ACTION_DEFINITION_NAME).params(null).create(); + final List actions = List.of(action); + + //when + final org.alfresco.service.cmr.action.Action serviceModelAction = objectUnderTest.toServiceModel(actions); + then(parameterConverter).should().getConvertedParams(emptyMap(), ACTION_DEFINITION_NAME); + then(parameterConverter).shouldHaveNoMoreInteractions(); + assertThat(serviceModelAction).isNotNull(); + } }