ACS-3615 Allow actions in rules without any params.

This commit is contained in:
Tom Page
2022-10-07 16:22:39 +01:00
parent 7ac48f8a99
commit ad96f85251
3 changed files with 23 additions and 3 deletions

View File

@@ -173,8 +173,10 @@ public class RulesTestsUtils
final RestActionBodyExecTemplateModel checkOutAction = createCustomActionModel("check-out", checkOutParams); final RestActionBodyExecTemplateModel checkOutAction = createCustomActionModel("check-out", checkOutParams);
final Map<String, Serializable> scriptParams = Map.of("script-ref", "dummy-script-node-id"); final Map<String, Serializable> scriptParams = Map.of("script-ref", "dummy-script-node-id");
final RestActionBodyExecTemplateModel scriptAction = createCustomActionModel("script", scriptParams); 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(); final RestRuleModel ruleModel = createRuleModelWithDefaultValues();
ruleModel.setActions(Arrays.asList(copyAction, checkOutAction, scriptAction)); ruleModel.setActions(Arrays.asList(copyAction, checkOutAction, scriptAction, counterAction));
return ruleModel; return ruleModel;
} }

View File

@@ -26,11 +26,14 @@
package org.alfresco.rest.api.impl.mapper.rules; 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.access.ActionAccessRestriction.ACTION_CONTEXT_PARAM_NAME;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collection; import java.util.Collection;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.alfresco.repo.action.ActionImpl; import org.alfresco.repo.action.ActionImpl;
@@ -100,8 +103,9 @@ public class RestRuleActionModelMapper implements RestModelMapper<Action, org.al
private org.alfresco.service.cmr.action.Action toServiceAction(Action action) private org.alfresco.service.cmr.action.Action toServiceAction(Action action)
{ {
final Map<String, Serializable> params = Optional.ofNullable(action.getParams()).orElse(emptyMap());
final Map<String, Serializable> convertedParams = final Map<String, Serializable> convertedParams =
parameterConverter.getConvertedParams(action.getParams(), action.getActionDefinitionId()); parameterConverter.getConvertedParams(params, action.getActionDefinitionId());
return new ActionImpl(null, GUID.generate(), action.getActionDefinitionId(), convertedParams); return new ActionImpl(null, GUID.generate(), action.getActionDefinitionId(), convertedParams);
} }
} }

View File

@@ -26,6 +26,8 @@
package org.alfresco.rest.api.impl.mapper.rules; 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.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_PROPERTY;
import static org.alfresco.repo.action.executer.SetPropertyValueActionExecuter.PARAM_VALUE; import static org.alfresco.repo.action.executer.SetPropertyValueActionExecuter.PARAM_VALUE;
@@ -89,7 +91,7 @@ public class RestRuleActionModelMapperTest
public void testToRestModelWithNullValues() public void testToRestModelWithNullValues()
{ {
final org.alfresco.service.cmr.action.Action actionServiceModel = new ActionImpl(null, null, null); 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 //when
final Action actualAction = objectUnderTest.toRestModel(actionServiceModel); final Action actualAction = objectUnderTest.toRestModel(actionServiceModel);
@@ -122,4 +124,16 @@ public class RestRuleActionModelMapperTest
assertThat(serviceModelAction).isNull(); assertThat(serviceModelAction).isNull();
} }
@Test
public void testToServiceModelWithNullParams()
{
final Action action = Action.builder().actionDefinitionId(ACTION_DEFINITION_NAME).params(null).create();
final List<Action> 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();
}
} }